#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <set>
#include <algorithm>
#include <vector>
using namespace std;
int N, M;
int tn[2097152] = {0};
int res[1048576][20];
inline int input()
{
scanf("%d", &M);
int idx = 1;
tn[idx]++;
for(; M > 0; M /= 2) {
idx *= 2;
if(M & 1) {
idx++;
}
tn[idx]++;
}
return 0;
}
int run(int k, int bit_move, int idx)
{
int bit_flag = 1 << bit_move;
if(res[k][bit_move] >= 0) {
return res[k][bit_move];
}
//printf("run %d\n", k);
int ori = k;
int bit = bit_flag;
int bit_bit = bit_move;
int result = 0;
for(; k >= bit; bit *= 2, bit_bit++) {
//printf("ori %d k %d idx %d\n", ori, k, idx);
idx *= 2;
if(k & 1) {
++idx;
if(tn[idx] == 0) {
res[ori][bit_move] = result;
return result;
}
} else {
//printf("ori %d plus [%d]\n", ori, (ori | bit));
if(bit >= bit_flag) {
result += run((ori | bit), bit_bit, idx + 1);
}
if(tn[idx] == 0) {
res[ori][bit_move] = result;
return result;
}
}
}
result += tn[idx];
res[ori][bit_move] = result;
return result;
}
// int re(int n)
// {
// unsigned int k = n;
// k = ~k;
// n = 0;
// for(int i = 0; i < 20; ++i, k /= 2) {
// n *= 2;
// n += (k & 1);
// }
// return n;
// }
int main()
{
memset(res, -1, sizeof(res));
memset(tn, 0, sizeof(tn));
scanf("%d", &N);
for(int i = 0; i < N; ++i) {
input();
}
//run(1048576, 0);
//printf("%d\n", run(4, 0));
// for(int i = 0; i < 16; ++i) {
// printf("%d\n", re(i));
// }
for(int i = 0; i < 1048576; ++i) {
run(i, 0, 1);
}
for(int i = 0; i < 16; ++i) {
//for(int i = 0; i < 1000001; ++i) {
printf("%d\n", res[i][0]);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBOLCBNOwoKaW50IHRuWzIwOTcxNTJdID0gezB9OwppbnQgcmVzWzEwNDg1NzZdWzIwXTsKCmlubGluZSBpbnQgaW5wdXQoKQp7CiAgICBzY2FuZigiJWQiLCAmTSk7CiAgICBpbnQgaWR4ID0gMTsKICAgIHRuW2lkeF0rKzsKICAgIGZvcig7IE0gPiAwOyBNIC89IDIpIHsKICAgICAgICBpZHggKj0gMjsKICAgICAgICBpZihNICYgMSkgewogICAgICAgICAgICBpZHgrKzsKICAgICAgICB9CiAgICAgICAgdG5baWR4XSsrOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCmludCBydW4oaW50IGssIGludCBiaXRfbW92ZSwgaW50IGlkeCkKewogICAgaW50IGJpdF9mbGFnID0gMSA8PCBiaXRfbW92ZTsKICAgIGlmKHJlc1trXVtiaXRfbW92ZV0gPj0gMCkgewogICAgICAgIHJldHVybiByZXNba11bYml0X21vdmVdOwogICAgfQogICAgLy9wcmludGYoInJ1biAlZFxuIiwgayk7CiAgICBpbnQgb3JpID0gazsKICAgIGludCBiaXQgPSBiaXRfZmxhZzsKICAgIGludCBiaXRfYml0ID0gYml0X21vdmU7CiAgICBpbnQgcmVzdWx0ID0gMDsKICAgIGZvcig7IGsgPj0gYml0OyBiaXQgKj0gMiwgYml0X2JpdCsrKSB7CiAgICAgICAgLy9wcmludGYoIm9yaSAlZCBrICVkIGlkeCAlZFxuIiwgb3JpLCBrLCBpZHgpOwogICAgICAgIGlkeCAqPSAyOwogICAgICAgIGlmKGsgJiAxKSB7CiAgICAgICAgICAgICsraWR4OwogICAgICAgICAgICBpZih0bltpZHhdID09IDApIHsKICAgICAgICAgICAgICAgIHJlc1tvcmldW2JpdF9tb3ZlXSA9IHJlc3VsdDsKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvL3ByaW50Zigib3JpICVkIHBsdXMgWyVkXVxuIiwgb3JpLCAob3JpIHwgYml0KSk7CiAgICAgICAgICAgIGlmKGJpdCA+PSBiaXRfZmxhZykgewogICAgICAgICAgICAgICAgcmVzdWx0ICs9IHJ1bigob3JpIHwgYml0KSwgYml0X2JpdCwgaWR4ICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYodG5baWR4XSA9PSAwKSB7CiAgICAgICAgICAgICAgICByZXNbb3JpXVtiaXRfbW92ZV0gPSByZXN1bHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmVzdWx0ICs9IHRuW2lkeF07CiAgICByZXNbb3JpXVtiaXRfbW92ZV0gPSByZXN1bHQ7CiAgICByZXR1cm4gcmVzdWx0Owp9CgovLyBpbnQgcmUoaW50IG4pCi8vIHsKLy8gICAgIHVuc2lnbmVkIGludCBrID0gbjsKLy8gICAgIGsgPSB+azsKLy8gICAgIG4gPSAwOwovLyAgICAgZm9yKGludCBpID0gMDsgaSA8IDIwOyArK2ksIGsgLz0gMikgewovLyAgICAgICAgIG4gKj0gMjsKLy8gICAgICAgICBuICs9IChrICYgMSk7Ci8vICAgICB9Ci8vICAgICByZXR1cm4gbjsKLy8gfQoKaW50IG1haW4oKQp7CiAgICBtZW1zZXQocmVzLCAtMSwgc2l6ZW9mKHJlcykpOwogICAgbWVtc2V0KHRuLCAwLCBzaXplb2YodG4pKTsKCiAgICBzY2FuZigiJWQiLCAmTik7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgTjsgKytpKSB7CiAgICAgICAgaW5wdXQoKTsKICAgIH0KCiAgICAvL3J1bigxMDQ4NTc2LCAwKTsKICAgIC8vcHJpbnRmKCIlZFxuIiwgcnVuKDQsIDApKTsKICAgIAogICAgLy8gZm9yKGludCBpID0gMDsgaSA8IDE2OyArK2kpIHsKICAgIC8vICAgICBwcmludGYoIiVkXG4iLCByZShpKSk7CiAgICAvLyB9CiAgICAKICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDQ4NTc2OyArK2kpIHsKICAgICAgICBydW4oaSwgMCwgMSk7CiAgICB9CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTY7ICsraSkgewogICAgLy9mb3IoaW50IGkgPSAwOyBpIDwgMTAwMDAwMTsgKytpKSB7CiAgICAgICAgcHJpbnRmKCIlZFxuIiwgcmVzW2ldWzBdKTsKICAgIH0KICAgIHJldHVybiAwOwp9CgoK