2021-04-24

//#include<iostream>
//#include<algorithm>
//using namespace std;
//const int MAXN=1001;
//int a[MAXN],maxLen[MAXN];
//int main(){
//    int N=1;
//    while (cin>>a[N])maxLen[N]=1,N++;    //初始化每个值为1 
//    for (int i =2;i<N;i++)
//    {     //求以i为终点的最大子序列 
//        for (int j=1;j<i;j++)
//        { //查看i之前的最大子序列是否需要改变 
//            if (a[i]>=a[j])
//            {
//                maxLen[i] =max(maxLen[i],maxLen[j]+1);
//            }
//        }
//    }
//    cout<<*max_element(maxLen+1,maxLen+N);
//    return 0;    
//} 
//300 250 275 252 200 138 245

//#include<bits/stdc++.h>
//using namespace std;
//int n,m,tree[101]={0};
//int main()
//{
//      int x,y,root,dnum,max=0,sum;
//      cin>>n>>m;
//      for(int i=1;i<=m;i++)
//      {
//             cin>>x>>y;
//             tree[y]=x;
//      }
//      for(int i=1;i<=n;i++)       //找出树根
//      {
//             if (tree[i]==0)
//               {root=i;
//                break;
//               }
//      }
//      cout<<root<<endl;
//      for(int i=1;i<=n;i++)    //找孩子最多的结点
//      {
//             sum=0;
//             for(int j=1;j<=n;j++)    if(tree[j]==i) sum++;
//              if  (sum>max)
//                {
//                   max=sum;
//                   dnum=i;
//                      }      
//      }
//      cout<<dnum<<endl;
//      for(int i=1;i<=n;i++)   //找孩子最多节点的孩子
//      {
//         if (tree[i]==dnum)
//         cout<<i<<" ";
//      }
//      return 0;
//}

//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int n;
//    cin>>n;
//    int a[n+1],b[n+1];//a表示当前站点鱼单价,b表示单条鱼运到下一站的费用
//    for(int i=1;i<=n;i++){
//        cin>>a[i]>>b[i]; 
//    } 
//    int s=0,now;
//    s+=a[1];//第一站花费
//    now=a[1];//第一站选择鱼的费用 
//    for(int i=2;i<=n;i++){//第2站到第n站 
//        //i号吃的鱼,有两种选择:1.上一站运过来(也就是上一站吃的鱼费用加运输费 2.本站的鱼费用 
//        now=min(now+b[i-1],a[i]);
//        s+=now;
//    }
//    cout<<s;
//    return 0;
//} 

////搜索回溯 
//#include <iostream>
//using namespace std;
//int c;                 //载重量
//int n;              //集装箱数量
//int w[100];         //集装箱重量
//int cw;             //c当前载重量
//int bestw;          //c当前最优载重量
//int r;              //剩余集装箱重量
//int x[100];         //当前解
//int bestx[100];      //当前最优解
// 
//void Backtrack(int i){
//    if(i > n){
//    //当前解由于最优解,更新之
//        if(cw > bestw){
//            for(int j = 1; j <= n; j++) //保存那个箱子装载 
//                bestx[j] = x[j];
//            bestw = cw;
//        }
//    }else{
//        //搜索子树,放入或不放入
//        r -= w[i];              //剩余容量集合去掉w[i]
//        if(cw + w[i] <= c){     //可放入,且放入   搜索左子树
//            x[i] = 1;           //放入
//            cw += w[i];
//            Backtrack(i+1);
//            cw -= w[i];
//        }
//           if(cw + r > bestw){//剩余容量集合依然是去掉w[i],因为w[i]不放入 //搜索右子树  箱子总重量大于c当前最优载重量 
//              x[i] = 0;
//            Backtrack(i+1);
//        }
//        r += w[i];              //回溯
//    }
//}
//int main(){
//    cin>>n>>c;
//    cw = 0;             //每组样例初始化
//    r = 0;
//    bestw = 0;
//    for(int i = 1; i <= n; i++){
//            cin >> w[i];
//            r += w[i];
//    }
//    Backtrack(1);
//    cout<<bestw; 
//    return 0;
//}

//#include<iostream>
//using namespace std;
//int m,n,w[50001],c[50001],f[50001];
//int main()
//{
//    cin>>m>>n;
//    for(int i=1;i<=n;i++){
//        cin>>w[i]>>c[i];
//    }
//    for(int i=1;i<=n;i++)
//    for(int j=w[i];j<=m;j++){
//        if(f[j-w[i]]+c[i]>f[j])f[j]=f[j-w[i]]+c[i];
//    }
//    cout<<f[m]<<endl;//最优解
//}

//#include<bits/stdc++.h>
//using namespace std;
//int m,n,w[50001],c[50001],f[50001];
//int main(){
//    cin>>m>>n;
//    for(int i = 1; i <= n; i++)
//         cin>>w[i]>>c[i];
//    for(int i = 1; i <= n; i++)
//    for(int x=1;x<=m/w[i];x++)
//    for(int j = m; j >= w[i]; j--){
//         f[j]=max(f[j],f[j-w[i]]+c[i]);
//    }
//    cout<<f[m]<<endl;
//    return 0;
//}

//#include<bits/stdc++.h>
//using namespace std;
//int m,n,w[50001],c[50001],f[50001];
//int main(){
//    cin>>m>>n;
//    for(int i = 1; i <= n; i++)
//     cin>>w[i]>>c[i];
//    for(int i = 1; i <= n; i++)
//    for(int x=1;x<=m/w[i];x++)
//     for(int j = m; j >= w[i]; j--)
//     {
//         f[j]=max(f[j],f[j-w[i]]+c[i]);
////     for(int i=1;i<=m;i++){
////         cout<<f[i]<<" ";
////     }
////     cout<<endl; 
//     }
//     cout<<f[m]<<endl;
//     return 0;
//}


//#include<bits/stdc++.h>
//using namespace std;
//int m,n,w[31],c[31],f[31][201];
//int main(){
//    cin>>m>>n;
//    for(int i = 1; i <= n; i++)
//     cin>>w[i]>>c[i];
//    
//    for(int i = 1; i <= n; i++)
//     for(int j = 0; j <= m; j++)
//     {
//         if(j>=w[i])
//        f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+c[i]);
//        else 
//        f[i][j]=f[i-1][j];
//     }
//     cout<<f[n][m]<<endl;
//     return 0;
//}

//#include<iostream>
//using namespace std;
//int main(){
//    int a[1001]={0},n;
//    cin>>n;
//    for(int i=1;i<=n;i++)cin>>a[i];
//    for(int i=2;i<=n+1;i++){
//        a[i]=min(a[i]+a[i-1],a[i-2]+a[i]*2);
//    }
//    cout<<a[n+1];
//    return 0;
//}

//#include<iostream>
//#define maxn 105
//using namespace std;
//int n; //塔的层数 
//int data[maxn][maxn]; // 存数塔原始数据
//int dp[maxn][maxn];   //自底向上,记录从点(i,j)出发到数塔底层的路径最大和 
//
//void tower_DP()//动态规划求最大值 
//{
//        for(int i=0;i<n;i++)  //填数塔最底层
//        {
//            dp[n-1][i]=data[n-1][i];
//        }        
//for(int i=n-2;i>=0;i--)   //更新除数塔最底层外的各个点的路径最大和 
//    {
//        for(int j=0;j<=i;j++)
//        {
//        dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+data[i][j];//状态转移方程 
//        }
//    }    
//    cout<<"最大值为:"<<dp[0][0]<<endl;
//}
//
//void print()//动态规划输出最大值路径 
//{
//    int j=0;
//    cout<<"最大路径:"<<data[0][0];
//    for(int i=1;i<n;i++)
//    {
//        if(dp[i-1][j]-data[i-1][j]==dp[i][j])
//        cout<<"->"<<data[i][j];
//        else{
//            cout<<"->"<<data[i][j+1];
//            j++;
//        }
//    
//            
//    }
//    cout<<endl;
//}
//
//int main()
//{
//    int i,j;
//    cin>>n;
//    for(i=0;i<n;i++)//输入塔的节点 
//    for(j=0;j<=i;j++)
//    cin>>data[i][j];
//    tower_DP();
//    print()    ;        
//    return 0;
//}

///*
//389 207 155 300 299 170 158 65
//*/

//#include<iostream> 
//#include<cstring>
//#define MAXN 1000
//using namespace std;
//int a[MAXN+10];//导弹飞来时的高度 
//int l[MAXN+10];//拦截导弹最低高度 
//int main()
//{
//    memset(a,0,sizeof(a));
//    memset(l,0,sizeof(l));
//    int n=1;
//    while(cin>>a[n])
//    {
//        n++;
//    }
//    int k=1;//拦截导弹系统数
//    int p,j=1;
//    l[k]=a[1]; 
//    for(int i=2;i<=n;i++) 
//    {
//        p=0;//注意每次循环时需要p=0 
//        for(int j=1;j<=k;j++)//注意,j<=k //扫描现有的系统,寻找看是否有可用的系统 
//        {
//            if(l[j]>=a[i])//可用使用a[i]来拦截 
//            {
//                if(p==0) p=j; //首次发现可用的系统 
//                else if(l[p]>l[j]) p=j;//如果同时满足例如l[1]=155>65,l[2]=158>65,则应该应将最小值赋值给最小拦截系统 
//            }
//        }
//        if(p==0)
//        {
//            k++;//如果发现a[i]>l[j],则应该增加一个系统 
//            l[k]=a[i];//更新新系统的最小值 
//        }
//        else l[p]=a[i];//更新原系统的拦截最小值 
//    }
//    cout<<k<<endl;
//    return 0;
//}

//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int n,a[10001];
//    cin>>n;
//    int ave=0,step=0;
//    for(int i=1;i<=n;i++){
//        cin>>a[i];//读入各堆牌张数,求总张数ave 
//        ave+=a[i];
//    }
//    ave/=n;//求牌的平均张数ave 
//    for(int i=1;i<=n;i++){//每堆牌的张数减去平均数 
//        a[i]-=ave;
//    }
//    int i=1,j=n;
//    while(a[i]==0&&i<n)i++;//过滤左边的0 
//    while(a[j]==0&&j>1)j--;//过滤右边的0 
//    while(i<j){
//        a[i+1]+=a[i];//将第i堆牌移到第i+1堆中去 
//        a[i]=0;//第i堆牌移走后变为0 
//        step++;//移牌步数计数 
//        i++;//对下一堆牌进行循环操作 
//        while(a[i]==0&&i<j)i++;//过滤移牌过程产生的0 
//    }
//    cout<<step<<endl;
//    return 0;
//}

//#include<iostream>
//#include<cstring> 
//#include<cstdio>
//#include<algorithm>
//using namespace std;
//int main()
//{
//    int n,r;//n表示n个人  r表示r个水龙头 
//    int T[501],W[100];//T[i]打水时间,W[i]为等待时间 
//    
//    while(cin>>n>>r)
//    {
//        memset(W,0,sizeof(W));
//        int sum=0;
//        for(int i=0;i<n;i++)
//        {
//            cin>>T[i];
//        }
//        sort(T,T+n);//打水时间由低到高排序 
//        for(int i=0;i<n;i++)
//        {
////            sort(W,W+r);//等待时间少的排在前面
//            sum+=T[i]+W[0];
//            W[0]+=T[i];
//        } 
//        printf("%d",sum);
//        cout<<endl;
//    }
//}


//#include<iostream>
//using namespace std;
//int main(){
//    double sum=0,h=100,i=1;
//    sum += h;
//    while(i<=9){
//        h /= 2;
//        sum += h*2;
//        i++;
//    }
//    cout<<sum;
//    return 0;
//} 

//#include<iostream>    
//using namespace std;
//int main(){
//    int a,i=1,arr[101];
//    cin>>a;//8  0001
//    while(true){
//        if(a==0)break;
//        arr[i]=a%2;
//        a=a/2; 
//        i=i+1;
//    }
//    for(int j=i-1;j>=1;j--){
//        cout<<arr[j];
//    }
//    
//    return 0;
//} 

//#include<iostream>    
//using namespace std;
//int main(){
//    int i;
//    for( i=7-1;i>=1;i--){
//        cout<<i<<endl;
//    }
//    cout<<i;
//    
//    return 0;
//} 

//#include<iostream>
//using namespace std; 
//int main(){
////    double a;
////    double b;
////    double c;
////    double max;
////    cin>>a>>b>>c;
////    max=a;
////    if(max<b){
////        max=b;
////    }
////    if(max<c){
////        max=c;
////    }
////    cout<<max;    
//    long long  i=1,sum=0,n;
//    while(i<=10){
//        cin>>n;
//        sum=sum+n;
//        i=i+1;
//    }
//    cout<<sum;
//    return 0;
//}


//#include<iostream>
//using namespace std; 
//int main(){
//    int a,i;
//    bool flag=true;
//    cin>>a;
//    i=2;
//    while(i<a){
//        if(a%i==0){
//            flag=false;
//            break;;;;;;;
//        }
//        i=i+1;
//    }
//    if(flag==true){
//        cout<<a<<"是质数"<<endl; 
//    }else{
//        cout<<a<<"不是质数"<<endl; 
//    }
//    
//
//    return 0;
//}

//#include<iostream>
//
//using namespace std;
//int dayNumber(int a,int b,int c){
//    int days=0;
//    bool flag=false;//false表示平年 
//    if((a%4==0 && a%100!=0)||a%400==0){
//        flag=true; 
//    }
//    switch(b){
//        case 1:days=c;break;
//        case 2:days=31+c;break;
//        case 3:days=31+28+flag+c;break;
//        case 4:days=31+28+31+flag+c;break;
//        case 5:days=31+28+31+30+flag+c;break;
//        case 6:days=31+28+31+30+31+flag+c;break;
//        case 7:days=31+28+31+30+31+30+flag+c;break;
//        case 8:days=31+28+31+30+31+30+31+flag+c+1;break;
//        case 9:days=31+28+31+30+31+30+31+30+flag+c+1;break;
//        case 10:days=31+28+31+30+31+30+31+30+31+flag+c+1;break;
//        case 11:days=31+28+31+30+31+30+31+30+31+30+flag+c+1;break;
//        case 12:days=31+28+31+30+31+30+31+30+31+30+31+flag+c+1;break;
//    }
//    return days;
//} 
//
//int main(int a){
//
//    int starYear,starMonth,starDay;
//    int endYear,endMonth,endDay;
//    int daySum=0;
//    cout<<"请输入开始的时期:" <<endl;
//    cin>>starYear>>starMonth>>starDay;
//    cout<<"请输入结束的时期:" <<endl;
//    cin>>endYear>>endMonth>>endDay;
////    dayNumber(starYear,starMonth,starDay); 
//    if(starYear==endYear){
//        daySum=dayNumber(endYear,endMonth,endDay)-dayNumber(starYear,starMonth,starDay);
//    }else{
//        for(int i=starYear+1;i<endYear;i++){
//            if((i%4==0 && i%100!=0)||i%400==0){
//                daySum=daySum+366; 
//            }else{
//                daySum=daySum+365;//daySum += 366;
//            }
//        }
//        if((starYear%4==0 && starYear%100!=0)||starYear%400==0){
//            daySum=daySum+366-dayNumber(starYear,starMonth,starDay)+ dayNumber(starYear,starMonth,starDay); 
//        }else{
//            daySum=daySum+365-dayNumber(starYear,starMonth,starDay)+ dayNumber(starYear,starMonth,starDay); 
//        }
//    }
//    cout<<daySum;
//    return 0;
//}

//#include<iostream>
//#include<cstring>
//using namespace std; 
//int main(){
//    string s;
//    char c[100];
//    cin>>s;
//    cin>>c;
//    cout<<s.length()<<endl;
//    cout<<strlen(c)<<endl;
//    return 0;
//} 

//#include<iostream>
//#include<cstring>
//#include<algorithm>
//
//using namespace std;
//int main(){
//    char s[300]={0};
//    int a[31],b[31],l=0,x=0,t=0;
//    cin>>s;
////    cout<<s<<endl;
//    l=strlen(s);
//    for(int i=0;i<l;i++){
//        if(s[i]==','){
//            a[t]=x;
//            t++;
//            x=0;
//        }else{
//            x=x*10+(s[i]-'0');
//        }
//        if(i==l-1){
//            a[t]=x;
//            t++;
//        }
//    }
//    for(int i=0;i<t;i++){
//        b[i]=a[i];
//    }
//    sort(a+0,a+t-1);
//    cout<<t<<endl;
//    cout<<a[0]<<endl;
//    for(int i=t-1;i>=0;i--){
//        cout<<a[i];
//        if(i!=0){
//            cout<<",";
//        }
//    }    
//    cout<<endl;
//    for(int i=0;i<t;i++){
//        if(b[i]<=26&&b[i]>=1){
//            cout<<char(b[i]+64);
//        }else if(b[i]==214){
//            cout<<"*";
//        }
//    }
//
//    return 0;
//}

//#include<iostream>
//using namespace std;
//int main(){
//    bool tt[101][101]={false};
//    int t[101]={0},a,k,N,index;
//    cin>>N;
//    for(int i=1;i<=N;i++){
//        cin>>a>>k;
//        for(int j=1;j<=k;j++){
//            cin>>index;
//            t[index]++;
//            tt[index][a]=true;
//        }
//    }
//    
//    int maxIndex=1;
//    for(int i=1;i<=100;i++){
//        if(t[maxIndex]<t[i]){
//            maxIndex=i;
//        }
//    }
//    
//    cout<<maxIndex<<endl;
//    
//    for(int i=1;i<=100;i++){
//        if(tt[maxIndex][i]){
//            cout<<i<<" ";
//        }
//    }
//    return 0;
//}

//#include<iostream>
//#include<algorithm>
//using namespace std;
//int main(){
//    int n,a[501],b[501],sum=0;
//    cin>>n;
//    for(int i=1;i<=n;i++){
//        cin>>a[i];
//        if(a[i]%2==1){
//            sum++;
//            b[sum]=a[i];
//        }
//    }
//    
//    sort(b+1,b+sum+1);
//    for(int i=1;i<sum;i++){
//        cout<<b[i]<<",";
//    }
//    cout<<b[sum];
//    
//    return 0;
//} 

//#include<iostream>
//#include<iomanip>
//#include<cstdio>
//using namespace std;
//int main(){
//    double a;
//    bool flag=false;
//    char c;
//    cin>>c>>a;
//    if(c=='V'){
//        if(a<=500){
//            a=0.85*a; 
//        }else if(a<=1000){
//            a=0.8*a;
////            a *=0.8;
//        }else{
//            a= a*7.5*0.1;
//            flag=true;
//        } 
//    }else{
//        if(a<=500){
//            a=0.9*a;
//        }else {
//            a=0.9*a;
//            flag=true;
//        }        
//    }
//    
//    if(flag)cout<<"YES"<<endl;
//    else cout<<"NO"<<endl;
//    
//    cout<<fixed<<setprecision(2)<<a<<endl;
//    printf("%.2f",a);
//    return 0;    
//} 

//#include<bits/stdc++.h>
//using namespace std;
//int n;
//bool isCheck(bool t[101][101]){
//    int x,y;
//    for(int i=1;i<=n;i++){
//        x=0,y=0;
//        for(int j=1;j<=n;j++){
//            x = x+t[i][j];
//            y = y+t[j][i];
//        }
//        if(x%2!=0||y%2!=0){
//            return false;
//        }
//    }
//    return true;
//}
//int main(){
//    bool a[101][101],flag=true;
//    int x,y;
//    cin>>n;
//    for(int i=1;i<=n;i++){
//        for(int j=1;j<=n;j++){
//            cin>>a[i][j];
//        }
//    }
//
//    if(isCheck(a)==true){
//        cout<<"OK"<<endl;
//        return 0;
//    }
//    
//    
//    for(int i=1;i<=n;i++){
//        for(int j=1;j<=n;j++){
//            a[i][j]=!a[i][j];
//            if(isCheck(a)==true){
//                cout<<i<<" "<<j<<endl;
//                return 0;
//            }
//            a[i][j]=!a[i][j];
//        }
//    }
//    
//    cout<<"Corrupt"<<endl;
//    return 0;
//}

//#include<iostream>
//#include<cstring>
//using namespace std;
//int main(){
//    char s[201]={'a'};
//    gets(s);
//    for(int i=0;i<strlen(s);i++){
//        if(s[i]>=65&&s[i]<=90){
//            cout<<char(65+(s[i]-65+26-5)%26);
//        }else{
//            cout<<s[i];
//        }
//    }
//    return 0;
//} 

//#include<iostream>
//#include<cmath>
//#include<ctime>
//#include<cstdlib>
//using namespace std;
//int a[12][12]={0}; 
//int main(){
//    int h,l,c,r;
//    srand((int)time(NULL));
//    cin>>h>>l>>c>>r;
//    for(int i=1;i<=h;i++){
//        for(int j=1;j<=l;j++){
//            if(rand()%9==0||rand()%9==1)a[i][j]=1;
//        }
//    }
////    c++,r++;
//    for(int i=1;i<=h;i++){
//        for(int j=1;j<=l;j++){
//            cout<<a[i][j]<<" ";
//        }
//        cout<<endl;
//    }
//    
//    if(a[c][r]==0){
//        cout<<a[c][r-1]+a[c][r+1]+a[c-1][r-1]+a[c-1][r]+a[c-1][r+1]+a[c+1][r-1]+a[c+1][r]+a[c+1][r+1];
//    }else
//        cout<<"game over"<<endl;
//    
//    return 0;
//}
//#include<iostream>
//using namespace std;
//bool check(int n){
//    int m = n,x = 0;
//    while(n){
//        x = x*10+n%10;
//        n/=10;
//    }
//    return   (m == x?true:false);
//}
//int main(){
//    int a=5;
//
//    int &b=a;//&引用  只能在变量声明用的 
//    
//    cout<<&b<<endl;
//    cout<<&a<<endl;  //&取地址 
//    return 0;
//}

    
    
//    int a[6]={1,2,3,4,5,6},n;
//    cin>>n;
//    for(int i=n-1;i<6-1;i++){
//        a[i]=a[i+1];
//        for(int i=0;i<6;i++)
//            cout<<a[i]<<" ";
//        cout<<endl; 
//    }
//    
//    for(int i=0;i<5;i++){
//        cout<<a[i]<<" ";
//    }
//    cin>>n;
//    for(int i=0;i<n;i++){
//        cin>>a[i];
//    }
//    int min,max;
//    min=a[0];
//    max=a[0];
//    for(int i=1;i<n;i++){
//        if(a[i]<min)min=a[i];
//        if(a[i]>max)max=a[i];
//    }    
//    cout<<min<<endl;
//    cout<<max<<endl;
//    for(int i=0;i<n;i++){
//        cout<<a[i]<<" ";
//    }
//    int n,scord,min,max;
//    cin>>n;
//    cin>>scord;
//    min=scord;
//    max=scord;
//    for(int i=1;i<n;i++){
//        cin>>scord;
//        if(scord>max) max=scord;
//        if(scord<min) min=scord;
//    }
//    cout<<"dfdff:"<<min<<endl;
//    cout<<max<<endl;
//    return 0;
//}


//#include<iostream>
//#include<algorithm> //algorithm      algorithm 
//#include<iomanip>
//using namespace std;
//int main(){
//    int a=3; 
//    A:
//    a=0;
//    cout<<a<<endl;
//    B:
//    a=1;
//    cout<<a<<endl;
//    
//     
//    
//    
//    return 0;
//}


//#include<iostream>
//using namespace std;
//bool a(int b){
//    if((i%4==0&&i%100!=0)||i%400==0){
//            return true;
//    }
//    return false;
//}
//int main(){
//    int n,sum=0;
//    cin>>n;
//    for(int i=2020;i<=n;i++){
//        if(a(i)==true){
//            sum++;
//        }
//    } 
//    cout<<sum;
//    return 0;
//}

//#include<iostream>
//#include<cstdlib>
//#include<ctime>
//using namespace std;
//int main(){
//    srand((int)time(NULL));  //功能  让rand() 
//    for(int i=0;i<100;i++){
//        cout<<rand()<<endl;
//    }
//    
//    
//    return 0;
//} 

//#include<iostream>
//
//using namespace std;
//int dayNumber(int a,int b,int c){
//    int days=0;
//    bool flag=false;//false表示平年 
//    if((a%4==0 && a%100!=0)||a%400==0){
//        flag=true; 
//    }
//    switch(b){
//        case 1:days=c;break;
//        case 2:days=31+c;break;
//        case 3:days=31+28+flag+c;break;
//        case 4:days=31+28+31+flag+c;break;
//        case 5:days=31+28+31+30+flag+c;break;
//        case 6:days=31+28+31+30+31+flag+c;break;
//        case 7:days=31+28+31+30+31+30+flag+c;break;
//        case 8:days=31+28+31+30+31+30+31+flag+c+1;break;
//        case 9:days=31+28+31+30+31+30+31+30+flag+c+1;break;
//        case 10:days=31+28+31+30+31+30+31+30+31+flag+c+1;break;
//        case 11:days=31+28+31+30+31+30+31+30+31+30+flag+c+1;break;
//        case 12:days=31+28+31+30+31+30+31+30+31+30+31+flag+c+1;break;
//    }
//    return days;
//} 
//
//int main(int a){
//
//    int starYear,starMonth,starDay;
//    int endYear,endMonth,endDay;
//    int daySum=0;
//    cin>>starYear>>starMonth>>starDay;
//    cin>>endYear>>endMonth>>endDay;
////    dayNumber(starYear,starMonth,starDay); 
//    if(starYear==endYear){
//        daySum=dayNumber(endYear,endMonth,endDay)-dayNumber(starYear,starMonth,starDay);
//    }else{
//        for(int i=starYear+1;i<endYear;i++){
//            if((i%4==0 && i%100!=0)||i%400==0){
//                daySum=daySum+366; 
//            }else{
//                daySum=daySum+365;//daySum += 366;
//            }
//        }
//        if((starYear%4==0 && starYear%100!=0)||starYear%400==0){
//            daySum=daySum+366-dayNumber(starYear,starMonth,starDay)+ dayNumber(starYear,starMonth,starDay); 
//        }else{
//            daySum=daySum+365-dayNumber(starYear,starMonth,starDay)+ dayNumber(starYear,starMonth,starDay); 
//        }
//    }
//    cout<<daySum;
//    return 0;
//}

//#include<bits/stdc++.h>


//#include<iostream>
//#include<algorithm>
////#include<cmath>
////#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int a,b;
//    cin>>a>>b;
//Greatest Common Divisor(GCD)
//    cout<<__gcd(a,b); 
//    return 0;
//}

//#include<bits/stdc++.h>
//#include<iostream>
//#include<cstring>
//#include<cmath>
//#include<iomanip>
//#include<cstdio>
//using namespace std;
//int main(){
//    char a[101],b[101];
//    int j=0;
//    cin>>a;
//    cout<<"b"<<":"<<b<<endl;
//    cout<<strlen(b)<<endl;
//    for(int i=strlen(a)-1;i>=0;i--,j++){
//        b[j]=a[i];
//    }
//    b[j]='\0';
//    cout<<b<<endl;;
//    for(int i=strlen(a)-1;i>=0;i--){
//        if(b[i]!=a[i]){
//            cout<<"NO";
//            return 0;
//        }
//    }
//    cout<<"YES";
//    return 0;
//}

//#include"aa.h"
//#include<bits/stdc++.h>
//int main(){
////    aa();
//    return 0;
//}

//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    string s;
//    cin>>s;
//    char c[100];
//    cin>>c;
//    cout<<s.length()<<endl;
//    cout<<strlen(c)<<endl;    
//    return 0;
//} 

//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int a[101],n;
//    cin>>n;
//    for(int i=0;i<n;i++)cin>>a[i];
//    
//    for(int i=0;i<n-1;i++){
//        bool flag=true;
//        for(int j=0;j<n-1-i;j++){
//            if(a[j]>a[j+1]){
//                int temp=a[j];
//                a[j]=a[j+1];
//                a[j+1]=temp;
//                flag=false;
//            }
//        }
//        if(flag==true)break; 
//        for(int e=0;e<n;e++)cout<<a[e]<<" ";
//        cout<<endl;        
//    }    
//    return 0;
//} 


//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    double a[1001],c=0,score;
//    int n;
//    cin>>score>>n;
//    for(int i=1;i<=n;i++){
//        cin>>a[i];
//    }
//    for(int i=1;i<=n;i++){
//        if(a[i]>score)c++;
//    }
//    cout<<(c+1)/n<<endl; 
//    if((c+1)/n<=0.1){
//        cout<<"A"<<endl;
//    }else if((c+1)/n<=0.3){
//        cout<<"B"<<endl;
//    }else if((c+1)/n<=0.6){
//        cout<<"C"<<endl;
//    }else if((c+1)/n<=0.8){
//        cout<<"D"<<endl;
//    }else cout<<"E"<<endl;
//    
//    return 0;
//}

//#include<iostream>
//#include<cstring>
//using namespace std;
//int tianshu(int y,int m,int d){
//    bool flag=false;//true   false
//    int days=0;
//    if((y%4==0&&y%100!=0)||y%400==0){
//        flag=true;
//    }
//    switch(m){
//        case 1:days=d;break;
//        case 2:days=31+d;break;
//        case 3:days=31+28+d+flag;break;
//        case 4:days=31+28+d+flag+30;break;
//    } 
//    return days;
//} 
//
//int main(){
//    int Y,M,D;
//    cin>>Y>>M>>D;
//    cout<<tianshu(Y,M,D);
//    return 0;
//}


//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    double n,scord[101];
//    string names[101];
//    cin>>n;
//    for(int i=0;i<n;i++){
//        cin>>names[i]>>scord[i];
//    }
//    int min;
//    double temp1;
//    string temp2;
////    for(int i=0;i<n-1;i++){
////        min=i;
////        for(int j=i+1;j<n;j++){
////            if(scord[j]<scord[min])min=j;
////        }
////        temp1=scord[i];
////        scord[i]=scord[min];
////        scord[min]=temp1;
////        temp2=names[i];
////        names[i]=names[min];
////        names[min]=temp2;
////    }
//    for(int i=0;i<n-1;i++){
//        for(int j=0;j<n-1-i;j++){
//            if(scord[j]>scord[j+1]){
//                temp1=scord[j];
//                scord[j]=scord[j+1];
//                scord[j+1]=temp1;    
//                temp2=names[j];
//                names[j]=names[j+1];
//                names[j+1]=temp2;    
//            }else
//            if(scord[j]==scord[j+1]&&names[j]<names[j+1]){
//                temp2=names[j];
//                names[j]=names[j+1];
//                names[j+1]=temp2;    
//            }
//        }
//    }
//    for(int i=n-1;i>=0;i--){
//        cout<<names[i]<<" "<<scord[i]<<endl;;
//    }    
//    return 0;
//}


//冒泡排序 
//#include<iostream>
//using namespace std;
//int main(){
//    int n,a[101];
//    cin>>n;
//    for(int i=0;i<n;i++)cin>>a[i];
//    for(int i=0;i<n-1;i++){
//        int min=i;
//        for(int j=i+1;j<n;j++){
//            if(a[min]>a[j]){
//                min=j;
//            }
//        }
//        int temp=a[min];
//        a[min]=a[i];
//        a[i]=temp;
//    }
//    for(int i=0;i<n;i++)cout<<a[i]<<" "; 
//    return 0;
//} 

//优化冒泡排序 
//#include<iostream>
//using namespace std;
//int main(){
//    int n, a[101];
//    cin>>n;
//    for(int i=0;i<n;i++)cin>>a[i];
//    bool flag; 
//    for(int i=0;i<n-1;i++){
//        flag=true;
//        for(int j=0;j<n-1-i;j++){
//            if(a[j]>a[j+1]){
//                int temp=a[j];
//                a[j]=a[j+1];
//                a[j+1]=temp;
//                flag=false;
//            }
//        }
//        if(flag==true){
//            break;
//        }
//    }
//    
//    for(int i=0;i<n;i++)cout<<a[i]<<" ";
//    return 0;
//} 

//#include<iostream>
//using namespace std;
//int main(){
//    int n,a[101];
//    cin>>n;
//    for(int i=0;i<n;i++)cin>>a[i];
//    
//    for(int i=0;i<n-1;i++){
//        for(int j=0;j<n-1-i;j++){
//            if(a[j]>a[j+1]){
//                int temp=a[j];
//                a[j]=a[j+1];
//                a[j+1]=temp;
//            }
//        }
//    }
//    for(int i=0;i<n;i++)cout<<a[i]<<" ";
//    return 0;
//} 

//#include<iostream>
//#include<algorithm>
//using namespace std;
//int nums[100010];  // 用来存储输入的n个整数 
//int n;
//long long m;
//int base;
//int top;
//bool find(long long key)   //二分查找 
//    {
//    while(base<=top)
//        {
//            int mid=(base+top)/2;
//            if(nums[mid]==key)       
//                {
//                    return true;
//                }
//            else if(nums[mid]<key)   //在右半区间 
//                {
//                    base=mid+1;
//                }
//            else                       //在左半区间 
//                {
//                    top=mid-1;
//                }
//        }
//    return false;  //表示原来数据中无查找数据  
//    }
//int main(){
//    cin>>n;
//    for(int i=0;i<n;i++){
//        cin>>nums[i];
//    }
//    cin>>m;
//    sort(nums,nums+n);   //对输入的n个数据进行快速排序 
//    for(int i=0;i<n;i++){
//        long long key=m-nums[i];
//        base=i+1;        
//  //寻找key是只针对i后面的进行  避免重复搜  还有这样可以满足输出的时候先小后大的要求 
//        top=n-1;
//        if(find(key)){
//            cout<<nums[i]<<" "<<key<<endl;
//            return 0;
//        }
//    }
//    cout<<"No"<<endl;   //原来数据不满足要求 
//}


//没问题代码 
//#include<iostream>
//#include<cstring>
//using namespace std;
//#define maxSize 21
//struct student
//{
//    char name[maxSize];
//    int score;
//};
//int main()
//{
//    struct student s[maxSize],temp;
//    int n;
//    cin>>n;
//    for(int i=0; i<n; i++)
//        cin>>s[i].name>>s[i].score;
//    //冒泡排序  
//    for(int i=0; i<n-1; i++){
//        for(int j=0; j<n-i-1; j++){
//            if(s[j].score<s[j+1].score){
//                temp = s[j];
//                s[j] = s[j+1];
//                s[j+1] = temp;
//            }
//            if(s[j].score==s[j+1].score && strcmp(s[j].name,s[j+1].name)>0){
//                temp = s[j];
//                s[j] = s[j+1];
//                s[j+1] = temp;
//            }
//        }
//    }
//    for(int i=0; i<n; i++)
//        cout<<s[i].name<<" "<<s[i].score<<endl;
//    return 0;
//}
//有问题的代码 
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    double n,scord[101];
//    string names[101];
//    cin>>n;
//    for(int i=0;i<n;i++){
//        cin>>names[i]>>scord[i];
//    }
//    int min;
//    double temp1;
//    string temp2;
//    for(int i=0;i<n-1;i++){
//        min=i;
//        for(int j=i+1;j<n;j++){
//            if(scord[j]<scord[min])min=j;
//        }
//        temp1=scord[i];
//        scord[i]=scord[min];
//        scord[min]=temp1;
//        temp2=names[i];
//        names[i]=names[min];
//        names[min]=temp2;
//    }
//    for(int i=n-1;i>=0;i--){
//        cout<<names[i]<<" "<<scord[i]<<endl;;
//    }    
//    return 0;
//}


//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int M,a[10001],min,max;
//    cin>>M;
//    for(int i=0;i<M;i++){
//        cin>>a[i];
//    }
//    min=a[0];
//    max=a[0];
//    for(int i=1;i<M;i++){
//        if(min>a[i])min=a[i];
//        if(max<a[i])max=a[i];
//    }
//    cout<<max-min<<endl;
//    return 0;
//}

//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//  double m,n;
//  int t=0,a[101][101],b[101][101];
//  cin>>m>>n;
//  for(int i=0;i<m;i++){
//    for(int j=0;j<n;j++){
//      cin>>a[i][j];
//    }
//  }
//  for(int i=0;i<m;i++){
//    for(int j=0;j<n;j++){
//      cin>>b[i][j];
//    }
//  }
//  for(int i=0;i<m;i++){
//    for(int j=0;j<n;j++){
//      if(a[i][j]==b[i][j])t++;
//    }
//  }
//  cout<<fixed<<setprecision(2)<<t*100/(m*n);
//  return 0;
//}

//#include<iostream>
//#include<cstring>
//using namespace std;
//int main(){
//  char c[100001];
//  cin>>c;
//  int t;
//  cout<<strlen(c)<<endl;
//  for(int i=0;i<strlen(c);i++){
//    t=0;
//    for(int j=0;j<strlen(c);j++){
//      if(c[i]==c[j])t++;
//    }
//    if(t==1){
//     cout<<c[i]<<endl;
//     return 0;
//    }
//  }
//  cout<<"no"<<endl;
//  
//  
//  return 0;
//}

//#include<iostream>
//#include<cstring>
//using namespace std;
//int main(){
//  char c[100001];
//  cin>>c;
//  cout<<strlen(c)<<endl;
//  
//  
//  return 0;
//}

//#include<iostream>
//#define MAX 100
//using namespace std;
//int main(){
//    int flag,n,i,k,num[MAX],b;
//    cin>>n;
//    b=n;
//    if(n<=0){
//        cout<<n<<"is not a positive integer"<<endl;
//        return 0;
//    }
//    if(n==1){
//        cout<<"1 cannot becomposed"<<endl;
//        return 0;
//    }
//    for(i=2;i<n;i++){
//        if(n%i==0){
//            flag=1;
//            break;
//        }
//    }
//    if(flag!=1){
//        cout<<b<<"is a prime number"<<endl;
//        return 0;
//    }
//    if(flag==1){
//        i=2;
//        k=0;
//        while(n!=1){
//            if(0==n%i){
//                num[k]=i;
//                k++;
//                n=n/i;
//            }else i++;
//        }
//        cout<<b<<"=";
//        for(i=0;i<k;i++){
//            cout<<num[i];
//            if(i<k-1){
//                cout<<"*";
//            }
//        }
//    }
//    
//    return 0;
//} 

//#include<iostream>
//using namespace std;
//int main(){
//    int a[10]={1};
//    char s[10]="dfdf";
//    cout<<a<<endl;
//    cout<<s<<endl;
//    
//    return 0;
//} 
//#include<iostream>
//using namespace std;
//int main(){
//    int n,a,b,A[100],B[100],winA=0,winB=0;
//    cin>>n>>a>>b;
//    for(int i=1;i<=a;i++)cin>>A[i];
//    for(int i=1;i<=b;i++)cin>>B[i];
//    
//    for(int i=1;i<=n;i++){
//        if(A[i%a==0?a:i%a]==0&&B[i%b==0?b:i%b]==2)winA++;
//        if(A[i%a==0?a:i%a]==0&&B[i%b==0?b:i%b]==5)winB++;
//        if(A[i%a==0?a:i%a]==2&&B[i%b==0?b:i%b]==0)winB++;
//        if(A[i%a==0?a:i%a]==2&&B[i%b==0?b:i%b]==5)winA++;
//        if(A[i%a==0?a:i%a]==5&&B[i%b==0?b:i%b]==0)winA++;
//        if(A[i%a==0?a:i%a]==5&&B[i%b==0?b:i%b]==2)winB++;
//    }
//    if(winA>winB)cout<<"A";
//    else if(winA<winB)cout<<"B";
//    else cout<<"draw";
//    return 0;
//} 

//#include<iostream>
//using namespace std;
//int main(){
//    int n,h[1001],i,j,ans,maxh=1000001;
//    cin>>n;
//    for(i=1;i<=n;i++)cin>>h[i];
//    for(i=1;i<=n;i++){
//        ans=0;
//        maxh=1000001;
//        for(j=1;j<=n;j++){
//            if(h[j]>h[i]&&h[j]<maxh){
//                ans=j;
//                maxh=h[j];
//            }
//        }
//        cout<<ans<<endl;
//    }    
//    return 0;
//} 

//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int a[2][5]={5,4,3,2,1,5,4,3,2,1};
//    sort(a[0],a[0]+3);
//    for(int i=0;i<5;i++){
//        cout<<a[0][i]<<" ";
//    }
//    return 0;
//} 

//11月15日
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    string s;
//    cin>>s;
//    int l=s.length(),times=0;
//    for(int i=0; i<l-7+1; i++){
//        if(s[i]=='L'||s[i]=='l')
//            if(s[i+1]=='A'||s[i+1]=='a')
//                if(s[i+2]=='N'||s[i+2]=='n')
//                    if(s[i+3]=='Q'||s[i+3]=='q')
//                        if(s[i+4]=='I'||s[i+4]=='i')
//                            if(s[i+5]=='A'||s[i+5]=='a')
//                                if(s[i+6]=='O'||s[i+6]=='o')
//                                    times++; 
//    }
//    cout<<times;
//    return 0;
//} 
//Lanqiaoceping,lanqiaoceping,Lanqiaoceping

//11月07日 
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    double aa,b,c;
//    cin>>aa>>b>>c;
//    if(aa*aa>b*c){
//        cout<<"SQUARE"<<endl;
//    }else if(aa*aa<b*c){
//        cout<<"RECTANGLE"<<endl;
//    }else{
//        cout<<"SAME"<<endl;
//    }
//    return 0;
//} 


//10月31日
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    //7.2,4.5,6.3,5.74,25.4
//    /*
//    double a[20];
//    char b;
//    int i=0;
//    while(1)
//    {
//    cin>>a[i]>>b;
//    i++;
//    }
//    */
//    char buf[333];
//    cin.getline(buf,sizeof(buf));//读入一行
//    double a[33];
//    a[0] = 0;
//    int cnt=0;
//    double point=0;
//    for(int i=0;buf[i]!='0';i++){
//        if(buf[i]==','){
//            a[++cnt]=0;
//            point=0;
//        }else if(buf[i]=='.'){
//            point=0.1;
//        }else if(isdigit(buf[i])){
//            if(point != 0){
//                a[cnt] += (buf[i]-'0')*point;
//                point *= 0.1;
//            }else{
//                a[cnt] *= 10;
//                a[cnt] += buf[i]-'0';
//            }
//        }
//    } 
//    cnt++;
//    sort(a,a+cnt);
//    cout<<cnt<<endl;
//    cout<<a[0]<<endl;
//    
////    for(int i=cnt-1;i>=0;i--){
////        cout<<a[i]<<endl;
////        
////    }
//    //cout<<a[cnt-1]<<endl;
//    cout<<a[cnt-1]<<",";
//    for(int i=cnt-2;i>=0;i--){
//        cout<<a[i];
//        if(i!=0)cout<<",";
//    }
//    cout<<endl;
//    for(int i=0;i<cnt;i++){
//        if(a[i]<=26&&a[i]>=1){
//            cout<<char(64+a[i]);
//        }else if(a[i]==214){
//            cout<<"*";
//        }
//    }
//    return 0;
//} 
/*
9,12,15,22,5,21,214
*/

//10月23日
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int sums=0,z[4]={2,4,6,8};//sums=4*3*2=24
//    for(int a=0; a<4; a++){
//        for(int b=0; b<4; b++){
//            for(int c=0; c<4; c++){
//                if(z[a]!=z[b]&&z[a]!=z[c]&&z[b]!=z[c]){
//                    cout<<100*z[a]+10*z[b]+z[c]<<endl;
//                    sums++;
//                }
//            }
//        }
//    }
//    cout<<sums;
//    return 0;
//} 

//10月15号
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int h,l,c,r,a[10][10],sums=0;
//    cin>>h>>l>>c>>r;
//    for(int i=0; i<h; i++){
//        for(int j=0; j<l; j++){
//            cin>>a[i][j];
//        }
//    }
//    if(c==0){
//        if(r==0){
//            sums=a[0][1]+a[1][1]+a[1][0];
//        }else if(r==l-1){
//            sums=a[0][l-2]+a[1][l-2]+a[1][l-1];
//        }else{
//            sums=a[c][r-1]+a[c][r+1]+a[c+1][r-1]+a[c+1][r]+a[c+1][r+1];
//        } 
//    }else if(c==h-1){
//        if(r==0){
//            sums=a[h-2][0]+a[h-2][1]+a[h-1][1];
//        }else if(r==l-1){
//            sums=a[h-2][l-2]+a[h-2][l-1]+a[h-1][l-2];
//        }else{
//            sums=a[c][r-1]+a[c][r+1]+a[c-1][r-1]+a[c-1][r]+a[c-1][r+1];
//        }
//    }else if(c!=0 && c!=l-1){
//        sums=a[c][r-1]+a[c][r+1]+a[c-1][r-1]+a[c-1][r]+a[c-1][r+1]+a[c+1][r-1]+a[c+1][r]+a[c+1][r+1];
//    }
//    cout<<sums<<endl;
//    return 0;
//} 
/*
4 5 2 3
1 2 3 4 5
6 7 8 9 10
3 4 5 7 8
2 5 6 8 0
54

4 5 1 0
1 2 3 4 5
6 7 8 9 10
3 4 5 7 8
2 5 6 8 0
17
*/

//daway编写 
//#include<bits/stdc++.h>
//#include<algorithm> 
//using namespace std;
//int main(){
//    int a[100][100],n,k,x,cnt=0;
//    cin>>n>>k;
//    for(int i=0; i<n; i++){
//        cin>>x;
//        for(int j=0; j<n-k+1; j++){
//            a[j][i]=x;
//        }    
//    }
//    for(int i=0; i<n-k+1; i++){
//        sort(a[i]+i,a[i]+i+k);
//        //排好序就比较 
//        bool flag=true; 
//        for(int j=0; j<i; j++){
//            bool same=true;
//            for(int z=0; z<n; z++){
//                if(a[i][z] != a[j][z]){
//                     same=false;
//                    break;
//                }
//            }
//            if(same){
//                flag=false;
//                break;
//            }
//        }
//        cnt += flag; 
//    }    
//    cout<<cnt<<endl;
//    return 0;
//} 

/*
8 4
1 8 3 9 4 5 3 4
5

5 3 
0 2 1 4 3
2
*/
//10月7号 
//#include<iostream>
//#include<algorithm> 
//using namespace std;
//int main(){
//    int n,k,a[100][100],cnt=0;
//    cin>>n>>k;
//    for(int i=0; i<n;i++){
//        int x;
//        cin>>x;
//        for(int j=0; j<n-k+1; j++){
//            a[j][i]=x;
//        }
//    }
//    for(int i=0;i<n-k+1; i++){
//        sort(a[i]+i,a[i]+i+k);
//        bool flag =true;
//        for(int j=0; j<i; j++){
//            bool same=true;
//            for(int k=0; k<n; k++){
//                if(a[i][k] != a[j][k]){
//                    same =false;
//                    break;
//                }
//            }
//            if(same){
//                flag=false;
//                break;
//            }
//        }
//        cnt += flag;
//    }
//    cout<<cnt<<endl;
//    return 0;
//} 

//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int n,t;
//    cin>>n;
//    for(int i=0;i<n;i++){
//        t=i;
//        while(t>0){
//            if(t%10==3){
//                cout<<i<<' ';
//                break;
//            }
//            t=t/10;
//        }
//    }
//    return 0;
//} 
// 

//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int n,a[101],mun,result;
//    cin>>n;
//    for(int i=1;i<=n;i++){
//        cin>>a[i];
//    }
//    cin>>mun;
//    result=0;//
//    for(int i=1;i<=n;i++){
//        if(a[i]==mun){
//            result=i;
//        }    
//    }
//    cout<<result;
//    return 0;
//} 

//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int n,m,a;
//    cin>>n>>m>>a;
//    cout<<n/a*(m/a)<<endl;
//    //cout<<n*m/(a*a)<<endl;
//    return 0;
//} 
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
////    long long n,sum=1;
////    cin>>n;
////    for(int i=1;i<=n;i++){
////        sum=sum*i;
////    }
////    cout<<sum;
//    int n,a=0,x;
//    cin>>n;
//    for(int i=1;i<=n;i++){
////        if(i%10==1)a++;
////        if(i%100/10==1)a++;
////        if(i%1000/100==1)a++;
////        if(i%1000/1000==1)a++;
////        if(i/10000==1)a++; 
//        x =  i;//123 
//        while(x>0){
//            if(x%10==1)a++;
//            x=x/10;
//        }
//    }
//    cout<<a;
//    return 0;
//}
////井字棋 
//#include<bits/stdc++.h>
//using namespace std;
//int a[3][3]={0},x,y,flag=0,flagwin=0;//单数表示现在是玩家1下,双数则。。。
//bool b[3][3]={0};
//bool isWin(){
//    if(a[0][0]+a[0][1]+a[0][2]==3){
//        cout<<"白子赢"<<endl; 
//        return true;
//    }else if(a[1][0]+a[1][1]+a[1][2]==3){
//        cout<<"白子赢"<<endl; 
//        return true;
//    }else if(a[2][0]+a[2][1]+a[2][2]==3){
//        cout<<"白子赢"<<endl; 
//        return true;
//    }else if(a[0][0]+a[1][0]+a[2][0]==3){
//        cout<<"白子赢"<<endl; 
//        return true;
//    }else if(a[0][1]+a[1][1]+a[2][1]==3){
//        cout<<"白子赢"<<endl; 
//        return true;
//    }else if(a[0][2]+a[1][2]+a[2][2]==3){
//        cout<<"白子赢"<<endl; 
//        return true;
//    }else if(a[0][0]+a[1][1]+a[2][2]==3){
//        cout<<"白子赢"<<endl; 
//        return true;
//    }else if(a[0][2]+a[1][1]+a[2][0]==3){
//        cout<<"白子赢"<<endl; 
//        return true;
//    }else if(a[0][0]+a[0][1]+a[0][2]==12){
//        cout<<"黑子赢"<<endl; 
//        return true;
//    }else if(a[1][0]+a[1][1]+a[1][2]==12){
//        cout<<"黑子赢"<<endl; 
//        return true;
//    }else if(a[2][0]+a[2][1]+a[2][2]==12){
//        cout<<"黑子赢"<<endl; 
//        return true;
//    }else if(a[0][0]+a[1][0]+a[2][0]==12){
//        cout<<"黑子赢"<<endl;
//        return true; 
//    }else if(a[0][1]+a[1][1]+a[2][1]==12){
//        cout<<"黑子赢"<<endl;
//        return true; 
//    }else if(a[0][2]+a[1][2]+a[2][2]==12){
//        cout<<"黑子赢"<<endl;
//        return true; 
//    }else if(a[0][0]+a[1][1]+a[2][2]==12){
//        cout<<"黑子赢"<<endl; 
//        return true;
//    }else if(a[0][2]+a[1][1]+a[2][0]==12){
//        cout<<"黑子赢"<<endl; 
//        return true;
//    }
//    return false;
//}
//int main(){
//
//    for(int i=0;i<3;i++){
//        for(int j=0;j<3;j++){
//            cout<<a[i][j]<<" ";
//        }
//        cout<<endl;
//    }
//    while(1){    
//        flag++;
//        if(flag%2!=0)cout<<"现在是白子下:"<<endl; 
//        if(flag%2==0)cout<<"现在是黑子下:"<<endl;
//        cin>>x>>y;
//        if(flag%2!=0&&b[x][y]==0){
//            a[x][y]=1;
//            b[x][y]=1;
//            flagwin++;
//        }else if(flag%2==0&&b[x][y]==0){
//            a[x][y]=4;
//            b[x][y]=1;
//            flagwin++; 
//        }else if(flag%2!=0&&b[x][y]==1){
//            cout<<"此地已有棋子"<<endl;
//            flag--;
//            cout<<"请重新输入:"<<endl;
//        }else if(flag%2==0&&b[x][y]==1){
//            cout<<"此地已有棋子"<<endl;
//            flag--;
//            cout<<"请重新输入:"<<endl;
//        }
//        for(int i=0;i<3;i++){
//            for(int j=0;j<3;j++){
//                cout<<a[i][j]<<" ";
//            }
//            cout<<endl;
//        }
//        if(isWin()==true){
//            cout<<"886";
//            break;
//        }else if(flagwin==9){
//            cout<<"平局"<<endl; 
//        }
//    }
//    
//    return 0;
//}

//#include<iostream>
//using namespace std;
//int main(){
//    int x,y,t;
//    char c;
//    cin>>x>>y>>c>>t;
//    for(int i=1;i<=x;i++){
//        for(int j=1;j<=y;j++){
//            if(t==1){
//                cout<<c;
//            }else {
//                if(i==1||i==x||j==1||j==y){
//                    cout<<c;
//                }else cout<<" ";
//            }
//            
//        }
//        cout<<endl;
//    }
//    return 0;
//} 
//#include<iostream>
//using namespace std;
//int main(){
//    int a[10001],n,min,temp;
//    cin>>n;
//    for(int i = 0; i < n; i++)
//    cin>>a[i];
//    for(int i = 0; i < n-1; i++)
//    {
//        min = i;
//        for(int j = i+1; j < n; j++){
//            if(a[min]>a[j])   min = j;
//        }
//        temp = a[i];
//        a[i] = a[min];
//        a[min] = temp;    
//    }
//    for(int i = 0; i < n; i++)
//     cout<<a[i]<<" ";
//     return 0;
//}


//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    long long int a;
//    int s[100],num=0;
//    cin>>a;
//    if(a<0){
//        cout<<"-";
//    } 
//    a=abs(a);  
//    while(a>0){
//        s[num]=a%10;
//        a=a/10;
//        num++;  
//    }
//    int flag=1;//1表示最前面是0 
//    for(int i=0;i<num;i++){
//        if(s[i]==0&&flag==1){
//            cout<<""; 
//        }else {
//            flag=0;
//            cout<<s[i];
//        }
//    }
//    return 0;
//}


//#include<bits/stdc++.h>
//using namespace std;
//void aa(int a[][3]){
//    for(int i=0;i<9;i++){
//        cout<<a[i/3][i%3]<<" ";
//    }
//}
//int main(){
//    int b[3][3];
//    for(int i=0;i<3;i++){
//        for(int j=0;j<3;j++){
//            cin>>b[i][j]; 
//        }
//    }
//    aa(b);
//    return 0;
//}

//1-1000中的素数 
/*
2 8 3
1 6 4
7 0 5

1 2 3
7 8 4
0 6 5
*/
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int q=1;
//    for(int i=2;i<=10000;i++){
//        q=1;
//        for(int j=2;j<i;j++){
//            if(i%j==0){
//                q=0;
//                break;
//            }
//        }
//        if(q==1){
//            cout<<i<<endl;
//        }
//    }
//    
//    return 0;
//} 
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int n,temp;
//    cin>>n;
//    for(int i=2;i<n;i++){
//        temp=i;
//        while(temp>0){
//            if(temp%10==3){
//                cout<<i<<" ";
//                break;
//            }
//            temp=temp/10;
//        }
//    }
//    return 0;
//} 

//是否三角形三边 
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int a,b,c;
//    cin>>a>>b>>c;
//    if(a+b>c&&a+c>b&&b+c>a){
//        cout<<1;
//    }else{
//        cout<<0;
//    }
//    return 0;
//}


//鼠是中国传统十二生肖之首 
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int month,day;
//    cin>>month>>day;
//    if(month==1){
//        if(day<=24){
//            cout<<"Pig";
//        }
//    }else {
//        cout<<"Mouse";
//    }        
//    return 0;
//} 


//漫漫长假 
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    double tall,weight;
//    cin>>tall>>weight;
//    if(weight>1.1*(tall-100)*9){
//        cout<<"fat";
//    }else if(weight<0.9*(tall-100)*9){
//        cout<<"thin";
//    }else{
//        cout<<"standard";
//    }
//    return 0;
//}

//3个字符的判断
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    char a,b,c;
//    cin>>a>>b>>c;
//    if(a==c&&a!=b){
//        cout<<"Yes";
//    }else if(a==b&&a!=c){
//        cout<<"Yes";
//    }else if(b==c&&b!=c){
//        cout<<"Yes";
//    }else{
//        cout<<"No";
//    }
//    return 0;
//} 

//润年数
//#include<iostream>
//using namespace std;
//int main(){
//    int startYear,endYear,sums=0;
//    cin>>startYear>>endYear;
//    for(int i=startYear;i<=endYear;i++){
//        if((i%4==0&&i%100!=0)||i%400==0){
//            sums++;
//        }
//    }
//    cout<<sums;
//    return 0;
//} 
 

//STEMA测评
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int score,n,score2,m=1;
//    cin>>score>>n;
//    for(int i=1;i<=n;i++){
//        cin>>score2;
//        if(score2>score){
//            m++;
//        }
//    }
//    if(m*100/n<=10){
//        cout<<"A"<<endl;
//    }else if(m*100/n<=30){
//        cout<<"B"<<endl;
//    }else if(m*100/n<=60){
//        cout<<"C"<<endl;
//    }else if(m*100/n<=80){
//        cout<<"D"<<endl;
//    }else{
//        cout<<"E"<<endl;
//    }
//    return 0;
//} 


//咪咪小老鼠
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int n,t,juli,times=0;
//    cin>>n>>t;
//    for(int i=1;i<=n;i++){
//        cin>>juli;
//        if(juli<=t){
//            times++;
//        }
//    }
//    cout<<times;
//    return 0;
//} 


//收集瓶盖赢大奖 
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    int n,a,b;
//    cin>>n;
//    while(n>0){
//        cin>>a>>b;
//        if(a>=10||b>=20){
//            cout<<"True"<<endl;
//        }else{
//            cout<<"False"<<endl;
//        }
//    }
//    return 0;
//} 


//#include<bits/stdc++.h>
//using namespace std;
//stack<int>  a; 
//int main(){
//    for(int i=0;i<1000;i++){
//        a.push(i);
//    }
//    for(int i=0;i<1000;i++){
//        cout<<a.top()<<endl;
//        a.pop();
//    }
//
//    cout<<"KKK"<<endl;
//    cout<<sizeof(a)/sizeof(int)<<endl; 
//    return 0;
//}

//利润问题 
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    double r,m,y,years=0;
//    cin>>r>>m>>y; 
//    do{
//        m=m*(1+r/100);
//        years++;
//    }while(m<y);
//    cout<<years;
//    return 0;
//} 

//
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//    long long n; 
//    int a[20],t=1;
//    bool flag=true;//标记要不要做去前方的零 
//    cin>>n;//????
//    if(n<0)cout<<"-";
//    n=abs(n);   
//    while(n>0){
//        a[t]=n%10;
//        n = n/10;
//        t++;
//    }
//    for(int i=1;i<=t-1;i++){
//        if(flag==false){
//            cout<<a[i];
//        }else if(a[i]==0){
//            cout<<"";
//        }else if(a[i]!=0){
//            cout<<a[i];
//            flag=false;
//        }    
//    }
//    
//} 


//硬币翻转问题 
//#include<cstdio>
//#include<cmath>
//#include<algorithm>
//using namespace std;
// 
//int main() {
//    int n;
//    scanf("%d", &n);
//    printf("%d\n", n);
//    for(int i = 1; i <= n; i++) {
//        for(int j = 1; j <= i; j++) printf("%d", (i-1)&1);
//            for(int j = i + 1; j <= n; j++) printf("%d", i&1);
//        printf("\n");
//    }
//    return 0;
//}

//八数码难题 
//#include<bits/stdc++.h>
//using namespace std;
//struct node
//{
//    int xy[3][3];
//    int dir;
//    int step;
//};
//struct node sh[3],p;// sh[0] 为起点  sh[2]为终点  sh[1]为过程的点    p为临时结构体 
//long long  sum[2];//sum[0]为现在的情况   sum[1]为目标情况 
//queue<node> q;//数据类型为node的队列q 
//
//void init()
//{
//    printf("输入起始节点的位置:\n");
//    int i, j;
//    for (i = 0; i < 3; i++)
//        for (j = 0; j < 3; j++)
//            scanf("%d", &sh[0].xy[i][j]);
//    sh[0].dir = -1,sh[0].step=0;
//    printf("输入目标节点的位置:\n");
//    for (i = 0; i < 3; i++)
//        for (j = 0; j < 3; j++)
//            scanf("%d", &sh[2].xy[i][j]);
//    sh[2].dir = -1;
//    //将目标node标记 
//    sum[1] = sh[2].xy[0][0]*100000000 + sh[2].xy[0][1]*10000000 + sh[2].xy[0][2]*1000000 + sh[2].xy[1][0]*100000 + sh[2].xy[1][1]*10000 + sh[2].xy[1][2]*1000 + sh[2].xy[2][0]*100 + sh[2].xy[2][1]*10 + sh[2].xy[2][2];
//}
//
////找出0的位置
//int loction()
//{
//    int i;
//    for (i = 0; i < 9; i++)
//        if (sh[1].xy[i / 3][i % 3] == 0) return i;
//}
//
//int search()
//{
//    int i = 0;
//    q.push(sh[0]);
//    while (!q.empty())
//    {
//        sh[1]=q.front(); 
//        sum[0] = sh[1].xy[0][0]*100000000 + sh[1].xy[0][1]*10000000 + sh[1].xy[0][2]*1000000 + sh[1].xy[1][0]*100000 + sh[1].xy[1][1]*10000 + sh[1].xy[1][2]*1000 + sh[1].xy[2][0]*100 + sh[1].xy[2][1]*10 + sh[1].xy[2][2];
//        if (sum[0] == sum[1])
//        {
//            //printf("在第%d次找到了\n", i);
//            //printf("%d",i); 
//            //display(i);
//            return sh[1].step;
//        }
//        q.pop();
//        
//        int temp;
//        int loc;
//        //int up = 1, down = 1, left = 1, right = 1;
//        loc = loction();//找出0的位置
//        int stand = sh[1].dir; //上一次的操作的方向 
//        //dir的0 1 2 3分别代表右 下 左 上  注意这里指的是空格的移动 
//        if (loc / 3 != 0 && stand != 1)//0 不在第一行  并且 上一次不是向下移 ,就可以上移 
//        {
//            p=sh[1]; 
//            //移动数值,0和上一位换值   
//            temp = p.xy[loc / 3][loc % 3];
//            p.xy[loc / 3][loc % 3] = p.xy[loc / 3 - 1][loc % 3];
//            p.xy[loc / 3 - 1][loc % 3] = temp;
//            p.dir = 3;
//            p.step++;
//            q.push(p);
//        }
//        if (loc / 3 != 2 && stand != 3)//0 不在第三行  并且 上一次不是向上移 ,就可以下移 
//        {
//            p=sh[1]; 
//            temp = p.xy[loc / 3][loc % 3];
//            p.xy[loc / 3][loc % 3] = p.xy[loc / 3 + 1][loc % 3];
//            p.xy[loc / 3 + 1][loc % 3] = temp;
//            p.dir = 1;
//            p.step++;
//            q.push(p);
//        }
//        if (loc % 3 != 0 && stand != 0)//0 不在第一列  并且 上一次不是向右移 ,就可以左移 
//        {
//            p=sh[1];
//            temp = p.xy[loc / 3][loc % 3];
//            p.xy[loc / 3][loc % 3] = p.xy[loc / 3][loc % 3 - 1];
//            p.xy[loc / 3][loc % 3 - 1] = temp;
//            p.dir = 2;
//            p.step++;
//            q.push(p);
//        }
//        if (loc % 3 != 2 && stand != 2)//0 不在第三列  并且 上一次不是向左移 ,就可以右移 
//        {
//            p=sh[1];
//            temp = p.xy[loc / 3][loc % 3];
//            p.xy[loc / 3][loc % 3] = p.xy[loc / 3][loc % 3 + 1];
//            p.xy[loc / 3][loc % 3 + 1] = temp;
//             p.dir = 0;
//             p.step++;
//            q.push(p);
//        }
//        
//
//    }
//    cout<<"无解"<<endl; 
//}
//
//int main()
//{
//    init();//输入初始与目标状态数据 
//    cout<<search();//广度(宽度)搜索 
//    return 0;
//}
//测试用例
/*
2 8 3
1 6 4
7 0 5

1 2 3
7 8 4
0 6 5
*/


/*
拐弯问题 
*/
//#include<bits/stdc++.h>
//using namespace std;
//const int dx[]={0,1,0,-1};//每一个位置的下一步可以走左右上下四个方向 
//const int dy[]={1,0,-1,0};//分别为下、右、上、左 
//struct sj{
//int x,y,turn;
//}s,t,p;//s为起点,t为终点,p为s->t的每一步 
//queue<sj> q;  //数据类型为sj的队列 q
//int n,m,c[101][101];//地型二维数组 
//bool v[101][101];//标记是否走过 
//int main()
//{
//
//    scanf("%d %d",&n,&m);
//    for(int i=1;i<=n;i++)
//    for(int j=1;j<=m;j++)
//        scanf("%d",&c[i][j]);
//    scanf("%d%d%d%d",&s.x,&s.y,&t.x,&t.y);
//    q.push(s);   //将起点s放入空队列中 
//    memset(v,0,sizeof(v));
//    q.front().turn=0;
//        while(!q.empty())
//        {
//            for(int i=0;i<4;i++)
//            {
//                p.x=q.front().x+dx[i];
//                p.y=q.front().y+dy[i];
//                while(p.x>0&&p.x<=n&&p.y>0&&p.y<=m&&!c[p.x][p.y])//从一个方向走到底 
//                {
//                    if(!v[p.x][p.y])    //判断是不是走过 
//                    {
//                        if(p.x==t.x&&p.y==t.y)   //判断到终点t没 
//                        {
//                            printf("%d\n",q.front().turn);
//                            return 0;
//                        }
//                        v[p.x][p.y]=1;
//                        p.turn=q.front().turn+1;
//                        //cout<<p.x<<' '<<p.y<<endl;
//                        q.push(p);
//                    }
//                    //cout<<p.x<<' '<<p.y<<endl;
//                    p.x+=dx[i];                //在一个方向直到底 
//                    p.y+=dy[i];
//                }
//            }
//            q.pop();
//        }
//}

//水杯问题 
//#include<bits/stdc++.h>
//using namespace std;
//bool visit[105][105][105];//用于记录三个杯子的状态 1表示visit[a][b][c]中的a b c状态已经出现过了   
// 
//struct s{    //倒水状态 
//    int a,b,c,step;//a,b,c分别代表第一二三杯子所装的水 ; step代表从10 0 0 到现在 a b c所需要的步数 ;
//    //s(int a = 0, int b = 0, int c = 0, int step = 0):a(a), b(b), c(c), step(step){} //用devC++这编程软件这个可以不要
//    //讲类class的时候才会讲到  
//};
// 
//int bfs(s V, s E){
//    s B;
//    B.a = V.a;B.b=0;B.c=0; 
//    memset(visit, 0, sizeof(visit));
//    visit[V.a][0][0] = 1;
//    queue<s> q;   //队列 q   先进先出   像排队一样   刚生成为空   相当于没有一个人的队伍 
//    q.push(B);    //让B讲队列    相当于让B排在第一位(这时队列或队伍也只有一个人B)     
//    while(!q.empty()){
//        s F = q.front();// 从队列q开头的第一位人的数据赋值给F 
//        //cout<<F.a <<" "<<F.b<<" "<<F.c<<endl;
//        if(F.a == E.a ){  //判断是否满足条件    只要满足就跳出 整个函数 
//            //cout<<F.a <<" "<<F.b<<" "<<F.c<<endl;
//            return F.step;
//        } 
//    
//        
//        q.pop(); //出队列 ,是从队列头出的    //上面的if语句已经判断了队列头一个人不合适,就让它自动离开队列 
//        //不过在出队列之后,会让将这进行一次倒水后的状态进队列,注意进队列是从后面进的,相当于排队是从后面排进去的 
//        if(F.a > 0 && F.b < V.b){        //a->b   从杯a倒水到杯b
//            s S;
//            int v = min(F.a, V.b - F.b);
//            S.a = F.a - v;//
//            S.b = F.b + v;
//            S.c = F.c;
//            S.step = F.step + 1;
//            if(!visit[S.a][S.b][S.c]){
//                q.push(S);
//                visit[S.a][S.b][S.c] = 1;
//            }
//        }
//        if(F.a > 0 && F.c < V.c){        //a->c    从杯a倒水到杯c
//            s S;
//            int v = min(F.a, V.c - F.c);
//            S.a = F.a - v;
//            S.c = F.c + v;
//            S.b = F.b;
//            S.step = F.step + 1;
//            if(!visit[S.a][S.b][S.c]){
//                visit[S.a][S.b][S.c] = 1;
//                q.push(S);
//            }
//        }
//        if(F.b > 0 && F.c < V.c){        //b->c    从杯b倒水到杯c
//            s S;
//            int v = min(F.b, V.c - F.c);
//            S.b = F.b - v;
//            S.c = F.c + v;
//            S.a = F.a;
//            S.step = F.step + 1;
//            if(!visit[S.a][S.b][S.c]){
//                visit[S.a][S.b][S.c] = 1;
//                q.push(S);
//            }
//        }
//        if(F.b > 0 && F.a < V.a){        //b->a    从杯b倒水到杯a
//            s S;
//            int v = min(F.b, V.a - F.a);
//            S.b = F.b - v;
//            S.a = F.a + v;
//            S.c = F.c;
//            S.step = F.step + 1;
//            if(!visit[S.a][S.b][S.c]){
//                visit[S.a][S.b][S.c] = 1;
//                q.push(S);
//            }
//        }
//        if(F.c > 0 && F.a < V.a){        //c->a    从杯c倒水到杯a
//            s S;
//            int v = min(F.c, V.a - F.a);
//            S.c = F.c - v;
//            S.a = F.a + v;
//            S.b = F.b;
//            S.step = F.step + 1;
//            if(!visit[S.a][S.b][S.c]){
//                visit[S.a][S.b][S.c] = 1;
//                q.push(S);
//            }
//        }
//        if(F.c > 0 && F.b < V.b){        //c->b    从杯c倒水到杯b
//            s S;
//            int v = min(F.c, V.b - F.b);
//            S.c = F.c - v;
//            S.b = F.b + v;
//            S.a = F.a;
//            S.step = F.step + 1;
//            if(!visit[S.a][S.b][S.c]){
//                visit[S.a][S.b][S.c] = 1;
//                q.push(S);
//            }
//        }
//    }
//    return -1;
//}
// 
//int main(){
//    s V;//起初状态 10 0 0
//    V.a=10, V.b=3, V.c=7;
//    s E;//目标状态  
//    scanf("%d",&E.a);
//    printf("%d\n", bfs(V, E));
//    return 0;
//}

////装载问题 
//#include <iostream>
//using namespace std;
//int c;                 //载重量
//int n;              //集装箱数量
//int w[100];         //集装箱重量
//int cw;             //c当前载重量
//int bestw;          //c当前最优载重量
//int r;              //剩余集装箱重量
//int x[100];         //当前解
//int bestx[100];      //当前最优解
// 
//void Backtrack(int i){
//    if(i > n){
//    //当前解由于最优解,更新之
//        if(cw > bestw){
//            for(int j = 1; j <= n; j++)
//                bestx[j] = x[j];
//            bestw = cw;
//        }
//    }else{
//        //搜索子树,放入或不放入
//        r -= w[i];              //剩余容量集合去掉w[i]
//        if(cw + w[i] <= c){     //可放入,且放入
//            x[i] = 1;           //放入
//            cw += w[i];
//            Backtrack(i+1);
//            cw -= w[i];
//        }
//           if(cw + r > bestw){      //剩余容量集合依然是去掉w[i],因为w[i]不放入   
//              x[i] = 0;  
//            Backtrack(i+1);
//        }
//        r += w[i];              //回溯
//    }
//}
// 
//int main(){
//    cin>>n>>c;
//    cw = 0;             //每组样例初始化
//    r = 0;
//    bestw = 0;
//    for(int i = 1; i <= n; i++){
//            cin >> w[i];
//            r += w[i];
//    }
//    Backtrack(1);
//    cout<<bestw; 
//    return 0;
//}

////拆分自然数 
//#include <iostream>
//using namespace std;
//int a[1001]={1},n;
////输出函数
//void print(int t){
//    for(int i=1;i<=t-1;i++){
//        cout<<a[i]<<"+";
//    }
//    cout<<a[t]<<endl;
//} 
////搜索回溯函数 
//void search(int s,int t){
//    for(int i=a[t-1];i<=s;i++){
//        if(i<n){  //当前数i要大于等于前1位数,且不超过n
//            a[t]=i;//保存当前拆分的数i
//            s -= i;//s减去数i,s的值将继续拆分
//            if(s == 0){//当s=0时,拆分结束输出结果
//                print(t);
//            }else {
//                search(s,t+1);//当s>0时,继续递归
//            }
//            s += i;    //回溯:加上拆分的数,以便产生所有可能的拆分
//        }
//    }
//}
//int main(){
//    cin>>n;
//    search(n,1);//将要拆分的数n传递给s
//}    

//#include<bits/stdc++.h>
//using namespace std;
//int a[100],n,m;
//void dfs(int dep,int pre,int sum) {
////dep代表深度
////pre代表上一个数
////sum代表累加的值
//    if(sum==n) {        //如果sum==n,则输出
//        for(int i=1; i<=dep-1; i++) {
//            cout<<a[i];
//            if(i!=dep-1)
//                cout<<"+";
//        }
//        cout<<"\n";
//        return ;        //注意这里要结束,不然会一直循环下去,直到崩溃
//    }
//    for(int i=pre; i<=n-1; i++) {        //不要从pre+1开始
//        if(sum+i<=n) {        //如果大于会不符合要求
//            a[dep]=i;
//            dfs(dep+1,i,sum+i);
//        }
//    }
//}
//int main() {
//    cin>>n;        //主函数不用说了
//    dfs(1,1,0);
//
//    return 0;
//}

//********************************************************************    
//#include<bits/stdc++.h>
//using namespace std;
////计算这年已过去的天数(从1月1号开始) 
//int dayNumber(int year,int month,int day){
//    int days=0;//存放传入的时期已过了多少天 
//    bool flag=0;//标记是否闰年,0为平年,1为闰年 
//    //判断参数year是否闰年 
//    if((year%4==0&&year%100!=0)||year%400==0){
//        flag=1;
//    }
//    // 计算前一月前 从(1月1日)已经过去多少天了  
//    //后面再加上参数day   就是一共过去多少天 
//    if(month-1==1){
//        days=31;
//    }else if(month-1==2){
//        days=31+28;
//    }else if(month-1==3){
//        days=31+28+31;
//    }else if(month-1==4){
//        days=31+28+31+30;
//    }else if(month-1==5){
//        days=31+28+31+30+31;
//    }else if(month-1==6){
//        days=31+28+31+30+31+30;
//    }else if(month-1==7){
//        days=31+28+31+30+31+30+31;
//    }else if(month-1==8){
//        days=31+28+31+30+31+30+31+31;
//    }else if(month-1==9){
//        days=31+28+31+30+31+30+31+31+30;
//    }else if(month-1==10){
//        days=31+28+31+30+31+30+31+31+30+31;
//    }else if(month-1==11){
//        days=31+28+31+30+31+30+31+31+30+31+30;
//    }
//    //前面都按平年来算的,这时再判断这年是不是闰年
//    //如果是就要加多一天 
//    if(flag==1&&month>3){
//        days +=1;
//    }
//    days += day; 
//    return days;
//} 
//int main(){
//    
//    int startYear,startMonth,startDay;
//    int endYear,endMonth,endDay;
//    int sumDay=0;//相差天数 
//    cin>>startYear>>startMonth>>startDay;
//    cin>>endYear>>endMonth>>endDay;
//    //如果在同一年 
//    if(startYear==endYear){
//        sumDay=dayNumber(endYear,endMonth,endDay)-dayNumber(startYear,startMonth,startDay);
//    }else if(startYear+1==endYear){//如果相差只有一年 
//        //那就先判断startYear是平年还是闰年   用总天数减去已过天数   再加上结束年已过天数
//        if((startYear%4==0&&startYear%100!=0)||startYear%400==0){
//            sumDay=366-dayNumber(startYear,startMonth,startDay)+dayNumber(endYear,endMonth,endDay);
//        }else {
//            sumDay=365-dayNumber(startYear,startMonth,startDay)+dayNumber(endYear,endMonth,endDay);
//        }     
//    }else {
//        //先求出开始年到结束年之间的天数,比如开始年是2000年,结束年为2008年
//        //那就先算出2001、2002、2003、2004、2005、2006这六年的总年数 
//        for(int i=startYear+1;i<endYear;i++){
//            if((i%4==0&&i%100!=0)||i%400==0){
//                sumDay += 366;
//            }else {
//                sumDay += 365;
//            }
//        }
//        //然后就变成,只求相差一年的问题了 
//        if((startYear%4==0&&startYear%100!=0)||startYear%400==0){
//            sumDay=sumDay+366-dayNumber(startYear,startMonth,startDay)+dayNumber(endYear,endMonth,endDay);
//        }else {
//            sumDay=sumDay+365-dayNumber(startYear,startMonth,startDay)+dayNumber(endYear,endMonth,endDay);
//        }
//    }
//    
//    cout<<sumDay;
//    return 0;
//} 
    
    
    
    
    
    
//    int a,b,r;
//
//    cin>>a>>b;
//    while(b!=a){
//        if(a>=b){
//            r=a%b;
//            a=b;
//            b=r;
//        }else if(a<b){
//            r=b%a;
//            a=b;
//            b=r;
//        }
//        cout<<a<<endl;
//    } 
//    cout<<b<<endl;
//    char passwd[100];
//    int move;
//    gets(passwd);
//    scanf("%d",&move);
//    for(int i=0;i<strlen(passwd);i++){
//        if(passwd[i]>='A'&&passwd[i]<='Z'){
//            passwd[i]=((passwd[i]-'A')-move+26)%26+'A';
//        }else if(passwd[i]>='a'&&passwd[i]<='z'){
//            passwd[i]=((passwd[i]-'a')-move+26)%26+'a'; 
//        }
//    } 
//    cout<<passwd<<endl;

//    int a,b,c;
//    char n,m;
//    scanf("%d %c %d %c %d",&a,&n,&b,&m,&c);
//    if(n=='+'){
//        if(m=='+'){
//            printf("在不在%d%c%d%c%d=%d",a,n,b,m,c,a+b+c); 
//        }else if(m=='-'){
//            printf("在不在%d%c%d%c%d=%d",a,n,b,m,c,a+b-c);
//        }
//    }else if(n=='-'){
//        if(m=='+'){
//            printf("在不在%d%c%d%c%d=%d",a,n,b,m,c,a-b+c); 
//        }else if(m=='-'){
//            printf("在不在%d%c%d%c%d=%d",a,n,b,m,c,a-b-c); 
//        }
//    }

//    int a,b,c;
//    char n,m;
//    cin>>a>>n>>b>>m>>c;
//    if(n=='+'){
//        if(m=='+'){
//            cout<<a<<n<<b<<m<<c<<"="<<a+b+c; 
//        }else if(m=='-'){
//            cout<<a<<n<<b<<m<<c<<"="<<a+b-c; 
//        }
//    }else if(n=='-'){
//        if(m=='+'){
//            cout<<a<<n<<b<<m<<c<<"="<<a-b+c; 
//        }else if(m=='-'){
//            cout<<a<<n<<b<<m<<c<<"="<<a-b-c; 
//        }
//    }


//    int arr[101];
//    int n;
//    int b;
//    int x;
//    cin>>n;
//    for(int i=0;i<n;i++){
//        cin>>arr[i];
//    }
//    cin>>x;
//    b=arr[n-1];
//    //往后移  
//    for(int i=n-1-1;i>=x-1;i--){
//        arr[i+1]=arr[i];
//    }
//    arr[x-1]=b;
//    for(int i=0;i<n;i++){
//        cout<<arr[i]<<" ";
//    }
//    

**项目概述:** 本资源提供了一套采用Vue.js与JavaScript技术栈构建的古籍文献文字检测与识别系统的完整源代码及相关项目文档。当前系统版本为`v4.0+`,基于`vue-cli`脚手架工具开发。 **环境配置与运行指引:** 1. **获取项目文件**后,进入项目主目录。 2. 执行依赖安装命令: ```bash npm install ``` 若网络环境导致安装缓慢,可通过指定镜像源加速: ```bash npm install --registry=https://registry.npm.taobao.org ``` 3. 启动本地开发服务器: ```bash npm run dev ``` 启动后,可在浏览器中查看运行效果。 **构建与部署:** - 生成测试环境产物: ```bash npm run build:stage ``` - 生成生产环境优化版本: ```bash npm run build:prod ``` **辅助操作命令:** - 预览构建后效果: ```bash npm run preview ``` - 结合资源分析报告预览: ```bash npm run preview -- --report ``` - 代码质量检查与自动修复: ```bash npm run lint npm run lint -- --fix ``` **适用说明:** 本系统代码经过完整功能验证,运行稳定可靠。适用于计算机科学、人工智能、电子信息工程等相关专业的高校师生、研究人员及开发人员,可用于学术研究、课程实践、毕业设计或项目原型开发。使用者可在现有基础上进行功能扩展或定制修改,以满足特定应用场景需求。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【EI复现】基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度(Matlab代码实现)内容概要:本文介绍了基于阶梯碳交易机制的虚拟电厂优化调度模型,重点研究了包含P2G-CCS(电转气-碳捕集与封存)耦合技术和燃气掺氢技术的综合能源系统在Matlab平台上的仿真与代码实现。该模型充分考虑碳排放约束与阶梯式碳交易成本,通过优化虚拟电厂内部多种能源设备的协同运行,提升能源利用效率并降低碳排放。文中详细阐述了系统架构、数学建模、目标函数构建(涵盖经济性与环保性)、约束条件处理及求解方法,并依托YALMIP工具包调用求解器进行实例验证,实现了科研级复现。此外,文档附带网盘资源链接,提供完整代码与相关资料支持进一步学习与拓展。; 适合人群:具备一定电力系统、优化理论及Matlab编程基础的研究生、科研人员或从事综合能源系统、低碳调度方向的工程技术人员;熟悉YALMIP和常用优化算法者更佳。; 使用场景及目标:①学习和复现EI级别关于虚拟电厂低碳优化调度的学术论文;②掌握P2G-CCS、燃气掺氢等新型低碳技术在电力系统中的建模与应用;③理解阶梯碳交易机制对调度决策的影响;④实践基于Matlab/YALMIP的混合整数线性规划或非线性规划问题建模与求解流程。; 阅读建议:建议结合提供的网盘资源,先通读文档理解整体思路,再逐步调试代码,重点关注模型构建与代码实现之间的映射关系;可尝试修改参数、结构或引入新的约束条件以深化理解并拓展应用场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值