Cod sursa(job #2212193)

Utilizator thePunisherMoldovan Andrei Ioan thePunisher Data 13 iunie 2018 16:18:45
Problema Fructe Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 60 kb
////COLECTIE REZ PE BITI
//#include <iostream>
//#include <fstream>
//#include <algorithm>
//using namespace std;
//ifstream fi("colectie.in");
//ofstream fo("colectie.out");
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//int n,a[9001],i,j,k;
//void sortare (int n,int k[],int st,int dr){
//    int i,j,a;
//    i=st;
//    j=dr;
//    a=k[i];
//    do{
//        while(k[j]>=a and i<j)
//            j=j-1;
//        k[i]=k[j];
//        while(k[i]<=a and i<j)
//            i=i+1;
//        k[j]=k[i];
//    }while(i!=j);
//    k[i]=a;
//    if(st<i-1)
//        sortare(n,k,st,i-1);
//    if(i+1<dr)
//        sortare(n,k,i+1,dr);
//}
//int main()
//{
//    fi>>n;
//     for(i=1;i<=n;i++)
//        fi>>a[i];
//    sortare(n,a,1,n);
//    for(i=1;i<=n;i++)
//        if(i==1)
//            {if(a[i]!=a[i+1])
//                k++;}
//    else
//        if(i==n)
//                {if(a[i]!=a[i-1])
//            k++;}
//    else
//        if(a[i]!=a[i-1] and a[i]!=a[i+1])
//                        k++;
//    fo<<k;
//    return 0;
//}

////Pachete
//#include <iostream>
//#include <fstream>
//#include <algorithm>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("pachete.in");
//ofstream fo("pachete.out");
//int n,a[9001],i,j,k,pozlib,elem,b[100000];
//int cautapozlib(int a[],int n){
//    int j;
//    for(j=1;j<=n+1;j++)
//        if(a[j]==0)
//        return j;
//}
//int cautaelem(int a[],int n,int x){
//    int j;
//    for(j=1;j<=n+1;j++)
//        if(a[j]==x)
//        return j;
//}
//int main()
//{
//    int st,dr,s=0;
//    fi>>n;
//     for(i=1;i<=n;i++)
//        fi>>a[i];
//        a[n+1]=0;
//        k=1;
//    for (i=1;i<=n;i++)
//        if(a[i]!=i)
//        {   pozlib=cautapozlib(a,n);
//            elem=cautaelem(a,n,i);
//            if(a[i]!=a[pozlib])
//            {
//            swap(a[i],a[pozlib]);
//            b[k++]=i;
//            b[k++]=pozlib;
//            }
//            if(a[i]!=a[elem])
//            {swap(a[i],a[elem]);
//            b[k++]=elem;
//            b[k++]=i;
//            }
//        }
//        fo<<k/2<<endl;
//    for(i=1;i<k;i+=2)
//        fo<<b[i]<<" "<<b[i+1]<<endl;
//}

////prim001 RASPUNS GRESIT
//#include <iostream>
//#include <fstream>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//long long n,i,x,nr=1,d,k,aux,p;
//bool gata=0;
//int main()
//{
//    cin>>n;
//    aux=n;
//    k=59999;
//    d=2;
//    while(n>1 && gata==0)
//        {
//        p=0;
//        while(n%d==0)
//            {p++;
//             n=n/d;
//            }
//            if(p)
//            {
//                //fo<<d<<" "<<p<<endl;
//            nr=(nr*(p*aux+1))%k;
//            }
//            d++;
//    if(d*d>n and n>1)
//        gata=1;
//        }
//        //fo<<endl;
//    if(n>1)
//        {
//            //fo<<n<<" "<<p;
//        nr=(nr*(aux+1))%k;
//        cout<<nr+1;
//        }
//        else
//            cout<<nr;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("prodmax.in");
//ofstream fo("prodmax.out");
////ifstream fi("serbare.in");
////ofstream fo("serbare.out");
//int n,a[1000][1000],fr[100][100],m,i,j,maxi;
//int main(){
//    fi>>n>>m;
//    for(i=1;i<=n;i++)
//        for(j=1;j<=m;j++)
//    fi>>a[i][j];
//     for(i=1;i<=m;i++)
//        {for(j=1;j<=n;j++)
//            fr[i][a[j][i]]++;
//            if(fr[i][2]>maxi and fr[i][0]==0)
//                maxi=fr[i][2];
//        }
//        for(i=1;i<=m;i++)
//               if(fr[i][0]==0 and fr[i][2]==maxi)
//                fo<<i<<" ";
//}

//VARIANTA 33 SUBIECTUL 3 PROBLEMA 4
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int n,x,y,m,i,j,maxi,nr,dif,mini=1000,k;
//int main(){
//    fi>>n;
//    for(i=1;i<=n;i++)
//        for(j=1;j<=n;j++)
//            {fi>>x;
//                if(x>99 and x<1000 and x>maxi)
//                    {maxi=x; k=0;}
//                    if(x==maxi)
//                        k++;
//            }
//            fi.close();
//            ifstream fi("intrare.in");
//    fi>>n;
//        for(i=1;i<=n;i++)
//        for(j=1;j<=n;j++)
//        {   fi>>y;
//            dif=maxi-y;
//            if(dif<0)
//                dif=dif*(-1);
//            if(dif!=0 or k!=1)
//            if(dif<mini)
//            {
//                mini=dif;
//                nr=y;
//            }
//        }
//        fo<<maxi<<" "<<nr;
//}

////VARIANTA 34 SUBIECTUL 3 PROBLEMA 3
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int n,x[1000],m,i,j,nr,ok,dif,maxim,k;
//int maxi(int x[],int n){
//    int st=1,dr=n;
//    if(x[st]>x[dr])
//        return x[st];
//    else
//        return x[dr];
//}
//int main(){
//    fi>>n;
//    for(i=1;i<=n;i++)
//        { for(j=1;j<=n;j++)
//            fi>>x[j];
//              ok=1;
//            if(x[1]<x[n])
//               {for(j=2;j<=n;j++)
//                if(maxi(x,j)!=x[j])
//                ok=0;
//                if(maxim<x[n] and ok==1)
//                    maxim=x[n];
//                }
//                else
//                  {for(j=2;j<=n;j++)
//                if(maxi(x,j)!=x[1])
//                ok=0;
//                if(maxim<x[1] and ok==1)
//                    maxim=x[1];
//                }
//        }
//          fo<<maxim;
//}

////VARIANTA 30 SUBIECTUL 3 PROBLEMA 4
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int n,i,st,dr,aux;
//float x;
//int maxi(int x[],int n){
//    int st=1,dr=n;
//    if(x[st]>x[dr])
//        return x[st];
//    else
//        return x[dr];
//}
//int main(){
//    fi>>n;
//    for(i=1;i<=n;i++)
//    {
//        fi>>x;
//            if(x>dr)
//        {
//            st=x;
//            dr=x+1;
//            fo<<st<<" "<<dr<<endl;
//        }
//    }
//}

////VARIANTA 35 SUBIECTUL 3 PROBLEMA 4
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int n,i,st,dr,aux,x,a[100],k,j;
//int sum(int x){
//    int s=0,i;
//    for(i=2;i<x;i++)
//        if(x%i==0)
//        s+=i;
//    return s;
//}
//int main(){
//    fi>>n;
//    for(i=1;i<=n;i++)
//    {
//        fi>>x;
//       a[sum(x)]++;
//    }
//    for(i=0;i<=37;i++)
//        if(a[i])
//        for(j=1;j<=a[i];j++)
//        fo<<i<<" ";
//}

////VARIANTA 40 SUBIECTUL 3 PROBLEMA 4
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int n,i,st,dr,aux,x,a[100],k,j;
//int pr(int x){
//    int i;
//    if(x==1)
//        return 0;
//    for(i=2;i*i<=x;i++)
//        if(x%i==0)
//        return 0;
//    return 1;
//}
//int sdiv(int y){
//    int i,s=0;
//    for(i=1;i<=y;i++)
//        if(y%i==0)
//        s+=i;
//    return s;
//}
//int main(){
//    fi>>n;
//    cout<<sdiv(4);
//    for(i=1;i<=n;i++)
//        if(pr(sdiv(i)))
//            fo<<i<<" ";
//}

////Varianta 50,subiectul 3,problema 3
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//ifstream fi("kminsum.in");
//ofstream fo("kminsum.out");
//long long n,m,cif,i,maxi,mini=10,n2,fr[1000],b,a,k,s,p1,p,x,y;
//int divxy(int x,int y){
//    if(x%y==0)
//        return 1;
//    else
//        return 0;
//}
//int main(){
//    fi>>a>>b>>n;
//    if(a>b)
//        swap(a,b);
//    for(i=a;i<=b;i++)
//        if(n%i==0)
//        fr[++k]=i;
//    for(i=1;i<=k;i++)
//        fo<<fr[i]<<" ";
//}

////Varianta 49,subiectul 3,problema 3
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//ifstream fi("kminsum.in");
//ofstream fo("kminsum.out");
//long long n,m,cif,i,maxi,mini=10,n2,fr[1000],b,a,k,s,p1,p,x,y;
//int divxy(int x,int y){
//    if(x%y==0)
//        return 1;
//    else
//        return 0;
//}
//int main(){
//    fi>>a>>b>>n;
//    if(a>b)
//        swap(a,b);
//    for(i=a;i<=b;i++)
//        if(i%n==0)
//        fr[++k]=i;
//    for(i=1;i<=k;i++)
//        fo<<fr[i]<<" ";
//}

////Varianta 49,subiectul 3,problema 4
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("kminsum.in");
////ofstream fo("kminsum.out");
//int n,m,cif,i,maxi,mini=10,n2,fr[1000],b,a,k,s,p1,p,x,y;
//void cmax(int a,int &b){
//    b=0;
//    while(a){
//        if(a%10>b)
//            b=a%10;
//        a/=10;
//    }
//}
//int main(){
//    while(fi>>x){
//        cmax(x,k);
//        if(k>maxi)
//            maxi=k;
//    }
//    fo<<maxi;
//}

////Varianta 47,subiectul 3,problema 4
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("kminsum.in");
////ofstream fo("kminsum.out");
//int n,i,maxi,mini,a[1000],s;
//void cif(int nr,int &s){
//    int cifa;
//    s=0;
//    while(nr){
//        cifa=nr%10;
//        s+=cifa;
//        nr/=10;
//    }
//}
//int main(){
//    fi>>n;
//    for(i=1;i<=n;i++)
//        {
//            fi>>a[i];
//            cif(a[i],s);
//            if(s>maxi)
//                maxi=s;
//        }
//        for(i=1;i<=n;i++)
//        {
//        cif(a[i],s);
//        if(s==maxi)
//            fo<<a[i]<<" ";
//        }
//}


//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("sumsec.in");
////ofstream fo("sumsec.out");
//int d,n,p,gata,i,x,doi,cinci;
//long long s;
//int nr2(int x){
//    int d;
//    d=2;
//        while(x%d==0)
//        {
//            p++;
//            x=x/d;
//        }
//    return p;
//}
//int nr5(int x){
//    int d;
//    d=5;
//        while(x%d==0)
//        {
//            p++;
//            x=x/d;
//        }
//    return p;
//}
//int main(){
//    fi>>n;
//    for(i=1;i<=n;i++)
//        {fi>>x;
//        doi+=nr2(x);
//        cinci+=nr5(x);
//        }
//    fo<<doi<<" "<<cinci;
//    return 0;
//}

////Varianta 80 subiectul 3 problema 3
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("sumsec.in");
////ofstream fo("sumsec.out");
//int n,a[1000],i,x,maxi;
//int egale(int x)
//{
//    int cif;
//    cif=x%10;
//    while (x){
//        if(cif!=x%10)
//            return 0;
//        x=x/10;
//    }
//    return 1;
//}
//int main(){
//  int ok=0;
//    while(fi>>x){
//        if(egale(x))
//            {a[x]++; ok=1;}
//        if(x>maxi)
//            maxi=x;
//    }
//    if(ok)
//    {for(i=0;i<=maxi;i++)
//        if(a[i]>=1)
//        fo<<i<<" ";}
//          else
//      fo<<"NU EXISTA";
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("sumsec.in");
////ofstream fo("sumsec.out");
//void sterge(int a[],int &n,int st,int dr)
//{
//    int i,aux;
//    aux=n-(dr-st+1);
//    for(i=dr+1;i<=n;i++)
//        a[st++]=a[i];
//    n=aux;
//}
//int main(){
//    int n,a[100],i,st,dr;
//    fi>>n>>st>>dr;
//    for(i=1;i<=n;i++)
//        fi>>a[i];
//    sterge(a,n,st,dr);
//    for(i=1;i<=n;i++)
//        fo<<a[i]<<" ";
//}
//
//

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("sumsec.in");
////ofstream fo("sumsec.out");
//int * sumaMinMax(int a[],int n)
//{
//    int i,maxi=a[1],mini=a[1],sol[2],s=0;
//    int *p;
//    for(i=0;i<n;i++)
//    {
//        s+=a[i];
//        if(a[i]>maxi)
//            maxi=a[i];
//        if(a[i]<mini)
//            mini=a[i];
//    }
//    sol[1]=s-maxi;
//    sol[2]=s-mini;
//    p=&sol[1];
//    return p;
//}
//int main(){
//    int n,a[100],i,st,dr;
//    fi>>n;
//    for(i=0;i<n;i++)
//        fi>>a[i];
//    int *t=sumaMinMax(a,n);
//    fo<<t[1]<<" "<<t[2];
//}

////CAMPION PANGLICA
//#include <iostream>
//#include <fstream>
//#include <algorithm>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("panglica.in");
//ofstream fo("panglica.out");
//int x,n,i,lungime[1000],inceput[1000],C,sfarsit[1000],maxi,sol;
//int main(){
//    fi>>n>>C;
//    for(i=1;i<=n;i++)
//    {
//        fi>>x;
//        if(inceput[x]==0)
//            inceput[x]=i;
//        else
//        {sfarsit[x]=i;
//        lungime[x]=sfarsit[x]-inceput[x]+1;
//        if(lungime[x]>maxi)
//        {
//            maxi=lungime[x];
//            sol=x;
//        }
//        }
//    }
//    fo<<lungime[sol]<<endl<<sol<<endl<<inceput[sol]-1<<endl<<n-sfarsit[sol];
////    for(i=1;i<=3;i++)
////        fo<<i<<" "<<inceput[i]<<" "<<sfarsit[i]<<" "<<lungime[i]<<endl;
//}

////PRIM007
//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int x,n,l,nr,p,i,j,fr[10001],prim[20000],maxi,aux;
//long long k=0;
//int main(){
//    cin>>n;                     //citesc elementele
//    for(i=1;i<=n;i++)
//        {
//        cin>>x;
//        fr[x]++;                     //frecventa elementelor
//            if(x>maxi)                  //pana unde merg
//                maxi=x;
//        }
//        aux=maxi;
//    prim[0]=1;
//    prim[1]=1;
//    for(int i=2;i<=20000;++i)           //ciur,vector cu numere prime
//        if (prim[i]==0)
//            {
//        for(int j=i*2;j<=20000;j+=i)
//            prim[j]=1;
//            }
//            maxi=aux;
//        if(fr[1]>=2)
//            k+=fr[1]*(fr[1]-1)/2;
//        if(fr[2]>0 and fr[0]>0)
//                k+=fr[2]*fr[0];
//      for(i=0;i<=maxi;i+=2)
//        for(j=1;j<=maxi;j+=2)
//            if(fr[i]>0 and fr[j]>0)
//                if(prim[i+j]==0)
//                    k=k+fr[i]*fr[j];
//    cout<<k;
//}

////PRIM013 @.@
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("prim013.in");
//ofstream fo("prim013.out");
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//long long prim[100000],i,j,n,x,k,d,ok,p,fr[100000];
//int main(){
//    prim[0]=1;
//    prim[1]=1;
//    for(int i=2;i<=10000;++i)
//  if (prim[i]==0)
//   for(int j=i*2;j<=10000;j+=i)
//        prim[j]=1;
//    for(i=2;i<=10000;i++)
//        if(prim[i]==0)
//    {for(j=i;j<=10000;j=j*i)
//        {k++;
//        if(prim[k+1]==0)
//            fr[j]=1;
//        }
//    k=0;
//    }
//     fi>>n;
//     for(i=1;i<=n;i++)
//     {fi>>x;
//        if(fr[x]==1)
//            k++;
//     }
//    fo<<k;
//}

////secventa 11
//#include <fstream>
//#include <iostream>
//using namespace std;
////ifstream fi("cautaprim.in");
////ofstream fo("cautaprim.out");
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int fr[1000],k,n,i,prim[101],sol,x,bin[300000],st,maxi;
//bool ok=false;
//int unu(int x){
//    while(x/2!=0){
//        if(x%2==0)
//            return 0;
//            x=x/2;
//    }
//    return 1;
//}
//int main()
//{
//    cin>>n;
//    for(int i=1;i<=n;i++)
//        {
//            cin>>x;
//            bin[i]=unu(x);
//            if(bin[i]==1)
//                ok=true;
//        }
//        if(ok==false)
//            {fo<<0;
//            return 0;}
//   st=1;
//   while(st<=n)
//   {
//       if(bin[st]==1)
//        while(bin[st]==1)
//       {
//           k++;
//           st++;
//       }
//       else
//        st++;
//       if(k>maxi)
//        maxi=k;
//       k=0;
//   }
//   cout<<maxi;
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("cautaprim.in");
//ofstream fo("cautaprim.out");
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//long long n,i,x[1900900],p;
//bool ok=false;
//long long s;
//typedef long long NrMare[101000];
//void prod(NrMare x, int n)
//{
//  long long i,t=0;
//  for(i=1;i<=x[0];i++,t/=10)
//  {
//    t+=x[i]*n;
//    x[i]=t%10;
//  }
//  for(;t;t/=10)
//    x[++x[0]]=t%10;
//}
//void atrib(NrMare x, int n)
//{
//  x[0]=0;
//  if(n==0)
//    x[(x[0]=1)]=0;
//  else
//    for(;n;n/=10)
//      x[++x[0]]=n%10;
//}
//int main()
//{
//    cin>>n;
//    atrib(x,1);
//    if(n%2==0)
//    for(i=1;i<=n/2;i++)
//        prod(x,4);
//        else
//        {
//    for(i=1;i<=n/2;i++)
//        prod(x,4);
//        prod(x,2);
//        }
//        for(i=x[0];i>=1;i--)
//            s+=x[i];
//    cout<<s;
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int n,m,a[10001],i,sol[1001],prim[1000];
//void citire(){
//    cin>>n;
//    for(i=1;i<=n;i++)
//        cin>>a[i];
//}
//void afisare(int m,int sol[]){
//    int i;
//    if(m!=0)
//    for(i=1;i<=1000;i++)
//        {if(sol[i]==1)
//            cout<<i<<" ";}
//    else
//        cout<<"Sirul Y este vid";
//}
//void genPrim(){
//    int i,j;
//    prim[0]=1;
//    prim[1]=1;
//    for(i=2;i<=1000;i++)
//        if(prim[i]==0)
//        for(j=2*i;j<=1000;j=j+i)
//            prim[i]=1;
//}
//int desc(int x){
//    int d=2,ok=1,p;
//    while(x>1){
//            p=0;
//        while(x%d==0)
//        {
//            x/=d;
//            p=p+1;
//        }
//        if(p==1)
//        {
//            sol[d]=1;
//            m=1;
//        }
//        d++;
//    }
//}
//int main()
//{
//    m=0;
//    citire();
//    //genPrim();
//    for(i=1;i<=n;i++)
//    {
//        desc(a[i]);
//    }
//    afisare(m,sol);
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int n,m,i,sol,a[10000],fr[10000],k;
//void zero(int n,int a[]){
//    int i,par[1000],impar[10000],stp=0,sti=0;
//    for(i=1;i<=2*n;i++)
//        if(a[i]%2==0)
//            par[++stp]=a[i];
//    else
//        impar[++sti]=a[i];
//    i=1;
//    sti=1;
//    stp=1;
//    while(i<=2*n)
//    {
//        a[i+1]=par[stp++];
//        a[i]=impar[sti++];
//        i=i+2;
//    }
//}
//int main()
//{
//    fi>>n;
//    for(i=1;i<=2*n;i++)
//        fi>>a[i];
//    zero(n,a);
//    for(i=1;i<=2*n;i++)
//        fo<<a[i]<<" ";
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int sir(int x){
//    int cif[100],k=0,i,ok=0;
//    for(i=1;i<=11;i++)
//        cif[i]=0;
//    while(x)
//    {
//        cif[++k]=x%10;
//        x=x/10;
//    }
//    while(k>1){
//        if(cif[k]<cif[k-1])
//            {k--;
//            ok=1;
//            }
//        else
//            if(cif[k]==cif[k-1])
//                return 0;
//        else
//           {
//               while(k>1)
//           {
//               if(cif[k]<cif[k-1] or ok==0)
//                return 0;
//                else
//                    if(cif[k]==cif[k-1])
//                        return 0;
//                k--;
//           }
//           ok=2;
//           }
//            }
//        if(ok==2)
//        return 1;
//        else
//            return 0;
//}
//int main()
//{
//  int n,a[10000],i,k,x,r;
//  cin>>n;
//    for(i=1;i<=n;i++)
//    {
//        cin>>x;
//        a[i]=sir(x);
//    }
//    for(i=1;i<=n;i++)
//        cout<<a[i]<<" "<<endl;
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int main()
//{
//  int n,a[10000],i,k,x,r;
//  cin>>n>>k;
//  if(n==1)
//  {
//      if(k!=0)
//        cout<<k;
//      else
//        cout<<9;
//  }
//        else
//  if(k==0)
//  {
//    cout<<1;
//  for(i=2;i<n;i++)
//      cout<<0;
//  cout<<8;
//  }
//  else
//    {
//  cout<<1;
//  for(i=2;i<n;i++)
//  {
//      cout<<0;
//  }
//  cout<<k-1;}
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("produsmaxim.in");
////ofstream fo("produsmaxim.out");
//int main()
//{
//    int x,a,b,c;
//    while(fi>>x){
//            if(x%3==0){
//
//                fo<<x<<" "<<x/3<<" "<<x/3<<" "<<x/3<<endl;
//            }
//            else
//        if(x%3==1)
//        {
//
//            fo<<x<<" "<<x/3<<" "<<x/3<<" "<<x/3+1<<endl;
//        }
//        else
//            fo<<x<<" "<<x/3<<" "<<x/3+1<<" "<<x/3+1<<endl;
//    }
//}

////INTERCLASARE
//#include <fstream>
//#include <iostream>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("interclasare.in");
//ofstream fo("interclasare.out");
//int x,a[1000001],b[1000001],c[2000000],n,m,lsol,i,j,k;
//int main()
//{
//    fi>>n;
//    for(i=1;i<=n;i++)
//        fi>>a[i];
//     fi>>m;
//    for(i=1;i<=m;i++)
//        fi>>b[i];
//        i=1;
//        j=1;
//        k=0;
//  while(i <= n && j <= m)
//    {
//        if(a[i] < b[j])
//        {
//            k++;
//            c[k] = a[i];
//            i++;
//        }
//        else
//        {
//            k++;
//            c[k] = b[j];
//            j++;
//        }
//    }
//    if(i <= n)
//    {
//        for(int p = i; p <= n; p++)
//        {
//            k++;
//            c[k] = a[p];
//        }
//    }
//    if(j <= m)
//    {
//        for(int p = j; p <= m; p++)
//        {
//            k++;
//            c[k] = b[p];
//        }
//    }
//    for(i=1;i<=k;i++)
//        {
//            if((i-1)%10==0 and i!=1)
//                fo<<endl;
//            fo<<c[i]<<" ";
//        }
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("produsxl.in");
//ofstream fo("produsxl.out");
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//typedef unsigned long long NrMare[1010];
//unsigned long long x[10000],i,n;
//unsigned long long t,y;
//void ProdusMic(NrMare x, int n)
////x <- x*n
//{
//  unsigned long long i,t=0;
//  for(i=1;i<=x[0];i++,t/=10)
//  {
//    t+=x[i]*n;
//    x[i]=t%10;
//  }
//  for(;t;t/=10)
//    x[++x[0]]=t%10;
//}
//int main()
//{
//    fi>>x[0];
//    for(i=x[0];i>=1;i--)
//        fi>>x[i];
//    fi>>y;
//    if(y==0)
//    {
//        fo<<0;
//        return 0;
//
//    }
//    ProdusMic(x,y);
//    for(i=x[0];i>=1;i--)
//        fo<<x[i];
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("easyquery.in");
//ofstream fo("easyquery.out");
//long long a[100008],b[100008],pi,pf,tip,z,i,n,k;
//int main()
//{
//    fi>>n;
//    for(i=1;i<=n;i++)
//        fi>>a[i];
//    fi>>k;
//    for(i=1;i<=k;i++)
//    {fi>>tip>>pi>>pf>>z;
//    if(tip==1)
//        {b[pi]+=z;
//        b[pf+1]+=-z;}
//        else
//        {b[pi]-=z;
//        b[pf+1]+=z;}
//    }
//    for(i=1;i<=n;i++)
//        b[i]=b[i]+b[i-1];
//    for(i=1;i<=n;i++)
//        a[i]+=b[i];
//    for(i=1;i<=n;i++)
//        fo<<a[i]<<" ";
//}

////2084
//#include <iostream>
//using namespace std;
//int a[100003],x,y,r,i,n,j,s,ss;
//int main()
//{
//   cin>>n;
//   for(i=1;i<=n;i++)
//         cin>>a[i];
//   r=a[1];
//   for(i=1;i<=n;i++)
//     if(a[i]<r)
//        s=s+r-a[i];
//     else
//     {ss=ss+s;
//     s=0;
//     r=a[i];
//     }
//   s=0;
//   r=a[n];
//   for(i=n-1;i>=1;i--)
//     if(a[i]<=r)
//        s=s+r-a[i];
//     else
//     {ss=ss+s;
//     s=0;
//     r=a[i];
//     }
//    cout<<ss;
//   return 0;
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("mdiferenta.in");
//ofstream fo("mdiferenta.out");
//int n,m,p,q,sol[1000][1000],i,j,x;
//int main()
//{
//    fi>>n>>m;
//     for(i=1;i<=n;i++)
//        for(j=1;j<=m;j++)
//    sol[i][j]=0;
//    for(i=1;i<=n;i++)
//        for(j=1;j<=m;j++)
//    {
//    fi>>x;
//    sol[i][j]+=x;
//    }
//    fi>>p>>q;
//    for(i=1;i<=p;i++)
//        for(j=1;j<=q;j++)
//    {
//    fi>>x;
//    sol[i][j]-=x;
//    }
//    fo<<n<<" "<<m<<'\n';
//     for(i=1;i<=n;i++)
//        {for(j=1;j<=m;j++)
//            fo<<sol[i][j]<<" ";
//        fo<<'\n';
//        }
//   return 0;
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("mdiferenta.in");
//ofstream fo("mdiferenta.out");
//void citire(int a[],int &n){
//    int i;
//    cin>>n;
//    for(i=1;i<=n;i++)
//        cin>>a[i];
//}
//void afisare(int a[],int n){
//    int i;
//    for(i=1;i<=n;i++)
//        cout<<a[i]<<" ";
//}
//int prim(int x){
//    int i;
//    if(x==0 or x==1)
//        return 0;
//    for(i=2;i*i<=x;i++)
//        if(x%i==0)
//        return 0;
//    return 1;
//}
//int urmatorul_prim(int x){
//    int nr;
//    nr=x+1;
//    while(prim(nr)==0)
//        nr++;
//    return nr;
//}
//void inloc(int a[],int n){
//    int i;
//    for(i=1;i<=n;i++)
//        if(prim(a[i])==0)
//            a[i]=urmatorul_prim(a[i]);
//}
//int main()
//{
//    int n,a[1000],i;
//    citire(a,n);
//    inloc(a,n);
//    afisare(a,n);
//    return 0;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("gogosi.in");
////ofstream fo("gogosi.out");
//long long i,n,j,x,k,sol[1000008],maxi=0,ind;
//int cauta(long long n,long long x[],long long c){
//    int st,dr,mij,gasit=0;
//    st=1;
//    dr=n;
//    while(st<=dr)
//    {
//        mij=st+(dr-st)/2;
//        if(x[mij]==c)
//            return mij;
//        if(x[mij]<c)
//            dr=mij-1;
//        else
//            st=mij+1;
//    }
//    while(x[mij]<=c and mij>=1)
//        mij--;
//    return mij+1;
//}
//int main()
//{
//    fi>>n;
//    if(n==1)
//    {
//        fo<<1;
//        return 0;
//    }
//    for(i=1;i<=n;i++)
//        {
//            fi>>x;
//            if(i>=2)
//            {ind=cauta(n,sol,x);
//            sol[ind]=x;}
//            else
//                sol[1]=x;
//        }
//        for(i=1;i<=n;i++)
//            if(sol[i]==0)
//        {
//            fo<<i-1;
//            return 0;
//        }
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int n,a[10000],i,s=0;
//int prim(int k){
//    int i;
//    if(k==0 or k==1)
//        return 0;
//    for(i=2;i*i<=k;i++)
//        if(k%i==0)
//        return 0;
//    return 1;
//}
//void P(int a[],int n,int &s){
//  int i;
//  s=0;
//  for(i=0;i<n;i++)
//    if(prim(a[i]))
//        s+=a[i];
//}
//int main()
//{
//    fi>>n;
//    for(i=0;i<n;i++)
//        fi>>a[i];
//    P(a,n,s);
//    fo<<s;
//}
//
//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int n,k,c;
//void cnt_cif(int n,int k,int &c){
//            if(n>9)
//            {
//                if(n%10>=k)
//                {
//                c++;
//                cnt_cif(n/10,k,c);
//                }
//            else
//                cnt_cif(n/10,k,c);
//            }
//                else
//                if(n>=k)
//                    c++;
//}
//int main()
//{
//    fi>>n>>k;
//    cnt_cif(n,k,c);
//    fo<<c;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("interclasare1.in");
////ofstream fo("interclasare1.out");
//int n,i,j,a[1000],b[10000],sol[1000],m,k,maxi,st,dr,ind;
//int main(){
//    cin>>n;
//    for(i=1;i<=n;i++)
//        {
//            cin>>a[i];
//        }
//   i=1;
//   while(i<=n ){
//        k=0;
//        if(a[i]==0)
//        {   ind=i;
//            while(a[i]==0)
//        {
//            k++;
//            i++;
//        }}
//        else
//            i++;
//    if(k>maxi)
//    {
//        st=ind;
//        maxi=k;
//        dr=i;
//    }
//   }
//   cout<<st<<" "<<dr-1;
//}

//#include <iostream>
//#include <fstream>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi ("numere7.in");
////ofstream fo ("numere7.out");
//int x[200008],cif,i,j,n,m,a,b,st,dr;
//int cautast(int c){
//    int li,ls,mij,gasit=0;
//    li=1;
//    ls=n;
//    while(li<=ls)
//    {
//        mij=ls+(li-ls)/2;
//        if(x[mij]==c)
//               {if(x[mij-1]==c)
//            {while(x[mij]==c)
//                    mij--;
//                    return mij;}
//                    return mij-1;
//                    }
//        if(x[mij]<c)
//            li=mij+1;
//        else
//            ls=mij-1;
//    }
//    if(x[mij]>=c)
//        mij--;
//    return mij;
//}
//int cautadr(int c){
//    int li,ls,mij,gasit=0;
//    li=1;
//    ls=n;
//    while(li<=ls)
//    {
//        mij=ls+(li-ls)/2;
//        if(x[mij]==c)
//            {if(x[mij+1]==c)
//            {while(x[mij]==c)
//                mij++;
//            return mij-1;}
//            return mij;
//        }
//        if(x[mij]<c)
//            li=mij+1;
//        else
//            ls=mij-1;
//    }
//    if(x[mij]>c)
//        mij--;
//    return mij;
//}
//int main()
//{
//    cin>>n>>m;
//    for(i=1;i<=n;i++)
//        cin>>x[i];
//        sort(x+1,x+n+1);
//    for(i=1;i<=m;i++)
//    {
//        cin>>a>>b;
//        st=cautast(a);
//        dr=cautadr(b);
//        cout<<dr-st<<'\n';
//    }
//    return 0;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi ("punctsegment.in");
////ofstream fo ("punctsegment.out");
//long long x,y,a,b,m,n,s;
//int main()
//{
//    cin>>n;
//        cout<<n*(n-3)/2<<'\n'<<(n-2)*180;
//}

//#include <iostream>
//#include "Matrice.h"
//using namespace std;
//int verificMaximVecin(Matrice a, int i, int j) {
//int max = -1;
////daca am un vecin in directia respectiva si nu e perete
//if (i > 0 && a.elem[i - 1][j] != 0)
//max = a.elem[i - 1][j];
//if (i < a.n - 1 && a.elem[i + 1][j] != 0)
//if (a.elem[i + 1][j] > max)
//max = a.elem[i + 1][j];
//if (j > 0 && a.elem[i][j - 1] != 0)
//if (a.elem[i][j - 1] > max)
//max = a.elem[i][j - 1];
//if (j < a.m - 1 && a.elem[i][j + 1] != 0)
//if (a.elem[i][j + 1] > max)
//max = a.elem[i][j + 1];
//return max;
//}
////returneaza true daca au mai fost schimbari
//bool gasesteIncaperi(Matrice& a, int& contorIncaperi) {
//int i, j;
//int max;
//bool schimbari = false;
//for (i = 0; i < a.n; i++)
//for (j = 0; j < a.m; j++) {
//if (a.elem[i][j] != 0) {
//max = verificMaximVecin(a, i, j);
////daca minimul e -1, atunci e o incapere inca nedescoperita
//if (max == -1) {
//contorIncaperi++;
//a.elem[i][j] = contorIncaperi;
//schimbari = true;
//}
////altfel, e o camera detectata deja si completez cu numarul ei
////iar daca cumva are mai multe numere, il aleg pe cel mai mare
//else
//if (a.elem[i][j] != max) {
//a.elem[i][j] = max;
//schimbari = true;
//}
//}
//}
//return schimbari;
//}
//15
////returneaza maximul de pe primele l pozitii din vectorul v
//int maximVector(int v[], int l) {
//int max = 0;
//for (int i = 0; i < l; i++)
//if (v[i] > max)
//max = v[i];
//return max;
//}
//int calculeazaAriaMaxima(Matrice a, int contorIncaperi) {
//int ariiCamere[200];
//int i, j;
////initializez toate ariile cu 0;
//for (i = 0; i < contorIncaperi; i++)
//ariiCamere[i] = 0;
//for (i = 0; i < a.n; i++)
//for (j = 0; j < a.m; j++) {
//int idCamera = a.elem[i][j];
////daca e Camera si nu perete ii cresc cu 1 aria
//if (idCamera > 0)
//ariiCamere[idCamera - 1]++;
//}
//return maximVector(ariiCamere, contorIncaperi);
//}
//int main() {
//Matrice a = citire("3.in");
//afisare(a);
//bool schimbari = true;
//int contorIncaperi = 0;
////Cat timp mai sunt schimbari nu putem fi siguri ca o camera e umpluta cu acelasi
////numar, se poate sa nu fi fost detectata din prima parcurgere ca o singura incapere.
////De aceea parcurgem de mai multe ori si daca detectam numere diferite in aceeasi
////incapere le suprascriem cu cel mai mare dintre cele intalnite
//while (schimbari)
//schimbari = gasesteIncaperi(a, contorIncaperi);
//int aria = calculeazaAriaMaxima(a, contorIncaperi);
//cout << "Aria maxima a unei incaperi este: " << aria << endl;
//return 0;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi ("punctsegment.in");
////ofstream fo ("punctsegment.out");
//int n,a[1000][1000],sol[100][1000],k,nr,f[100];
//int cpy(int n){
//    int i,j;
//    for(i=1;i<=n;i++)
//        for(j=1;j<=n;j++)
//            a[i][j]=sol[i][j];
//}
//int top(int n,int &k){
//    int i,j;
//    for(i=2;i<n;i++)
//        for(j=2;j<n;j++)
//    if(a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1]<3 and a[i][j]!=0)
//        {
//        sol[i][j]=0;
//        k--;}
//        else
//            sol[i][j]=a[i][j];
//    cpy(n);
//}
//int main()
//{
//    int i,j;
//    cin>>n;
//    for(i=1;i<=n;i++)
//        for(j=1;j<=n;j++)
//            {cin>>a[i][j];
//            k+=a[i][j];
//            }
//    while(k)
//    {
//        nr++;
//        f[nr]=k;
//        top(n,k);
//    }
//    cout<<nr<<'\n';
//    for(i=1;i<=nr;i++)
//        cout<<f[i]<<'\n';
//    return 0;
//}
//
//#include <iostream>
//#include <fstream>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//ifstream fi("porumb.in");
//ofstream fo("porumb.out");
//long long n,pas,i,j,k,s,ok,x,p,aux,l;
//int main()
//{
//    fi>>n>>x;
//    k=1;
//    while(k<=n)
//    {
//        p++;
//        k*=2;
//    }
//    if(n%2==0)
//        fo<<n/2;
//    else
//        fo<<n/2+1;
//    fo<<'\n'<<p<<'\n';
//        if(x%2==1)
//            fo<<1;
//            else
//            {
//            p=1;
//            aux=1;
//                while(aux<=x)
//        {
//            aux*=2;
//            p++;
//               if(x%aux==0)
//                l=p;
//        }
//        fo<<l;
//        }
//    fo<<'\n'<<k/2;
//    return 0;
//}

////MAJORITAR
//#include <iostream>
//#include <fstream>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("puterik.in");
////ofstream fo("puterik.out");
//int n,a[100000],b,i,maxi,x,nr1,nr2,k,ok,j,m,r,sol;
//int f(int n, int a[]) {
//    int cand = -1, k = 0;
//    for (int i = 1; i <= n; i++) {
//        if (k == 0) {
//            cand = a[i];
//            k = 1;
//        } else if (a[i] == cand) {
//            k++;   // nu am putut împerechea pe votantul i şi astfel trebuie să mărim numărul de votanţi necuplaţi
//        } else
//            k--;   // cuplăm votantul i cu orice votant ce îl susţine pe cand şi micşorăm astfel numărul de votanţi necuplaţi
//    }
//    if (cand < 0)
//        return cand;
//    // verificare
//    int nr = 0;
//    for (int i=1; i<=n; i++) {
//        if (a[i] == cand)
//            nr++;
//    }
//    if (nr > n / 2)
//        return cand;
//    else
//        return -1;
//}
//int main()
//{
//    cin>>n;
//    for(i=1;i<=n;i++)
//        cin>>a[i];
//    sol=f(n,a);
//    if(sol!=-1)
//        cout<<"DA "<<sol;
//    else
//        cout<<"NU";
//    return 0;
//}

//#include <fstream>
//#include <iostream>
//#include <cmath>
//#include <iomanip>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("secvmax.in");
////ofstream fo("secvmax.out");
//long long n,sol,x,d=2,maxi=0,gata=0,p=0;
//int main(){
//    cin>>x;
//    while(x!=1 && gata==0){
//     p=0;
//     while(x%d==0){p++;x=x/d;}
//    if(p>0 and p>=maxi)
//    {
//        maxi=p;
//        sol=d;
//    }
//    d++;
//    if(d*d>x)
//        gata=1;
//   }
//   if(x!=1 and maxi==1 or maxi==0)
//    cout<<x;
//   else
//    cout<<sol;
//}

//#include <fstream>
//#include <iostream>
//#include <algorithm>
//#include <iomanip>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("secvmax.in");
////ofstream fo("secvmax.out");
//int n,s,x,aux,i,a[1000];
//int cif(int x){
//    int sol=0,p=1;
//    while(x){
//        if(x%2==0)
//            {sol=sol+x%10*p;
//            p*=10;}
//        x/=10;
//    }
//    return sol;
//}
//int main(){
//   while(fi>>a[++n])
//    sort(a+1,a+n+1);
//   for(i=1;i<=n;i++)
//    if(a[i]%2==1 and a[i+1]!=a[i])
//    fo<<a[i]<< " ";
//   fo<<endl;
//   for(i=n-1;i>=1;i--)
//   if(a[i]%2==0 and a[i-1]!=a[i])
//   fo<<a[i]<<" ",s+=a[i];
//fo<<endl;
//fo<<cif(s);
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//ifstream fi("sumcolmax.in");
//ofstream fo("sumcolmax.out");
//long long n,s,m,x,aux,c,i,j,a[1000][1000],maxi,ind,sol;
//int main(){
//    fi>>n>>m;
//    maxi=-100000000;
//    for(i=1;i<=n;i++)
//       for(j=1;j<=m;j++)
//        fi>>a[i][j];
//    for(i=1;i<=m;i++)
//    {
//        s=0;
//      for(j=1;j<=n;j++)
//        s=s+a[j][i];
//      if(s>maxi)
//      {
//          maxi=s;
//          sol=i;
//      }
//    }
//    for(i=1;i<=n;i++)
//        fo<<a[i][sol]<<" ";
//}

//#include <fstream>
//#include <iostream>
//#include <algorithm>
////#define fi cin
////#define fo cout
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("exista.in");
////ofstream fo("exista.out");
//int n,i,a[1000];
//int main(){
//    cin>>n;
//    for(i=1;i<=n;i++)
//        cin>>a[i];
//       i=1;
//    for(i=1;i<n;i++){
//           cout<<a[i]<<" ";
//        if ((a[i]%2==0&&a[i+1]%2==0)||(a[i]%2!=0&&a[i+1]%2!=0))
//            cout<<(a[i]+a[i+1])/2<<" ";
//       }
//       cout<<a[i];
//}

//#include <iostream>
//#include <cmath>
//#include <fstream>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("spirala.in");
//ofstream fo("spirala.out");
//int a[100][100],i,j,n,m,k,sol;
//void stdr(int n,int ind){
//        for(i=ind;i<=n-ind+1;i++)
//            fo<<a[ind][i]<<" ";
//}
//void drst(int n,int ind){
//    for(i=n-ind;i>=ind+1;i--)
//            fo<<a[n-ind+1][i]<<" ";
//}
//void susjos(int n,int ind){
//    for(i=ind+1;i<=n-ind+1;i++)
//        fo<<a[i][n-ind+1]<<" ";
//}
//void jossus(int n,int ind){
//    for(i=n-ind+1;i>=ind+1;i--)
//        fo<<a[i][ind]<<" ";
//}
//int main()
//{
//    fi>>n;
//    for (i=1;i<=n;i++)
//        for(j=1;j<=n;j++)
//        fi>>a[i][j];
//        k=0;
//        sol=1;
//    while(k<=n*2-1){
//            if(k<=n*2-1)
//            stdr(n,sol);
//        k++;
//            if(k<=n*2-1)
//        susjos(n,sol);
//        k++;
//        if(k<=n*2-1)
//            drst(n,sol);
//        k++;
//        if(k<=n*2-1)
//            jossus(n,sol);
//        sol++;
//    }
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int i,n,k,nr1,aux,p,nrcif;
//int cmmdc(int a,int b)
//{
//    int r;
//     r = a % b;
//        while(r != 0)
//        {
//           a = b;
//           b = r;
//           r = a % b;
//        }
//    return b;
//}
//int main(){
//    int st,dr;
//    cin>>n;
//    aux=n;
//    p=1;
//    while(aux)
//    {
//        nrcif++;
//        aux/=10;
//    }
//    while(k<=nrcif/2-1)
//    {
//        nr1=nr1+n%10*p;
//        p*=10;
//        k++;
//        n/=10;
//    }
//    if(nrcif%2==1)
//        n=n/10;
//    if(nr1==0)
//    {cout<<0;return 0;}
//    else
//    cout<<cmmdc(n,nr1);
//
//}

//#include <iostream>
//#include <math.h>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int div(long long x)
//{
//    long long d=2,sol=1;
//    for(d=2;d*d<x;d++)
//        if(x%d==0)
//    {
//        if(d%2==0)
//            {sol++;}
//        if((x/d)%2==0)
//            sol++;//fo<<x/2<<"2 ";}
//    }
//    if(d*d==x and d%2==0)
//        sol++;
//    return sol;
//}
//int main(){
//    long long n,a,b,i,k,maxi=-21470000,nr1=0,nr2=0;
//    cin>>a>>b;
//    for(i=a+a%2;i<=b;i+=2)
//        {
//            k=div(i);
//            if(k>maxi)
//            {
//                maxi=k;
//                nr1=nr2=i;
//            }
//            else
//                if(k==maxi)
//                nr2=i;
//        }
//        cout<<maxi<<" "<<nr1<<" "<<nr2;
//}

//#include <fstream>
//#include <iostream>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("divigrup.in");
////ofstream fo("divigrup.out");
//int dis[10000],d[10000],q[10000],i,n,c,s,ferm,sol,cant;
//int dist(int n,int d[10000]){
//   int i;
//   dis[1]=d[0];
//   for(i=2;i<=n+1;i++)
//    dis[i]=d[i-1]+dis[i-1];
//}
//int main()
//{
//    fi>>n>>c;
//    for(i=0;i<=n;i++)
//        fi>>d[i];
//    for(i=1;i<=n;i++)
//        fi>>q[i];
//    dist(n,d);
//    ferm=1;
//    cant=c;
//    while(ferm<=n)
//    {
//        while(q[ferm]>0)
//        {
//            sol+=min(dis[ferm],dis[n+1]-dis[ferm]);//<<endl;
//            q[ferm]=q[ferm]-cant;
//                if(q[ferm]>0)
//                cant=c;
//        }
//             if(q[ferm]<0)
//                cant=-q[ferm];
//                sol+=min(d[ferm],dis[n+1]-dis[ferm])
//         ferm++;
//    }
//    fo<<sol;
//    return 0;
//}

//#include <iostream>
//using namespace std;
//int main(){
//  int n,i,j,k,b,c=0,ok=1;
//  cin >> n;
//  int v[n],a[n];
//  for(i=1;i<=n;i++)
//    cin >> v[i];
//  for(i=1;i<=n;i++)
//    cin >> a[i];
//  for(i=1;i<=n;i++){
//    b=v[i];
//    k=0;
//    c=0;
//    for(j=1;j<=n;j++){
//      if(b==a[j]) k++;
//      if(b==v[j]) c++;
//    }
//    if(c!=k) ok=0;
//  }
//  if(ok)
//    cout<<"DA";
//  else
//    cout<<"NU";
//  return 0;
//}
//


//#include <fstream>
//#include <iostream>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("divigrup.in");
////ofstream fo("divigrup.out");
//int n,i,x,p,a[10000],maxi,mini,pozmax,pozmin;
//void sortare (int n,int k[],int st,int dr){
//    int i,j,a;
//    i=st;
//    j=dr;
//    a=k[i];
//    do{
//        while(k[j]>=a and i<j)
//            j=j-1;
//        k[i]=k[j];
//        while(k[i]<=a and i<j)
//            i=i+1;
//        k[j]=k[i];
//    }while(i!=j);
//    k[i]=a;
//    if(st<i-1)
//        sortare(n,k,st,i-1);
//    if(i+1<dr)
//        sortare(n,k,i+1,dr);
//}
//int main()
//{
//    mini=10000000;
//    cin>>n;
//    for(i=1;i<=n;i++)
//        {cin>>a[i];
//        if(a[i]>maxi)
//            maxi=a[i],pozmax=i;
//        }
//        sortare(n,a,1,pozmax);
//        sortare(n,a,pozmax+1,n);
//        for(i=1;i<=pozmax;i++)
//        cout<<a[i]<<" ";
//        for(i=n;i>pozmax;i--)
//            cout<<a[i]<<" ";
//    return 0;
//}

//#include <fstream>
//#include <iostream>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("divigrup.in");
////ofstream fo("divigrup.out");
//int n,i,j,v[100008],st[3][100008];
//int main()
//{
//    fi>>n;
//    for(i=1;i<=n;i++)
//       {
//           fi>>v[i];
//           while(v[i]>st[1][j] and j>=1)
//           {
//               v[st[2][j]]=v[i];
//               j--;
//               fo<<st[1][j]<< " "<<st[2][j]<<" ";
//           }
//           fo<<endl;
//           j++;
//           st[1][j]=v[i];
//           st[2][j]=i;
//       }
//    for(i=1;i<=j;i++)
//        v[st[2][i]]=-1;
////    for(i=1;i<=n;i++)
////        cout<<v[i]<<" ";
//    return 0;
//}


//#include <fstream>
//#include <iostream>
//#include <algorithm>
//#include <iomanip>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("nrlipsa2.in");
//ofstream fo("nrlipsa2.out");
//int n,i,j,poz[1000],neg[1000],x;
//float sol,s,k;
//int main()
//{
//    while(fi>>x){
//        if(x<0 and x>=-100)
//            neg[-x]++;
//        else
//            if(x>=0 and x<=100)
//            poz[x]++;
//    }
//    for(i=100;i>0;i--)
//        if(neg[i]==0)
//    {
//        fo<<-i;
//        return 0;
//    }
//    for(i=0;i<=100;i++)
//        if(poz[i]==0)
//    {
//        fo<<i;
//        return 0;
//    }
//    fo<<"nu exista";
//    return 0;
//}
//
//#include <fstream>
//#include <iostream>
//#include <algorithm>
//#include <iomanip>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("nrlipsa2.in");
//ofstream fo("nrlipsa2.out");
//int n,i,j,poz[1000],neg[1000],x;
//int main()
//{
//    cin>>n;
//    for(i=1;i<=n;i++)
//        cin>>a[i];
//
//    return 0;
//}

//#include <fstream>
//#include <iostream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("nrlipsa2.in");
////ofstream fo("nrlipsa2.out");
//int n,i,a[10000],k;
//void F(int &n,int a[],int &k){
//    if(n==0)
//
//        {if(a[n-1]%2==0)
//        {
//            while(a[n-1]<=k)
//                a[n-1]*=10;
//            k+=a[n-1];
//        }
//        n=n-1;
//    F(n,a,k);
//    }
//}
//int main()
//{
//    fi>>n;
//    for(i=1;i<=n;i++)
//        fi>>a[i];
//    F(n,a,k);
//    fo<<k;
//    return 0;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int prim(int x){
//    int i;
//    if(x==0 or x==1)
//        return 0;
//    for(i=2;i*i<=x;i++)
//        if(x%i==0)
//        return 0;
//    return 1;
//}
//void P(int a[],int n,int &s){
//    int ok=1,i;
//    if(n==1)
//    {
//        if(a[n-1]==0 or a[n-1]==1)
//            ok=0;
//        for(i=2;i*i<=a[n-1];i++)
//        if(a[n-1]%i==0)
//            ok=0;
//            if(ok==1)
//            s+=a[n-1];
//    }
//    else
//    {
//        if(a[n-1]==0 or a[n-1]==1)
//            ok=0;
//        for(i=2;i*i<=a[n-1];i++)
//        if(a[n-1]%i==0)
//            ok=0;
//            if(ok==1)
//            s+=a[n-1];
//        P(a,n-1,s);
//    }
//}
//int main()
//{
//
//    int n,a[10],i,rez,s=0;
//    fi>>n;
//    for(i=0; i<n; i++)
//        fi>>a[i];
//    P(a,n,s);
//    fo<<s;
//    return 0;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("palindrom_ciclic.in");
////ofstream fo("palindrom_ciclic.out");
//int nrUnu(int x){
//    int r,sol=0;
//    while(x)
//    {
//        r=x%2;
//        if(r==1)
//            sol++;
//        x/=2;
//    }
//    return sol;
//}
//void nrGr(int b[],int n){
//    int i,nrGr=0;
//    for(i=2;i<=n;i++)
//        if(b[i]!=b[i-1])
//        nrGr++;
//        fo<<nrGr+1<<endl;
//}
//void citire(int &n,int a[],int b[]){
//    int i;
//    fi>>n;
//    for(i=1;i<=n;i++)
//        {fi>>a[i];
//        b[i]=nrUnu(a[i]);
//        }
//}
//void sortare(int n,int a[],int b[]){
//    int i,j;
//    for(i=1;i<=n;i++)
//        for(j=i+1;j<=n;j++)
//        if(b[i]>b[j])
//        swap(a[i],a[j]),swap(b[i],b[j]);
//}
//void afisare(int n,int a[],int b[]){
//    int i;
//    for(i=1;i<=n;i++)
//        if(b[i]!=b[i+1])
//        fo<<a[i]<<'\n';
//    else
//        fo<<a[i]<<" ";
//}
//int main()
//{
//    int n,a[101],i,b[101],j;
//    citire(n,a,b);
//    sortare(n,a,b);
//    nrGr(b,n);
//    afisare(n,a,b);
//    return 0;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("palindrom_ciclic.in");
////ofstream fo("palindrom_ciclic.out");
//long long d,aux,gata,x;
//int main(){
//    cin>>x;
//    aux=x;
//    d=2;
// while(x!=1&& gata==0){
//     while(x%d==0)
//        x=x/d;
//    d++;
//    if(d*d>x)
//        gata=1;
//   }
//   if(x>1)
//    cout<<x;
//   else
//    cout<<d-1;
//}

//#include <iostream>
//#include <fstream>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("puterik.in");
////ofstream fo("puterik.out");
//int n,a[100000],b,i,maxi,x,nr1,nr2,k,ok,j,m,r;
//int main()
//{
//    cin>>n;
//    for(i=1;i<=n;i++)
//        cin>>a[i];
//    sort(a+1,a+n+1);
//    k=1;
//    for(i=1;i<n;i++)
//    {
//        if(a[i]==a[i+1])
//        {k++;
//        if(k>n/2)
//        {
//            cout<<"DA "<<a[i];
//            return 0;
//        }
//        }
//        else
//            k=0;
//    }
//    cout<<"NU";
//    return 0;
//}

//#include <iostream>
//#include <fstream>
//#include <cmath>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("chibrituri.in");
//ofstream fo("chibrituri.out");
//int vert[10],oriz[10],i,j,n,a[100][100],k,sol,ind,m,x;
//int main()
//{
//    fi>>n;
//    fi>>m;
//    vert[0]=4;
//    oriz[0]=2;
//    vert[1]=2;
//    oriz[1]=0;
//    vert[2]=2;
//    oriz[2]=3;
//    vert[3]=2;
//    oriz[3]=3;
//    vert[4]=3;
//    oriz[4]=1;
//    vert[5]=2;
//    oriz[5]=3;
//    vert[6]=3;
//    oriz[6]=3;
//    vert[7]=2;
//    oriz[7]=1;
//    vert[8]=4;
//    oriz[8]=3;
//    vert[9]=3;
//    oriz[9]=3;
//    //ora
//    for(i=0;i<=2;i++)
//    if(i<2)
//        for(j=0;j<=9;j++)
//    {
//        a[1][i*10+j]=vert[i]+vert[j];
//        a[2][i*10+j]=oriz[i]+oriz[j];
//    }
//    else
//        for(j=0;j<=3;j++)
//    {
//        a[1][i*10+j]=vert[i]+vert[j];
//        a[2][i*10+j]=oriz[i]+oriz[j];
//    }
//
//    for(i=0;i<=5;i++)
//        for(j=0;j<=9;j++)
//    {
//        a[1][i*10+j]=vert[i]+vert[j];
//        a[2][i*10+j]=oriz[i]+oriz[j];
//    }
////    for(i=1;i<=2;i++)
////    {for(j=0;j<=24;j++)
////        fo<<j<<" "<<a[i][j]<<" ";
////        fo<<endl;
////    }
//bool ok=0;
//int sol1i,sol1j,sol2i,sol2j;
//    for(i=0;i<=23;i++)
//        for(j=0;j<=59;j++)
//        if((a[1][i]+a[1][j])==n and (a[2][j]+a[2][i])==m)
//        {
//            if(ok==0)
//            {
//                sol1i=i;
//                sol1j=j;
//                sol2i=i;
//                sol2j=j;
//                ok=1;
//            }
//            else
//            {
//                sol2i=i;
//                sol2j=j;
//            }
//            k++;
//        }
//        fo<<k<<'\n';
//        if(sol1i<10)
//            fo<<0;
//        fo<<sol1i<<":";
//        if(sol1j<10)
//            fo<<0;
//        fo<<sol1j<<'\n';
//        if(sol2i<10)
//            fo<<0;
//        fo<<sol2i<<":";
//        if(sol2j<10)
//            fo<<0;
//        fo<<sol2j;
//    return 0;
//}


//#include <fstream>
//#include <iostream>
//#include <algorithm>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("divigrup.in");
//ofstream fo("divigrup.out");
//int n, i,m,a[1000],b[10000],sol,j,fr[1000],l;
//int nrdiv(int x){
//    int exp=0,nr_div=0;
//    while(x%2==0)
//        {
//            exp++;
//            x/=2;
//        }
//        nr_div=exp+1;
//        int d=3;
//        while(d*d<=x)
//        {
//            exp=0;
//            while(x%d==0)
//            {
//                exp++;
//                x/=d;
//            }
//            nr_div*=(exp+1);
//            d+=2;
//        }
//        if(x!=1)
//            nr_div*=2;
//    return nr_div;
//}
//int main()
//{
//    int k=0,aux;
//    fi>>n;
//    for(i=1;i<=n;i++)
//    {
//        fi>>a[i];
//        sol=nrdiv(a[i]);
//        fr[sol]++;
//        b[i]=sol;
//        if(sol>m)
//            m=sol;
//        if(fr[sol]==1)
//            k++;
//    }
//    for(i=1;i<=n;i++)
//        for(j=i;j<=n;j++)
//        if(b[i]>b[j])
//    {
//        swap(a[i],a[j]);
//        swap(b[i],b[j]);
//    }
//    else
//        if(b[i]==b[j])
//            if(a[i]<a[j])
//                swap(a[i],a[j]);
////    for(i=1;i<=n;i++)
////        if(fr[i])
////            fo<<fr[i]<<" ";
//    fo<<k<<'\n';
//    j=n;
//    for(i=m;i>=1;i--)
//        if(fr[i])
//    {
//        fo<<fr[i]<<" ";
//        for(;j>=1 and b[j]==i;j--)
//            fo<<a[j]<<" ";
//        fo<<'\n';
//    }
//    return 0;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("prim013.in");
////ofstream fo("prim013.out");
//int q,p,n,nr,a[100],i,k,c,sol,nrcif;
//int main(){
//    fi>>n>>c;
//    if(c>n)
//    {
//        fo<<0;
//        return 0;
//    }
//    while(n)
//        a[++k]=n%10,n/=10;
//    for(i=1;i<k;i++)
//    {
//        nrcif+=9;
//        if(i>2)
//            nrcif*=10;
//        sol+=nrcif;
//    }
//    for(i=1;i<=k;i++)
//
//    fo<<sol;
//}

//#include <fstream>
//#include <iostream>
//#include <cmath>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("cifre15.in");
////ofstream fo("cifre15.out");
//int a,b,c;
//int f(int n,int i){
//    int aux=pow(2,n-i+1);
//    while()
//}
//int main()
//{
//    fi>>n;
//    f(n);
//    return 0;
//}

//#include <fstream>
//#include <iostream>
//#include <cmath>
//#include <algorithm>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int a,b;
//int f(int a,int b)
//{
//    if(a<=0 or b<=0)
//        return 1;
//    else
//        return a*b+f(a-1,b-1);
//}
//
//int main()
//{
//	int n;
//	cin >> a>>b;
//	cout<<f(a,b);
//	return 0;
//}


//#include <fstream>
//#include <algorithm>
//#include <cmath>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
////ifstream fi("joc20.in");
////ofstream fo("joc20.out");
//int n,i,a[100002],mini[100002],st,dr,pas,sumA,sumT,m;
//
//int main() {
//  fi>>n>>m;
//  for(i=1;i<=n;i++)
//      fi>>a[i];
//  sort(a+1,a+n+1);
//  for(i=1;i<=n;i++)
//    fo<<a[i]<<" ";
//  fo<<endl;
//  //citire
//  pas=1;
//  for(i=1;i<=100000;i++)
//    if(i<=a[pas])
//        mini[i]=a[pas];
//  else
//   {while(a[pas]<i)
//        pas++;
//        mini[i]=a[pas];
//        }
//  for(i=1;i<=m;i++)
//    {
//        fi>>st>>dr;
//        fo<<mini[st]<<endl;
//    }
//  return 0;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//ifstream fi("joc20.in");
//ofstream fo("joc20.out");
//int i,j,a[4000],sol,k,n,dr,st,maxi,b[4000],sumA,sumT;
//int main() {
//    fi>>n;
//    for(i=1;i<=n;i++)
//        fi>>a[i];
//    for(i=1;i<=n;i++)
//        fi>>b[i];
//        st=1;
//        dr=n;
//    for(i=1;i<=n;i++)
//    {
//        if(i%2==1)
//        {
//            if(b[i]==1)
//                sumA+=a[st++];
//            else
//                sumA+=a[dr--];
//        }
//        else
//            {
//            if(b[i]==1)
//                sumT+=a[st++];
//            else
//                sumT+=a[dr--];
//        }
//    }
//    if(sumA>sumT)
//        fo<<sumA<<" "<<1;
//    else
//        if(sumA<sumT)
//        fo<<sumT<<" "<<2;
//    else
//    fo<<sumA<<" "<<0;
//  return 0;
//}

//#include <iostream>
//#include <fstream>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("romane.in");
//ofstream fo("romane.out");
//int i,j,lit[6],nrc,c,k,n,dr,st,maxck,ap[40000],aux;
//int unit(int x){
//    if(x!=0)
//    {
//        if(x<=3)
//        lit[1]+=x;
//    else
//        if(x<=8 and x>3)
//    {
//        lit[2]++;
//        if(x==4)
//        lit[1]++;
//        else
//        {
//        lit[1]=lit[1]+x%5;}
//    }
//    else
//    {
//        lit[3]++;
//        lit[1]++;
//    }
//    }
//}
//int zeci(int x){
//if(x!=0)
//    {
//        if(x<=3)
//        lit[3]+=x;
//    else
//        if(x<=8 and x>3)
//    {
//        lit[4]++;
//        if(x==4)
//        lit[3]++;
//        else
//        {
//        lit[3]=lit[3]+x%5;}
//    }
//    else
//    {
//        lit[5]++;
//        lit[3]++;
//    }
//    }
//}
//int sute(int x){
//    lit[5]+=x;
//}
//int main()
//{
//    fi>>n;
//    for(i=1;i<=n;i++)
//    {
//        aux=i;
//        k=1;
//        while(aux)
//        {
//            if(k==1)
//                unit(aux%10);
//            else
//                if(k==2)
//                zeci(aux%10);
//            else
//                sute(aux%10);
//            k++;
//            aux/=10;
//        }
//    }
//    for(i=1;i<=5;i++)
//        fo<<lit[i]<<" ";
//    return 0;
//}

//#include <iostream>
//#include <algorithm>
//#include <fstream>
//#include <cstring>
//using namespace std;
////ifstream fi("intrare.in");
////ofstream fo("iesire.out");
//ifstream fi("colier.in");
//ofstream fo("colier.out");
//int i,n,a[50001],sol1,j,b[50001],T,ok,nr,st;
//int schi(int x){
//    int mini,maxi,k=0,ind1=0,ind2=0;
//    mini=10;
//    maxi=0;
//    while(x){
//        if(x%10>maxi)
//            maxi=x%10,ind1=k;
//        if(x%10<mini)
//            mini=x%10,ind2=k;
//        k++;
//        x/=10;
//    }
//    if(ind1>ind2)
//        return maxi*10+mini;
//    else
//        return mini*10+maxi;
//}
//int main()
//{
//    fi>>T>>n;
//    for(i=1;i<=n;i++)
//        {
//            fi>>a[i];
//            a[i]=schi(a[i]);
//            if(a[i]%10>a[i]/10)
//                b[i]=1;
//            else
//                b[i]=2;
//            if(T==1)
//                if(b[i]==1)
//                sol1++;
//        }
//        if(T==1)
//        fo<<sol1;
//        else
//        {
//            nr=n;
//            st=1;
//            b[n+1]=b[1];
//            while(st<=n)
//                {
//                if(b[st]==b[st+1])
//            {
//                nr--;
//            }
//            st++;
//            }
//        fo<<nr+(nr==0);
//        }
//}

//#include <fstream>
//#include <iostream>
//#include <cstring>
//#include <iomanip>
//using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
//int lin,col,i,j,n,m,x[2],c[2];
//char s[256],sep[]="=",*bc,*nr,sep1[]="-+";
//int main()
//{
//    fi>>n;
//    fi.getline(s,256);
//    for(i=1;i<=n;i++)
//    {
//        fi.getline(s,258);
//        bc=strtok(s,sep);
//        nr=strtok(bc,sep1);
//        while(nr){
//            fo<<nr<<" ";
//            nr=strtok(0,sep1);
//        }
//        fo<<endl;
//    }
//}

#include <fstream>
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
//ifstream fi("intrare.in");
//ofstream fo("iesire.out");
ifstream fi("fructe.in");
ofstream fo("fructe.out");
int n,i,p,b;
int main()
{
    fi>>n;
    for(i=1;i<=n;i++)
    {
        fi>>p>>b;
        if(b%2==0)
            fo<<0<<'\n';
        else
            fo<<1<<'\n';
    }
}