#include<bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("my solution")
//#define int long long
#define ll long long
#define nlp nullptr
#define btc __builtin_popcount
#define sht int_fast16_t
#define ld double
#define fi first
#define se second
using namespace std;
const int N = 3e5 + 5 , K = 8 , B = 369;
const int md = 998244353;
const int inf = 1e9;
const long double eps = 1e-8;
const bool stress = false;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
bool chk(int l , int i , vector<int>& s , vector<int>& txt){
	if(l == 0) return true;
	int ps1 = i - l + s[l] , n = txt.size();
	int ps2 = i - l + s[l - 1];
	if(ps1 >= n or ps2 >= n) return false;
	return (l < n) and (txt[ps1] >= txt[ps2]);
}
vector<int> cmp(vector<int> s , vector<int> t){
	int n = s.size() , m = t.size() , suf[n + 1] = {} , sf = 0;
	vector<int> ans;
	for(int i = 1;i < n; ++ i){
		while(sf and ! chk(sf , i , s , s)) sf = suf[sf - 1];
		if(chk(sf , i , s , s)) sf ++; 
		//cout << sf << ' ';
		suf[i] = sf;
	}
	sf = 0;
	for(int i = 0;i < m; ++ i){
		while(sf and ! chk(sf , i , s , t)) sf = suf[sf - 1];
		if(chk(sf , i , s , t)) sf ++;
		//cout << sf << ' ';
		if(sf == n) ans.push_back(i - n + 1);	
	}
	//cout << chk(s , t , 1 , 5);
	return ans;	
}
void solve(){
	int n , m;
	cin >> n >> m;
	vector<int> s(n) , t(m);
	for(int i = 0;i < n; ++ i){
		cin >> s[i];
		s[i] --;
	}
	for(int i = 0;i < m; ++ i) cin >> t[i];
	vector<int> ans = cmp(s , t);
	cout << ans.size() << '\n';
	for(auto to : ans) cout << to + 1 << ' ';
}
main()
{
	//217
	//freopen("seating.in", "r", stdin) , freopen("seating.out" , "w", stdout);
	ios_base::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
    int T = 1;
    //cin >> T;
    while(T --)
    {
    	solve();
    	cout << '\n';
    }
}
Compilation message (stderr)
mat.cpp:3:35: warning: bad option '-fmy solution' to pragma 'optimize' [-Wpragmas]
    3 | #pragma GCC optimize("my solution")
      |                                   ^
mat.cpp:19:59: warning: bad option '-fmy solution' to attribute 'optimize' [-Wattributes]
   19 | bool chk(int l , int i , vector<int>& s , vector<int>& txt){
      |                                                           ^
mat.cpp:26:46: warning: bad option '-fmy solution' to attribute 'optimize' [-Wattributes]
   26 | vector<int> cmp(vector<int> s , vector<int> t){
      |                                              ^
mat.cpp:45:12: warning: bad option '-fmy solution' to attribute 'optimize' [-Wattributes]
   45 | void solve(){
      |            ^
mat.cpp:58:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   58 | main()
      | ^~~~
mat.cpp:58:6: warning: bad option '-fmy solution' to attribute 'optimize' [-Wattributes]
   58 | main()
      |      ^| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |