//A

#include<iostream>

using namespace std;
const int Max = 1e6;
int main(){
    int n,m,s[Max];
    int i=0,j=0;
    cin>>n;
    while(n--){
        cin>>m;
        while(1){
            if(i!=0 && s[i] - m==1){
                i--;
                j++;
                continue;
            }
            else if(i!=0 && m - s[i]==1){
                j++;
            }
            else{
                i++;
                s[i] = m;
            }
            break;
        }
    }
    cout<<j;
    return 0;
}

//B*(一直在超时)

#include<cstdio>
int a[1000000],p[1000000];
int i,j,m=1000000,tail=0,T,N;
void intit(){
    a[0]=0;a[1]=0;
    for(i=2;i<m;i++){
        a[i]=1;
        for(j=2;j*j<=i;j++){
            if(i%j==0){a[i]=0;break;}
        }
        if(a[i]){p[tail]=i;tail++;}
    }
}
int main(){
    intit();
    scanf("%d",&T);
    while(T--){
        scanf("%d",&N);
        for(i=0;p[i]<=N/2;i++){
            if(a[N-p[i]]==1){
                printf("%d %d\n",p[i],N-p[i]);
                break;
            }
        }
    }
    return 0;
}

//C

#include<iostream>
using namespace std;
char s[21][21];
int w,h,sum;
void wer(int x,int y){
    int direct[4][2]={1,0,-1,0,0,1,0,-1};
    for(int i=0;i<4;i++){
        if(x+direct[i][0]>=h || y+direct[i][1]>=w || x+direct[i][0]<0 || y+direct[i][1]<0)continue;
        if(s[x+direct[i][0]][y+direct[i][1]]=='.'){
            s[x+direct[i][0]][y+direct[i][1]]='@';
            sum++;
            wer(x+direct[i][0],y+direct[i][1]);

        }
    }
}
int main(){
    int ii,jj;
    while(1){
        sum=0;
        cin>>w>>h;
        if(w==0 && h==0)break;
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                cin>>s[i][j];
                if(s[i][j]=='@'){ii=i;jj=j;sum++;}
            }
        }
        wer(ii,jj);
        cout<<sum<<endl;
    }
    return 0;
}

//D

#include<iostream>
using namespace std;
int main(){
    int n,m,i=0;
    cin>>n>>m;
    if(m%n!=0)cout<<"-1";
    else{
        int x=m/n;
        while(x!=1){
            if(x%2==0){
                x=x/2;
                i++;
            }
            else if(x%3==0){
                x=x/3;
                i++;
            }
            else{
                break;
            }

        }
        if(x>1)cout<<"-1";
        else cout<<i;
    }
    return 0;
}

//E

#include <iostream>
#include <cstdio>
using namespace std;

int N,K,res;
int tail,a[100][2];
int x[10]={0},y[10]={0};
void retu(int aa,int t){
    if(t == K) {
        res++;
        return ;
    }
    if(aa>=tail) return ;
    int p1 = a[aa][0],p2 = a[aa][1];
    if(!x[p1] && !y[p2]){
        x[p1] = 1;
        y[p2] = 1;
        retu(aa+1,t+1);
        x[p1] = 0;
        y[p2] = 0;
    }
    retu(aa+1,t);
}
int main(){
    while(scanf("%d %d",&N,&K)){
        if(N == -1 && K == -1) break;
        res = 0;tail = 0;
        for(int i = 0;i<N;i++){
            for(int j = 0;j<N;j++){
                char c;scanf(" %c",&c);
                if(c == '#') {a[tail][0] = i;a[tail][1]=j;tail++;}
            }
        }
        retu(0,0);
        printf("%d\n",res);
    }

    return 0;
}

//F

#include<iostream>
using namespace std;
int n,sum,s[1010],hs[1010];
int Max(int a,int b){
    if(a>b)return a;
    else return b;
}
int main(){
    while(1){
        sum=0;
        cin>>n;
        if(n==0)break;
        for(int i=0;i<n;i++){
            cin>>s[i];
        }
        for(int i=0;i<n;i++){
            hs[i] = s[i];
            for(int j=0;j<i;j++){
                if(s[j]<s[i]){
                    hs[i] = Max(hs[i],hs[j]+s[i]);
                }
            }
        }
        for(int i=0;i<n;i++){
            sum = Max(sum,hs[i]);
        }
        cout<<sum<<endl;
    }
    return 0;
}

//G

#include<iostream>

using namespace std;
int prime(int a){
    for(int i=2;i*i<=a;i++){
        if(a%i==0)return 0;
    }
    return 1;
}
int main(){
    int a;
    for(int i=1;;i++){
        cin>>a;
        if(a<=0)break;
        cout<<i<<": ";
        if(a==1 || a==2)
            cout<<"no\n";
        else if(prime(a))
            cout<<"yes\n";
        else
            cout<<"no\n";
    }
    return 0;
}

//H

#include <iostream>
using namespace std;
int a,b,first[110],second[110],x,chang;
void sce(){
    while(1){
        chang = 1;
        for(int i=0;i<b;i++){
            int z=second[i];
            if(first[z-1]>first[z]){
                x = first[z-1];first[z-1] = first[z];first[z] = x;
                chang = 0;
            }

        }
        if(chang)break;
    }
    for(int i=0;i<a-1;i++){
        if(first[i]>first[i+1]){cout<<"NO\n";chang =0;break;}
    }
    if(chang)cout<<"YES\n";
}
int main(){
    int n;
    cin>>n;
    while(n--){
        cin>>a>>b;
        for(int i=0;i<a;i++)cin>>first[i];
        for(int i=0;i<b;i++)cin>>second[i];
        sce();
    }
    return 0;
}

//I

#include<iostream>
#include<cstdio>
using namespace std;
short n;
int m1,m2;
int sum;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>m1>>m2;
        printf("Case %d: ",i);
        sum = m2;
        for(int j=1;;j++){
            if(sum % m1 == 0){cout<<j<<endl;break;}
            sum = (sum*10+m2)%m1;
        }
    }
    return 0;
}

//J

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const double pi = acos(-1);
const int Max=1e4+10;
int T,m,n,x;
double lol,maest,ever,lon[Max];

double max(double a,double b){
    if(a>b) return a;
    else return b;
}
int main(){
    cin>>T;
    while(T--){
        maest=0;
        cin>>n>>m;
        for(int i=0;i<n;i++){cin>>x;lon[i]=(pi)*x*x;maest = max(maest,lon[i]);}
        m++;
        ever = maest/m;
        while(maest-ever>1e-5){
            lol = (ever+maest)/2;
            int sum1=0;
            for(int i=0;i<n;i++){
                sum1+=int(lon[i]/lol);
            }
            if(sum1>=m) ever=lol;
            else maest=lol;
        }
        printf("%.4lf\n",ever);

    }
    return 0;
}

//k

#include<iostream>
#include<string>
#include<cstring>
#include<map>
using namespace std;
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        string fruit,place;
        int num,n;
        cin>>n;
        map<string,map<string,int> >a;      
        map<string,map<string,int> >::iterator p;      
        while(n--){
            cin>>fruit>>place>>num;
            a[place][fruit]+=num;
        }
        for(p=a.begin();p!=a.end();p++){
            cout<<p->first<<endl; 
            map<string,int>::iterator p1;     
            for(p1=p->second.begin();p1!=p->second.end();p1++)
                cout<<"   |----"<<p1->first<<"("<<p1->second<<")"<<endl;
        }
        if(T) cout<<endl;
    }
    return 0;
}

//L

#include<iostream>
#include<algorithm>
using namespace std;

int T,n,m,a,b,sum1,sum2,sum3,sum4;
int main(){
    cin>>T;
    while(T--){
        cin>>n>>m>>a>>b;
        sum1=max(n*(m-b-1),n*b);
        sum2=max((n-1-a)*m,a*m);
        sum3=max(sum1,sum2);
        cout<<sum3<<endl;
    }
    return 0;
}

//M

#include<iostream>
#include<iostream>
using namespace std;
int n,k;
int err[110][110];

int dfs(int a,int b){
    if(b==1){
        for(int i=0;i<100;i++)err[a][i+1]=err[a][i];
        return 0;
    }
    for(int i=0;i<b-1;i++){
        err[a+1][i] = err[a][i+1]-err[a][i];
    }
    dfs(a+1,b-1);
    for(int i=b;i<100;i++){
        err[a][i] = err[a][i-1]+err[a+1][i-1];
    }
    return 0;
}
int main(){
    int T;
    cin>>T;
    while(T--){
        cin>>n>>k;
        for(int i=0;i<n;i++)cin>>err[0][i];
        dfs(0,n);
        for(int i=n;i<n+k;i++){cout<<err[0][i];if(i==n+k-1)break;cout<<" ";}
        cout<<endl;
    }
    return 0;

}

//N

#include<iostream>
#include<cstdio>
using namespace std;

const int Max=1e6+10;
int T,n;
double s[Max];
void sum1(){
    double sm=0;
    for(int i=1;i<=100000000;i++){
    sm+=1/double(i);
    if(i%100==0)s[i/100]=sm;
    }
}

int main(){
    sum1();
    cin>>T;
    for(int i=1;i<=T;i++){
        cin>>n;
        double su=s[n/100];
        for(int i=n/100*100+1;i<=n;i++){su+=(1/double(i));}
        printf("Case %d: %.9lf\n",i,su);

    }
    return 0;
}

https://vjudge.net/contest/362412#problem/G