#include <bits/stdc++.h>
using namespace std;
int countDiscountEligiblePairs(const vector<int>& price) {
// Step 1: Precompute powers of 3 up to 2 * 1e9
unordered_set<long long> powersOfThree;
long long p = 1;
while (p <= 2e9) {
powersOfThree.insert(p);
p *= 3;
}
// Step 2: Count pairs using hashmap
unordered_map<int, int> freq;
int count = 0;
for (int p : price) {
for (long long power : powersOfThree) {
long long complement = power - p;
if (complement >= 1 && complement <= 1e9 && freq.count(complement)) {
count += freq[complement];
}
}
freq[p]++;
}
return count;
}
int main() {
// your code goes here
int n;
cin >> n;
vector<int> prices(n);
for (int i=0;i<n;i++) cin >> prices[i];
cout << countDiscountEligiblePairs(prices) << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGNvdW50RGlzY291bnRFbGlnaWJsZVBhaXJzKGNvbnN0IHZlY3RvcjxpbnQ+JiBwcmljZSkgewogICAgLy8gU3RlcCAxOiBQcmVjb21wdXRlIHBvd2VycyBvZiAzIHVwIHRvIDIgKiAxZTkKICAgIHVub3JkZXJlZF9zZXQ8bG9uZyBsb25nPiBwb3dlcnNPZlRocmVlOwogICAgbG9uZyBsb25nIHAgPSAxOwogICAgd2hpbGUgKHAgPD0gMmU5KSB7CiAgICAgICAgcG93ZXJzT2ZUaHJlZS5pbnNlcnQocCk7CiAgICAgICAgcCAqPSAzOwogICAgfQoKICAgIC8vIFN0ZXAgMjogQ291bnQgcGFpcnMgdXNpbmcgaGFzaG1hcAogICAgdW5vcmRlcmVkX21hcDxpbnQsIGludD4gZnJlcTsKICAgIGludCBjb3VudCA9IDA7CgogICAgZm9yIChpbnQgcCA6IHByaWNlKSB7CiAgICAgICAgZm9yIChsb25nIGxvbmcgcG93ZXIgOiBwb3dlcnNPZlRocmVlKSB7CiAgICAgICAgICAgIGxvbmcgbG9uZyBjb21wbGVtZW50ID0gcG93ZXIgLSBwOwogICAgICAgICAgICBpZiAoY29tcGxlbWVudCA+PSAxICYmIGNvbXBsZW1lbnQgPD0gMWU5ICYmIGZyZXEuY291bnQoY29tcGxlbWVudCkpIHsKICAgICAgICAgICAgICAgIGNvdW50ICs9IGZyZXFbY29tcGxlbWVudF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZnJlcVtwXSsrOwogICAgfQoKICAgIHJldHVybiBjb3VudDsKfQoKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaW50IG47CgljaW4gPj4gbjsKCXZlY3RvcjxpbnQ+IHByaWNlcyhuKTsKCWZvciAoaW50IGk9MDtpPG47aSsrKSBjaW4gPj4gcHJpY2VzW2ldOwoJY291dCA8PCBjb3VudERpc2NvdW50RWxpZ2libGVQYWlycyhwcmljZXMpIDw8ICdcbic7CglyZXR1cm4gMDsKfQ==