直角,记录
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,a[2001000],hash1[2001000],hash2[2001000],bei[2001000],mod=998244353,hit=1e7+7,ans,sum,anss[2001000],sl,sr,some;
int main(){
cin>>n;
ans=1;
for(int i=1;i<=n;i++) cin>>a[i];
bei[0]=1;
for(int i=1;i<=n;i++) bei[i]=bei[i-1]*hit%mod;
for(int i=1;i<=n;i++) hash1[i]=(hash1[i-1]*hit+a[i])%mod;
for(int i=n;i>=1;i--) hash2[i]=(hash2[i+1]*hit+a[i])%mod;
for(int i=1;i<=n;i++){
unordered_map<ll,bool>mp;
some=0;
for(int k=1;k<=n/i;k++){
ll has1=(hash1[k*i]+mod-hash1[(k-1)*i]*bei[i]%mod)%mod;
ll has2=(hash2[(k-1)*i+1]+mod-hash2[k*i+1]*bei[i]%mod)%mod;
if(mp[has1]&&mp[has2]) continue;
some++;
mp[has1]=true;
mp[has2]=true;
}
if(some>ans) ans=some,sl=sr=sr+1,anss[sl]=i;
else if(some==ans) anss[++sr]=i;
}
cout<<ans<<' '<<sr-sl+1<<endl;
for(int i=sl;i<=sr;i++) cout<<anss[i]<<' ';
return 0;
}