#include <iostream>
#include <vector>
int main() {
static int UPPER_LIMIT = 10001;
static int K = 32;
int frequencies[UPPER_LIMIT] = {0}; // O(U)
int n;
std::cin >> n;
for (int i = 0; i < n; i++) { // O(n)
int x;
std::cin >> x;
frequencies[x] += 1;
}
for (int i = 1; i < UPPER_LIMIT; i++) { // O(U)
frequencies[i] += frequencies[i-1];
}
int count = 0;
for (int i = 1; i < UPPER_LIMIT; i++) { // O(U)
int low_idx = std::max(i-32, 0);
int number_of_elements_with_value_i = frequencies[i] - frequencies[i-1];
if (number_of_elements_with_value_i == 0) continue;
int number_of_elements_with_value_K_close_to_i =
(frequencies[i] - frequencies[low_idx]) - 1; // to avoid adding number
// with itself.
std::cout << "i: " << i << " number_of_elements_with_value_i: " << number_of_elements_with_value_i << " number_of_elements_with_value_K_close_to_i: " << number_of_elements_with_value_K_close_to_i << std::endl;
count += number_of_elements_with_value_i * number_of_elements_with_value_K_close_to_i;
}
std::cout << count;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgogCmludCBtYWluKCkgewoJc3RhdGljIGludCBVUFBFUl9MSU1JVCA9IDEwMDAxOwoJc3RhdGljIGludCBLID0gMzI7CglpbnQgZnJlcXVlbmNpZXNbVVBQRVJfTElNSVRdID0gezB9OyAvLyBPKFUpCglpbnQgbjsKCXN0ZDo6Y2luID4+IG47Cglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgeyAvLyBPKG4pCgkgaW50IHg7Cgkgc3RkOjpjaW4gPj4geDsKCSBmcmVxdWVuY2llc1t4XSArPSAxOwoJfQoJZm9yIChpbnQgaSA9IDE7IGkgPCBVUFBFUl9MSU1JVDsgaSsrKSB7IC8vIE8oVSkKCQlmcmVxdWVuY2llc1tpXSArPSBmcmVxdWVuY2llc1tpLTFdOwoJfQoJaW50IGNvdW50ID0gMDsKCWZvciAoaW50IGkgPSAxOyBpIDwgVVBQRVJfTElNSVQ7IGkrKykgeyAvLyBPKFUpCgkgIGludCBsb3dfaWR4ID0gc3RkOjptYXgoaS0zMiwgMCk7CgkgIGludCBudW1iZXJfb2ZfZWxlbWVudHNfd2l0aF92YWx1ZV9pID0gZnJlcXVlbmNpZXNbaV0gLSBmcmVxdWVuY2llc1tpLTFdOwoJICBpZiAobnVtYmVyX29mX2VsZW1lbnRzX3dpdGhfdmFsdWVfaSA9PSAwKSBjb250aW51ZTsKCSAgaW50IG51bWJlcl9vZl9lbGVtZW50c193aXRoX3ZhbHVlX0tfY2xvc2VfdG9faSA9CgkgICAgICAoZnJlcXVlbmNpZXNbaV0gLSBmcmVxdWVuY2llc1tsb3dfaWR4XSkgLSAxOyAvLyB0byBhdm9pZCBhZGRpbmcgbnVtYmVyCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIGl0c2VsZi4gCiAgICAgIHN0ZDo6Y291dCA8PCAiaTogIiA8PCBpIDw8ICIgbnVtYmVyX29mX2VsZW1lbnRzX3dpdGhfdmFsdWVfaTogIiA8PCBudW1iZXJfb2ZfZWxlbWVudHNfd2l0aF92YWx1ZV9pIDw8ICIgbnVtYmVyX29mX2VsZW1lbnRzX3dpdGhfdmFsdWVfS19jbG9zZV90b19pOiAiIDw8IG51bWJlcl9vZl9lbGVtZW50c193aXRoX3ZhbHVlX0tfY2xvc2VfdG9faSA8PCBzdGQ6OmVuZGw7CgkgIGNvdW50ICs9IG51bWJlcl9vZl9lbGVtZW50c193aXRoX3ZhbHVlX2kgKiBudW1iZXJfb2ZfZWxlbWVudHNfd2l0aF92YWx1ZV9LX2Nsb3NlX3RvX2k7Cgl9CglzdGQ6OmNvdXQgPDwgY291bnQ7CglyZXR1cm4gMDsKfQ==