cpp nlogn

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
 
using namespace std;
 
int main() {
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	string t, s; getline(cin, t); getline(cin, s);
	int ts = t.size(); int ss = s.size();
	vector<int> pi(ss);//pi[x] = y ์ผ ๋•Œ, x ์ง€์ ์—์„œ ์ด์ „ ๋ฌธ์ž์—ด๊ณผ y๋งŒํผ ์ ‘ ๋ฏธ/๋‘ ์‚ฌ๊ฐ€ ์ผ์น˜ํ•จ.
	// ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๋ณ„ ์ ‘๋‘์‚ฌ ์ ‘๋ฏธ์‚ฌ ์ตœ๋Œ€ ์ค‘์ฒฉ ๊ธธ์ด ์ „์ฒ˜๋ฆฌ
	int cur = 0;//๋ถ€๋ถ„ ๋ฌธ์ž์—ด ํฌ์ธํ„ฐ
	for (int i = 1; i < ss; i++) {		
		while (cur > 0 && s[i] != s[cur]) {
			cur = pi[cur - 1];//์ด์ „ ์ ‘ ๋ฏธ/๋‘ ์‚ฌ ์ผ์น˜ ์ž๋ฆฌ ์ฐพ๊ธฐ
		}
		if (s[i] == s[cur]) {//ํ˜„์žฌ ์ž๋ฆฌ๊ฐ€ ์ผ์น˜ํ•œ๋‹ค๋ฉด 
			pi[i] = ++cur;// ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ์ž๋ฆฌ ํ™•์ธ
		}
	}
	cur = 0;//๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์œ„์น˜ ํฌ์ธํ„ฐ
	vector<int> pos;
	for (int i = 0; i < ts; i++) {
		while (cur > 0 && t[i] != s[cur]) { // ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘ ์ง€์ ์ด ์ผ์น˜ํ•˜๋Š” ์ง€์  ํƒ์ƒ‰
			cur = pi[cur - 1];
		}
		if (t[i] == s[cur]) { // ์ผ์น˜ํ•  ๊ฒฝ์šฐ 
			if (cur == ss - 1) { // ์ •ํ•ด์ง„ ๊ธธ์ด๋ฅผ ์ฑ„์› ์„ ๊ฒฝ์šฐ
				pos.push_back(i - ss + 2); // ์‹œ์ž‘ ์ง€์  ๊ฒ€์ƒ‰
				cur = pi[cur]; // ์ „์ฒด ๋ฌธ์ž์—ด์ด ์ผ์น˜ํ–ˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ ํƒ์ƒ‰์€ ํ˜„์žฌ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ ‘ ๋ฏธ/๋‘ ์‚ฌ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์ง€์ ๋ถ€ํ„ฐ ํƒ์ƒ‰ ์‹œ์ž‘
			}
			else {
				cur++; //๋‹ค์Œ ํƒ์ƒ‰ ์ง€์  ๊ฒ€์ƒ‰
			}
		}
	}
	cout << pos.size() << "\n";
	for (const auto& p : pos) {
		cout << p << "\n";
	}
	return 0;
}