#include <bits/stdc++.h>
using namespace std;
#define TLE (double)clock() / CLOCKS_PER_SEC <= 0.95
#define int long long
#define double long double
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
const int N = 1e7 + 5, M = 5e3 + 5, inf = 0x3f3f3f3f3f3f3f3f, mod = 19930726;
int n;
char a[N / 2], b[N];
int v[N / 2];
int p[N];
bool st[N / 2];
void init()
{
int k = 0;
b[k++] = '$', b[k++] = '#';
for (int i = 0; i < n; i++)
{
b[k++] = a[i];
b[k++] = '#';
}
b[k++] = '^';
n = k;
}
void manacher()
{
int mr = 0, mid;
for (int i = 1; i < n; i++)
{
if (i < mr)
p[i] = min(p[mid * 2 - i], mr - i);
else
p[i] = 1;
while (b[i - p[i]] == b[i + p[i]])
p[i]++;
if (i + p[i] > mr)
{
mr = i + p[i];
mid = i;
}
}
}
void solve()
{
memset(st, false, sizeof st);
cin >> a;
n = strlen(a);
int nn = n;
init();
manacher();
for (int i = 1; i < n - 1; i++)
{
if (i % 2 == 0)
{
v[i / 2 - 1] = p[i] - 1;
}
}
for (int i = nn - 1; i >= 1; i--)
{
if (i + (v[i] - 1) / 2 == nn - 1)
{
st[i] = true;
}
else if (st[i + (v[i] - 1) / 2] == true && i == (v[i] - 1) / 2)
{
st[i] = true;
}
}
for (int i = 0; i < nn; i++)
{
if (st[i] == true)
{
cout << (i + 1) << " ";
}
}
cout << endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int T = 1;
cin >> T;
for (int i = 1; i <= T; i++)
{
solve();
}
return 0;
}