#include <bits/stdc++.h>
using namespace std;
const int M = 998244353;
struct modint {
  int val = 0;
  modint() {}
  modint(int a) : val(a) {
    while (val < 0) {
      val += M;
    }
    while (val >= M) {
      val -= M;
    }
  }
  modint(long long a) : val(a % M) {
    if (val < 0) {
      val += M;
    }
  }
  modint operator+=(modint oth) {
    val += oth.val;
    val -= (val >= M) ? M : 0;
    return *this;
  }
  modint operator-=(modint oth) {
    val -= oth.val;
    val += (val < 0) ? M : 0;
    return *this;
  }
  modint operator*=(modint oth) {
    val = 1LL * val * oth.val % M;
    return *this;
  }
  void operator++() {
    ++val;
    if (val == M) {
      val = 0;
    }
  }
  void operator--() {
    --val;
    if (val == -1) {
      val = M - 1;
    }
  }
  modint operator-() {
    modint res;
    res.val = (val == 0) ? 0 : M - val;
    return res;
  }
  int mod() { return M; }
  modint pow(long long e) {
    modint base = val;
    modint res = 1;
    while (e > 0) {
      if (e % 2 == 1) {
        res *= base;
      }
      base *= base;
      e /= 2;
    }
    return res;
  }
  modint inv() { return pow(M - 2); }
  friend modint operator+(modint a, modint b) { return modint(a) += b; }
  friend modint operator-(modint a, modint b) { return modint(a) -= b; }
  friend modint operator*(modint a, modint b) { return modint(a) *= b; }
  friend bool operator==(modint a, modint b) { return a.val == b.val; }
  friend bool operator!=(modint a, modint b) { return a.val != b.val; }
};
using mint = modint;
void ntt(vector<mint> &a) {
  int n = a.size();
  for (int i = 1, j = 0; i < n; ++i) {
    int k = n / 2;
    while ((j & k) > 0) {
      j ^= k;
      k /= 2;
    }
    j ^= k;
    if (i < j) {
      swap(a[i], a[j]);
    }
  }
  mint base = mint(3).pow((M - 1) / n);
  for (int len = 2; len <= n; len *= 2) {
    mint root = base.pow(n / len);
    for (int i = 0; i < n; i += len) {
      mint cur = 1;
      for (int j = 0; j < len / 2; ++j) {
        mint l = a[i + j];
        mint r = a[i + j + len / 2] * cur;
        a[i + j] = l + r;
        a[i + j + len / 2] = l - r;
        cur *= root;
      }
    }
  }
}
vector<mint> mul(const vector<mint> &u, const vector<mint> &v) {
  int n = 1;
  while (n < int(u.size() + v.size())) {
    n *= 2;
  }
  vector<mint> a(u.begin(), u.end());
  vector<mint> b(v.begin(), v.end());
  a.resize(n);
  b.resize(n);
  ntt(a);
  ntt(b);
  for (int i = 0; i < n; ++i) {
    a[i] *= b[i];
  }
  ntt(a);
  mint inv = mint(n).inv();
  for (mint &i : a) {
    i *= inv;
  }
  reverse(a.begin() + 1, a.end());
  return a;
}
void solve() {
  int n;
  string s;
  cin >> n >> s;
  vector<mint> v(n), k(n);
  for (int i = 0; i < n; ++i) {
    if (s[i] == 'V') {
      v[i] = 1;
    } else if (s[i] == 'K') {
      k[n - 1 - i] = 1;
    }
  }
  vector<bool> bad(n + 1);
  vector<mint> vk = mul(v, k);
  for (int i = 0; i < 2 * n; ++i) {
    if (vk[i] != 0) {
      bad[abs(n - 1 - i)] = true;
    }
  }
  vector<int> ans;
  for (int i = 1; i <= n; ++i) {
    bool good = true;
    for (int j = i; j <= n; j += i) {
      good &= !bad[j];
    }
    if (good) {
      ans.push_back(i);
    }
  }
  cout << ans.size() << "\n";
  for (auto i : ans) {
    cout << i << " ";
  }
  cout << "\n";
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int t;
  cin >> t;
  while (t--) {
    solve();
  }
}
