/*
				█▄                        ▄▄███
				███▄                    ▄██████
				█████▄                 ▄███████
				███████▄    ▄▄▄▄▄    ▄█████████
				█████████▄▀▀░░░░░▀▀▀▄██████████
				▀█████▀░░░░░░░░░░░░░░▀████████
				 ▀██▀ LUCK -> CONSISTENT ████▌
				  ██░░░░░░░░░░░░░░░░░░░░░░███
				  █▀░░░░░░░░░░░░░░░░░░░░░░░██
				  █░░▄████▄░░░░░▄████▄░░░░░░█
				  █░░█▐▄█▐█░░░░░█▐▄█▐█░░░░░░█▄
				  █░░██▄▄██░░░░░██▄▄██░░░░░░░█
				 ▐▌░░░░░░░░░░░░░░░░░░░░░░░░░░▐▌
				 ▐▌░░░░░░░▀▄▄▄▄▀░░░░░░░░░░░░░▐▌
				 ▐▌░░░░░░░░░▐▌░░░░░░░░░░░░░░░▐▌
				 ▐▌░░░░░░░▄▀▀▀▀▄░░░░░░░░░░░░░▐▌
				  █▄░░░░░▀░░░░░░▀░░░░░░░░░░░░█▌
				  ▐█▀▄▄░░░░░░░░░░░░░░░░░░▄▄▀▀░█
				 ▐▌░░░░▀▀▄▄░░░░░░░░▄▄▄▄▀▀░░░░░█
				 █░░░░░░░░░▀▀▄▄▄▀▀▀░░░░░░░░░░░█
				▐▌░░░░░░░░░░░░░░░░░░░░░░░░░░░░█
				▐▌░░░░░░░░░░░░░░░░░░░░░░░░░░░░█
*/
#include<bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
using namespace std;
// using namespace __gnu_pbds;;
////////////////////////////////////////////////////////////////////////////////////////
#define db1(x)                cout<<#x<<": "<<x<<"\n"
#define db2(x, y)             cout<<#x<<": "<<x<<" | "<<#y<<": "<<y<<"\n"
#define db3(x, y, z)          cout<<#x<<":" <<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<"\n"
#define db4(a, b, c, d)       cout<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<"\n"
////////////////////////////////////////////////////////////////////////////////////////
#define int long long
#define ld long double
#define ull unsigned long long
#define lb lower_bound
#define ub upper_bound
#define ins insert
#define setbits(x)      __builtin_popcountll(x)
#define fbo(a) find_by_order(a) //will give a-th largest element
#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a
#define str string
#define fo(i,a,n) for(int i=a;i<n;i++)
#define eb emplace_back
#define ff first
#define ss second
#define pb push_back
#define ret return
#define con continue
#define nl '\n'
#define sz(x) ((int)(x).size())
//////////////////////////////////////////////////////////////////////////////////////
typedef map<int, int> mll;
typedef vector<int> vll;
typedef pair<int, int> pll;
typedef vector<pll> vpll;
// typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>ordered_set;
// typedef map < int , tree < int , null_type , less < int > , rb_tree_tag , tree_order_statistics_node_update  > > ordered_map;
///////////////////////////////////////////////////////////////////////////////////////
#define all(a) a.begin(),a.end()
#define allr(a) a.rbegin(),a.rend()
#define mem(a,x) memset(a,x,sizeof(a))
#define sp(x,y)         fixed<<setprecision(y)<<x
#define bhaag_basanti ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
///////////////////////////////////////////////////////////////////////////////////////
const int N = 1e6 + 5	;
const int mod = 1e9 + 7;
const int inf = 1e18 + 1 ;
///////////////////////////////////////////////////////////////////////////////////////


// return continue break
//pbds,fenwick,seg,blah blah is a ds like vector and all only...so map<int,ordered_set> vector<ordered_set> and all v aapne se use kr skte ho....
//like map<int,fenwick>mp...blah blah

void solve()
{
	//[pattern,binary search, seg, fenwick, prefix / suffix,stack, queue, blah and blah]
	//test case analyse kro and then start kro solve krna...khud se ustadi nhiiiiii
	//aage socho
	int n;
	cin >> n;
	int a[n + 1], cnt = 0;
	int mx = -inf;
	unordered_map<int, int> m;
	fo(i, 1, n + 1) {
		cin >> a[i];
		m[a[i]] = i;
		mx = max(mx, a[i]);
	}
	mx = n + n - 1;
	for (int i = 3; i <= mx; i++) {
		for (int j = 1; j * j < i; j++) {
			if (i % j == 0) {
				int ele1 = j;
				int ele2 = i / j;
				if (m[ele1] && m[ele2] && m[ele1] + m[ele2] == i) {
					cnt++;
				}
			}
		}
	}
	cout << cnt << nl;
}

int32_t main()
{
	bhaag_basanti

	int t = 1;
	cin >> t;
	// cin.ignore(); must be there when using getline(cin, s)
	while (t--)
	{
		solve();

	}
}