N = gets.to_i
as = gets.strip.split(/ /).collect{|n| n.to_i}

max = as.max

table = {}

N.times{|n|
	a = as[n]
	if t = table[a]
		t << n
	else
		table[a] = [n]
	end
}

#p table

$counts = {}
$counts_rev = {}
$pairs = {}
N.times{|i|
	a = as[i]
	sum = 2
	count = 0
	pair_table = {}
	while sum <= a
		sum *= 2
	end
	while true
		if sum > a
			diff = sum - a
			if diff > max
				break
			end
			if list = table[diff]
				if (diff == a ? list.length - 1 : list.length) > 0
#					pair_table[diff] = {}
					list.each{|n|
						if n != i
							count += 1
							pair_table[n] = true
						end
					}
				end
			end
		end
		sum *= 2
	end
	if c = $counts[count]
		c[i] = true
	else
		$counts[count] = { i => true }
	end
	$pairs[i] = pair_table
	$counts_rev[i] = count
}

#p $counts
#p $pairs

max = $counts.keys.max

def remove_item(n)
#p ["y", $counts_rev, n]
	count = $counts_rev[n]
	count_table = $counts[count]
	count_table.delete(n)
	if count_table.length == 0
		$counts.delete(count)
	end
	$counts_rev.delete(n)
	min = N
	$pairs[n].keys.each{|n2|
		count = $counts_rev[n2]
		table = $counts[count]
#p [$counts, $counts_rev, n2, count]
#p table
		table.delete(n2)
		if table.length == 0
			$counts.delete(count)
		end
		count -= 1
		$counts_rev[n2] = count
		if table = $counts[count]
			table[n2] = true
		else
			$counts[count] = { n2 => true }
		end
		if count < min
			min = count
		end
		$pairs[n2].delete(n)
	}
	min
end

count_pairs = 0
count = 1
while true
	if (table = $counts[count]) && table.length > 0
#		p ["x", $counts, count, table]
		n1 = table.keys[0]
#		a1 = as[n1]
		n2 = $pairs[n1].keys[0]
#		a2 = as[n2]
		count_pairs += 1
		
		min1 = remove_item(n1)
		min2 = remove_item(n2)
		
		if table.keys.length == 0
			table.delete(count)
		end
		
		count = [count, min1, min2].min
		if count < 1
			count = 1
		end
		
		next
	end
	count += 1
	if count > max
		break
	end
end

puts count_pairs
