Polycarpus has a sequence, consisting of $*n*$ non-negative integers: $*a*_{1}, *a*_{2}, ..., *a*_{*n*}$.
Let's define function $*f*(*l*, *r*)$ ($*l*, *r*$ are integer, $1 ≤ *l* ≤ *r* ≤ *n*$) for sequence $*a*$ as an operation of bitwise OR of all the sequence elements with indexes from $*l*$ to $*r*$. Formally: $*f*(*l*, *r*) = *a*_{*l*} | *a*_{*l* + 1} | ... | *a*_{*r*}$.
Polycarpus took a piece of paper and wrote out the values of function $*f*(*l*, *r*)$ for all $*l*, *r*$ ($*l*, *r*$ are integer, $1 ≤ *l* ≤ *r* ≤ *n*$). Now he wants to know, how many distinct values he's got in the end.
Help Polycarpus, count the number of distinct values of function $*f*(*l*, *r*)$ for the given sequence $*a*$.
Expression $*x* | *y*$ means applying the operation of bitwise OR to numbers $*x*$ and $*y*$. This operation exists in all modern programming languages, for example, in language C++ and Java it is marked as "|", in Pascal — as "or".
Input
The first line contains integer $*n*$ $(1 ≤ *n* ≤ 10^{5})$ — the number of elements of sequence $*a*$. The second line contains $*n*$ space-separated integers $*a*_{1}, *a*_{2}, ..., *a*_{*n*}$ $(0 ≤ *a*_{*i*} ≤ 10^{6})$ — the elements of sequence $*a*$.
Output
Print a single integer — the number of distinct values of function $*f*(*l*, *r*)$ for the given sequence $*a*$.
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use cin, cout streams or the %I64d specifier.
Note
In the first test case Polycarpus will have 6 numbers written on the paper: $*f*(1, 1) = 1$, $*f*(1, 2) = 3$, $*f*(1, 3) = 3$, $*f*(2, 2) = 2$, $*f*(2, 3) = 2$, $*f*(3, 3) = 0$. There are exactly $4$ distinct numbers among them: $0, 1, 2, 3$.
样例
3
1 2 0
4
10
1 2 3 4 5 6 1 2 9 10
11
题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。