#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6;
int n,sum,a[N];
int tree[N];
int lowbit(int x){
return x&(-x);
}
void bzt(int u,int val){
while(u<=n){
tree[u]+=val;
u+=lowbit(u);
}
}
int query(int u){
int ans=0;
while(u){
ans+=tree[u];
u-=lowbit(u);
}
return ans;
}
unordered_map<int,int> f,e;
unordered_map<int,int>::iterator itf,ite;
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]==0)a[i]=-1;
bzt(i,a[i]);
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
for(int i=1;i<=n;i++){
int f1=query(i-1);
cout<<f1<<" "<<i-1<<endl;
if(f[f1]==0)f[f1]=i;
f[f1]=min(f[f1],i);
e[f1]=max(e[f1],i);
}
for(itf=f.begin(),ite=e.begin();itf!=f.end(),ite!=e.end();itf++,ite++){
int kkk=ite->second-itf->second;
cout<<ite->second<<" "<<itf->second<<endl;
sum=max(sum,kkk);
}
cout<<sum<<endl;
}
当输入为10 1 1 1 1 1 1 1 1 1 0时,程序输出0