B. Powers of Two
time limit per test

3 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given n integers a1, a2, …, an. Find the number of pairs of indexes i, j (i < j) that ai + aj is a power of 2 (i. e. some integer xexists so that ai + aj = 2x).

Input

The first line contains the single positive integer n (1 ≤ n ≤ 105) — the number of integers.

The second line contains n positive integers a1, a2, …, an (1 ≤ ai ≤ 109).

Output

Print the number of pairs of indexes i, j (i < j) that ai + aj is a power of 2.

Examples
input
4
7 3 2 1

output
2

input
3
1 1 1

output
3

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<map>
#include<queue>
#include<algorithm>
using namespace std;
int  main()
{
	__int64 a[100005],sum=0;
	int b[33];
	 b[1]=2;
	for(int i=2;i<=30;i++)
	   b[i]=b[i-1]*2;
	map<int,int>p;
	int n,i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%I64d",&a[i]);
		for(j=1;j<=30;j++)
		{
			if(b[j]-a[i]<0 || p.count(b[j]-a[i])==0)
				continue;
			sum+=p[b[j]-a[i]];
		}
		p[a[i]]++;
	}
	printf("%I64d/n",sum);
}