Simon has an array a1, a2, ..., an, consisting of n positive integers. Today Simon asked you to find a pair of integers l, r(1 ≤ l ≤ r ≤ n), such that the following conditions hold:
there is integer j (l ≤ j ≤ r), such that all integers al, al + 1, ..., ar are divisible by aj;
value r - l takes the maximum value among all pairs for which condition 1 is true;
Help Simon, find the required pair of numbers (l, r). If there are multiple required pairs find all of them.
Input
The first line contains integer n (1 ≤ n ≤ 3·105).
The second line contains n space-separated integers a1, a2, ..., an(1 ≤ ai ≤ 106).
Output
Print two integers in the first line — the number of required pairs and the maximum value of r - l. On the following line print all l values from optimal pairs in increasing order.
Sample Input
Input
5 4 6 9 3 6
Output
1 3 2
Input
5 1 3 5 7 9
Output
1 4 1
Input
5 2 3 5 7 11
Output
5 0 1 2 3 4 5
constint maxn = 310000;
int num[maxn];
int ans[maxn];
int main()
{
//freopen("in.txt","r",stdin);int n;
while(cin>>n)
{
repf(i,1,n) scanf("%d",&num[i]);
int Max = 0;
int cnt = 0;
for(int i = 1;i<=n;)
{
int L = i;
int R = i;
while(L>=1 && num[L]%num[i] == 0) L--;
while(R<=n && num[R]%num[i] == 0) R++;
i = R;
R--;L++;
if(R - L > Max)
{
Max = R - L;
cnt = 0;
ans[cnt] = L;
cnt++;
}
if(R - L == Max)
{
ans[cnt] = L;
cnt++;
}
}
int sz = unique(ans,ans+cnt) - ans;
printf("%d %d\n",sz,Max);
printf("%d",ans[0]);
rep(i,1,sz) printf(" %d",ans[i]);
cout<<endl;
}
return0;
}
A -Pair of NumbersTime Limit:2000MSMemory Limit:262144KB64bit IO Format:%I64d & %I64uSubmitStatusAppoint description:System Crawler (2013-11-04)Description...