#include <iostream>
using namespace std;
#include<map>
#include<cmath>
#include<algorithm>
int gcd (int a,int b) {
	if(b==0)
		return 1;
	if(a%b==0)
	return b;
	else 
	return gcd(b,a%b);
}
int main()
{
   int n;
   cin>>n;
   map < pair < int,int > , int > m;
   vector < pair < int,int > > v;
   for(int i=0;i<n;i++) {
   	v.push_back(make_pair(0,0));
   	int a,b,c;
   	cin>>a>>b>>c;
   	if(a<0&&b<0) {
   		a=-1*a;
   		b=-1*b;
   	} else if(b<0) {
   		a=-1*a;
   		b=-1*b;
   	}
   	int x = gcd(abs(a),abs(b));
   	a=a/x;
   	b=b/x;
   	if(b==0)
   	a=1;
   	if(a==0)
   	b=1;
   	if(m.find(make_pair(a,b))==m.end()){
   		m[make_pair(a,b)]=1;
   	} else {
   		m[make_pair(a,b)]++;
   	}
   	v[i].first=a;
   	v[i].second=b;
   }
   int q;
   cin>>q;
   while(q--){
   	int x;
   	cin>>x;
   	x--;
   	int a=v[x].first;
   	int b=v[x].second;
   	if(a>0) {
   		b=-1*b;
   	} else {
   		a=-1*a;
   	}
   	if(m.find(make_pair(b,a))==m.end()){
   		cout<<0<<endl;
   	} else {
   		cout<<m[make_pair(b,a)]<<endl;
   	}
   }
}
Language: C++