A. Новая функция
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

У Поликарпа есть последовательность, состоящая из n целых неотрицательных чисел: a1, a2, ..., an.

Определим функцию f(l, r) (l, r — целые, 1 ≤ l ≤ r ≤ n) для последовательности a как операцию побитового ИЛИ всех элементов последовательности с индексами от l до r. Формально: f(l, r) = al | al + 1 | ...  | ar.

Поликарп выписал на листок бумаги значения функции f(l, r) для всех l, r (l, r — целые, 1 ≤ l ≤ r ≤ n). Теперь он хочет узнать, сколько различных чисел у него получилось.

Помогите Поликарпу, посчитайте количество различных значений функции f(l, r) для заданной последовательности a.

Выражение x | y обозначает применение операции побитового ИЛИ к числам x и y. Данная операция есть во всех современных языках программирования, например, в языке C++ и Java она обозначается «|», в Pascal — «or».

Входные данные

В первой строке записано целое число n (1 ≤ n ≤ 105) — количество элементов последовательности a. Во второй строке записаны n целых чисел через пробел a1, a2, ..., an (0 ≤ ai ≤ 106) — элементы последовательности a.

Выходные данные

Выведите единственное целое число — количество различных значений функции f(l, r) для заданной последовательности a.

Пожалуйста, не используйте спецификатор %lld для чтения или записи 64-х битовых чисел на С++. Рекомендуется использовать потоки cin, cout или спецификатор %I64d.

Примеры
Входные данные
3
1 2 0
Выходные данные
4
Входные данные
10
1 2 3 4 5 6 1 2 9 10
Выходные данные
11
Примечание

В первом тестовом примере на листочке Поликарпа будет записано 6 чисел: f(1, 1) = 1, f(1, 2) = 3, f(1, 3) = 3, f(2, 2) = 2, f(2, 3) = 2, f(3, 3) = 0. Среди этих чисел ровно 4 различных числа: 0, 1, 2, 3.