로고 매칭

시간 제한2초메모리 제한128 MB

문제

새 광고 캠페인의 일환으로, 한 대기업이 도시 어딘가에 자사 로고를 세우려고 한다. 회사는 올해 광고 예산 전부를 이 로고에 쓸 예정이라 로고는 아주 거대해야 한다. 한 관리자는 건물 전체를 로고의 구성 요소로 사용하기로 했다.

로고는 서로 높이가 모두 다른 $n$개의 세로 줄무늬로 이루어지며, 줄무늬는 왼쪽에서 오른쪽으로 $1$번부터 $n$번까지 번호가 매겨진다. 로고는 $1, 2, \dots, n$의 순열 $(s_1, s_2, \dots, s_n)$으로 표현된다. 즉 $s_1$번 줄무늬가 가장 낮고, $s_2$번 줄무늬가 두 번째로 낮으며, 이런 식으로 $s_n$번 줄무늬가 가장 높다. 줄무늬의 실제 높이 값은 중요하지 않고 오직 상대적인 순서만이 의미가 있다.

큰길을 따라 $m$개의 건물이 늘어서 있고, 모든 건물의 높이는 서로 다르다. 연속한 $n$개의 건물로 이루어진 구간이 로고와 일치한다는 것은, 그 구간 안에서 $s_1$번째 건물이 가장 낮고, $s_2$번째 건물이 두 번째로 낮고, 이런 식으로 순서가 로고와 같음을 뜻한다. 예를 들어 높이가 $5, 10, 4$인 건물들은 로고 $(3, 1, 2)$와 일치한다. $3$번째 건물(높이 $4$)이 가장 낮고, $1$번째 건물이 두 번째로 낮으며, $2$번째 건물이 가장 높기 때문이다. 로고가 건물들과 일치하는 모든 위치를 찾아라.

입력

첫째 줄에 두 정수 $n$과 $m$이 주어진다 ($2 \le n \le m \le 10^6$).

둘째 줄에 $1, 2, \dots, n$의 순열을 이루는 $n$개의 정수 $s_1, \dots, s_n$이 주어진다 ($1 \le s_i \le n$, 그리고 $i \ne j$이면 $s_i \ne s_j$).

셋째 줄에 건물들의 높이인 $m$개의 정수 $h_1, \dots, h_m$이 주어진다 ($1 \le h_i \le 10^9$). 모든 $h_i$는 서로 다르다.

각 줄에서 정수들은 하나의 공백으로 구분된다.

출력

첫째 줄에 일치하는 구간의 개수 $k$를 출력한다.

둘째 줄에는 각 일치에 대해 로고의 $1$번 줄무늬에 대응하는 건물의 $1$-기반 번호, 즉 각 일치 구간의 시작 위치를 증가하는 순서로 하나의 공백으로 구분하여 출력한다.

$k = 0$이면 둘째 줄은 비워 둔다.

힌트

로고 일치 예시

구간 $6, 3, 8, 12, 7$과 $7, 1, 10, 11, 9$은 모두 순열 $(2, 1, 5, 3, 4)$로 표현되는 로고와 일치한다. 첫 번째 구간에서 $2$번째 건물(높이 $3$)이 가장 낮고, $1$번째 건물(높이 $6$)이 두 번째로 낮으며, $5$번째 건물(높이 $7$)이 세 번째로 낮고, 이런 식으로 이어진다.