#include<bits/stdc++.h>
#define ll long long
#define ld long double
using namespace std;
ld eps=1e-10,pi=3.141592653589793238;
ld niz[400005];
ll MOD=1e9+7;
ll N,x,y,res=0;
bool uzimam[25];
bool vecejed(ld a,ld b){
   if(abs(a-b)<=eps)
      return true;
   if(a>b)
      return true;
   return false;
}
bool vece(ld a,ld b){
   return (a-eps)>b;
}
ld orientacija(int x,int y){
   ld a=atan2(y,x);
   if(y<0)
      a=2*pi+a;
   return a;
}
void rek(int gde){
  // cout<<gde<<endl;
   if(gde==N+1){
      vector<double> V;
      V.clear();
      for(int i=1;i<=N;i++){
         if(!uzimam[i])
            continue;
         V.push_back(niz[i]);
      }
      if(V.size()==0)
         return;
      V.push_back(V[0]+2*pi);
      for(int i=1;i<V.size();i++)
         if(vece(V[i]-V[i-1],pi))
            return;
      res++;
      return;
   }
   uzimam[gde]=0;
   rek(gde+1);
   uzimam[gde]=1;
   rek(gde+1);
   return;
}
int main(){
   cout<<setprecision(13)<<fixed;
   cin>>N;
   for(int i=1;i<=N;i++){
      cin>>x>>y;
      niz[i]=orientacija(x,y);
   }
   sort(niz+1,niz+1+N);
   rek(1);

   cout<<res<<"\n";
   return 0;
}