#d11006. 山脉

山脉

山脉

题目描述

对于序列 a1,a2,…,ana_1 , a_2 , \dots , a_n ,若它的子段 al,al+1,…,ara_l , a_{l + 1} , \dots , a_r , 如果存在 mid∈[l+1,r−1]mid \in [l + 1, r - 1] ,使得 al,al+1,…,amida_l , a_{l + 1} , \dots , a_{mid} 是不减的, amid,amid+1,…,ara_{mid} , a_{mid + 1} , \dots , a_r 是不增的,且 r−l+1≥3r - l + 1 \geq 3 , 就称这个子段是山型的。

若对于整数 kk (3≤k≤n)(3 \leq k \leq n) , 若子段 [1,k][1 , k] , [k+1,2k][k + 1 , 2k] , … \dots , [(m−1)k+1,mk][(m - 1)k + 1,mk] , [mk+1,n][mk + 1 , n] 都是山型的,且 mk≤n,n−mk<kmk \leq n , n - mk < k , 我们就称序列 aa 是一个山脉。

现在给定一个正整数序列 aa , 其中值为 −1-1 的数可以表示任何数,请你找出所有使得该序列为山脉的整数 kk 。

输入格式

第一行输入一个整数 n n , 表示序列的长度 (1≤n≤105) ( 1 \leq n \leq 10^5 ) 。

第二行输入 n n 个整数 a1,a2,a3,…,an a_1 , a_2 , a_3 , \dots , a_n 表示给定的序列 。 (1≤ai≤109 或 ai=−1) ( 1 \leq a_i \leq 10^9 \ 或 \ a_i = -1 )

输出格式

第一行一个整数 mm , 表示满足要求的 kk 的数量。

接下来 mm 行,每行一个整数,从小到大输出所有满足要求的 kk 。

样例输入

11
7 -1 11 10 -1 -1 26 14 9 12 -1

样例输出

1
4