#include #include #include #include using namespace std; long gcd(long a,long b){return b?gcd(b,a%b):a;} pairnorm(long a,long b) { long g=gcd(a,b); if(g!=1)a/=g,b/=g; return make_pair(a,b); } set >M[1<<7]; vector >T[1<<7]; int N; long A[7]; main() { cin>>N; for(int i=0;i>A[i]; M[1<1) { for(int x=i;;x=x-1&i) { int t=i&~x; for(int y=t;;y=y-1&t) { for(const pair&X:M[x]) { for(const pair&Y:M[y]) { M[i].insert(norm(X.first*Y.second+Y.first*X.second,X.second*Y.second)); M[i].insert(norm(X.first*Y.second-Y.first*X.second,X.second*Y.second)); M[i].insert(norm(-X.first*Y.second+Y.first*X.second,X.second*Y.second)); M[i].insert(norm(X.first*Y.first,X.second*Y.second)); M[i].insert(norm(X.first*Y.second,X.second*Y.first)); M[i].insert(norm(Y.first*X.second,Y.second*X.first)); } } if(y==0)break; } if(x==0)break; } } T[i]=vector >(M[i].begin(),M[i].end()); } for(int i=1;i+1<1<