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 x exists 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

Note

In the first example the following pairs of indexes include in answer: (1, 4) and (2, 4).

In the second example all pairs of indexes (i, j) (where i < j) include in answer.
import java.io.*;
import java.util.*;
public class Dfs {
  static int bs(int arr[] ,int k,int l,int h){
        int mid=(l+h)/2;
       
      if(l>h){
         
          return l;}
          
      
        if(arr[mid]<k)
           return bs(arr,k,mid+1,h); 
        else if(arr[mid]>k)
           return bs(arr,k,l,mid-1);
        else {
            
            
          return  mid+1;
            
            
        }
     
  }
    public static void main(String[] args)throws Exception {
    
    reader in = new reader(System.in);
    int n=in.nextInt();
    long arr[]= new long[n];
    long pow2[]= new long[30];
   long tow=2;
    for(int i= 0;i<30;i++){
      pow2[i]=tow;  
      tow*=2;
    }
   LinkedHashMap <Long,Long> map = new LinkedHashMap<Long,Long>();
   for(int i =0; i<n;i++){
       arr[i]=in.nextInt();
       if(map.get(arr[i])==null)
           map.put(arr[i], (long)1);
       else{
           map.put(arr[i], map.get(arr[i])+1);
       }      
   }
   long count= 0;boolean t= true;
   for(int i= 0;i<n;i++){t=true;
       for(int j=0;j<30;j++){
           if(arr[i]<pow2[j]){
                  if(t){
                 map.put(arr[i],map.get(arr[i])-1);t=false;}
             if(map.get(pow2[j]-arr[i])!=null){  
                 
                 count+=(map.get(pow2[j]-arr[i])); }
            
           }
       }
       
   }
        System.out.println(count);
     
    }
    
    static class reader{
      BufferedReader read ;
      StringTokenizer tok;
      public reader(InputStream stream){
          read= new BufferedReader(new InputStreamReader(stream));
          tok=null;
          
      }
       String next()throws Exception{
          
          while(tok==null||!tok.hasMoreElements()){
              tok= new StringTokenizer(read.readLine());
              
          }
          return tok.nextToken();     
      }
       int nextInt()throws Exception{
           return Integer.parseInt(next());
           
       }     
    }
   
}
