// Problem : B. Blocks
// Contest : Codeforces - Codeforces Round #608 (Div. 2)
// URL : https://codeforces.com/problemset/problem/1271/B
// Memory Limit : 256 MB
// Time Limit : 2000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#include<bits/stdc++.h>
using namespace std;

#define ff first
#define fs second
#define lb lower_bound
#define ub upper_bound

#define int long long
#define pii pair<int, int>
#define vi vector<int>
#define vvi vector< vi >
#define vpii vector< pii >
#define vb vector<bool>
#define si set<int>
#define mii map<int, int>
#define mci map<char, int>
#define md 1000000007
#define pb push_back
#define eb emplace_back
#define fio ios_base::sync_with_stdio (false); cin.tie (NULL);  cout.tie (NULL);
#define qw1(x) cerr<<#x<<": "<<x<<" "<<endl
#define qw2(x, y) cerr<<#x<<": "<<x<<" | "<<#y<<": "<<y<<endl
#define qw3(x, y, z) cerr<<#x<<":" <<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl
#define qw4(a, b, c, d) cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl

#define f(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define rl(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define all(x) x.begin(),x.end()
#define endl '\n'
void printv(vector<int>  v){ for(int i=0;i<v.size();i++) cout<<v[i]<<' '; cout<<endl;   }
int bem(int m , int n, int mod) { int res=1; while(n){
	     			        if(n%2!=0) { res*=m; res%=mod; }
	    			        m*=m;   m%=mod;   n/=2;
			                          }
				return res;	}
int be(int a, int b) { int res=1; 	while(b){
				if(b%2!=0) res*=a;
				a*=a; b/=2;
				}
			return res;	}
void sieve(int n, vb &prime){
    prime[0]=false;     prime[1]=false;
    for(int i=2;i*i<=n;i++){
         if(prime[i]==true){
              for(int j=i*i;j<=n;j+=i)    prime[j]=false;
             	  }
    	 }
	}

void solve()
  {
  	int n; cin>>n; string s; cin>>s;
  	int nb=0, nw=0;
  	f(i, 0, n-1) if(s[i]=='W') nw++; else nb++;
  	if(nb==0 || nw==0) { cout<<0<<endl; return; }
  	if( (nb&1) && (nw&1) ) { cout<<-1; return; }
  	if( (nb&1) || (nw&1) )
  	{
  		char c; if(nb&1) c='B'; else c='W';
  		vi w;
  		f(i, 0, n-1) if(s[i]==c) w.pb(i);
  		vi v;
  	if(w[ w.size()/2] >= (n/2))
  	{	int bb=1;
  		rl(i, w.size()-1, 0)
  		{
  			f(j, w[i]+1, n-bb) v.pb(j);
  			bb++;
  		}
  		for( int i=1; i<=(n-w.size()-1); i+=2)
  		 v.pb(i);
  	}
  	else
  	{	int bb=0;
  		f(i, 0, w.size()-1)
  		{
  			rl(j, w[i] ,bb ) v.pb(j);
  			bb++;
  		}
  		for(int i=w.size()+1; i<=n; i+=2) v.pb(i);
  	}
  	cout<<v.size()<<endl; printv(v);

  	}
  	else
  	{
  		vi v;
	int i;
	char c=s[0];
	for( i=1; i<n; i++)
	{
		if(s[i]!=c) break;
	}
	int j;
	for(j=i; j<n-1; j++)
	{
		if(s[j]==c && s[j+1]==c) {j++; continue;}
		else if(s[j]==s[j+1]) {s[j]=c; s[j+1]=c; v.pb(j+1); j++; }
		else if(s[j]==c ) { continue; }
		else {swap(s[j], s[j+1]); v.pb(j+1);}
		//qw2(j, s);
	}
	cout<<v.size()<<endl; printv(v);
  	}

  }

int32_t main ()
{
//fio
int t=1;
//cin>>t;
while(t--){
	solve();
}

}


#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

int main(int argc, char** argv)
{
#ifdef LOCAL
  freopen(strcat(argv[0], ".in"), "ab+", stdin);
#endif

  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int n;
  string s;
  cin >> n >> s;

  int b = 0, w = 0;
  for (int i = 0; i < n; i++) {
    b += (s[i] == 'B');
    w += (s[i] == 'W');
  }

  if (max(b, w) == n) {
    cout << 0;
    exit(0);
  }

  if (b % 2 + w % 2 <= 1) {
    char c = (b % 2 ? 'W' : 'B'), d = (b % 2 ? 'B' : 'W');
    vector<int> ans;
    string t = "", u = "";
    while (w && b) {
      for (int i = 1; i < n; i++) {
        string save = s;
        //cout << s[i - 1] << ' ' << s[i] << endl;
        if (s[i - 1] == s[i]) {
          if (s[i] == 'W' && b >= w) {
            s[i] = 'B';
            s[i - 1] = 'B';
            b += 2;
            w -= 2;
            ans.push_back(i);
          }
          else if (s[i] == 'B' && w >= b) {
            s[i] = 'W';
            s[i - 1] = 'W';
            w += 2;
            b -= 2;
            ans.push_back(i);
          }
        }
        else if (s[i] != s[i - 1]) {
          if (i + 1 < n && s[i] == s[i + 1]) {
            continue;
          }
          swap(s[i], s[i - 1]);
          ans.push_back(i);
          break;
        }
        //if (save != s) cout << s << endl;
      }
      //cout << s << endl;
    }
    //if (ans.size() > 3 * n) {
      //cout << -1;
      //exit(0);
    //}
    cout << ans.size() << endl;
    for (auto it : ans) cout << it << ' ';
  }
  else cout << -1;

  return 0;
}


#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

int main(int argc, char** argv)
{
#ifdef LOCAL
  freopen(strcat(argv[0], ".in"), "ab+", stdin);
#endif

  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int n;
  string s;
  cin >> n >> s;

  int b = 0, w = 0;
  for (int i = 0; i < n; i++) {
    b += (s[i] == 'B');
    w += (s[i] == 'W');
  }

  if (b % 2 + w % 2 <= 1) {
    char c = (b % 2 ? 'W' : 'B'), d = (b % 2 ? 'B' : 'W');
    vector<int> ans;
    string t = "";
    for (int i = 0; i < n; i++) t += d;
    while (s != t) {
      for (int i = 1; i < n; i++) {
        if (s[i - 1] == s[i] && s[i] == c) {
          s[i] = d;
          s[i - 1] = d;
          ans.push_back(i);
          i++;
        }
        else if (s[i] != s[i - 1]) {
          swap(s[i], s[i - 1]);
          ans.push_back(i);
        }
        //cout << s << endl;
      }
    }
    cout << ans.size() << endl;
    for (auto it : ans) cout << it << ' ';
  }
  else cout << 0 - (max(b, w) != n);

  return 0;
}


#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

char inv(char c) { return c == 'W' ? 'B' : 'W'; }

void invert(string& s, int i) { s[i] = inv(s[i]), s[i + 1] = inv(s[i + 1]); }

pair<int, int> count(const string& s)
{
  int w = 0, b = 0;
  for (int i = 0; i < s.size(); i++) w += s[i] == 'W', b += s[i] == 'B';
  return {b, w};
}

bool valid(const string& s)
{
  auto [b, w] = count(s);
  return w == s.size() || b == s.size();
}

char get_color(const string& s)
{
  auto [b, w] = count(s);
  return (b % 2 == 0 ? 'W' : w % 2 == 0 ? 'B' : 'N');
}

int main(int argc, char** argv)
{
#ifdef LOCAL
  freopen(strcat(argv[0], ".in"), "ab+", stdin);
#endif

  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int n;
  string s;
  cin >> n >> s;

  char c = get_color(s);

  if (c != 'N') {
    int k = 0;
    vector<int> ans;
    while (!valid(s)) {
      for (int i = 0; i + 1 < n; i++) {
        if (s[i] != s[i + 1] && s[i] != c || s[i] == inv(c)) {
          k++;
          ans.push_back(i + 1);
          invert(s, i);
        }
      }
    }
    cout << k << endl;
    for (auto it : ans) cout << it << ' ';
  }
  else cout << -1;

  return 0;
}


#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

void invert(string& s, int i)
{
  s[i] = s[i] == 'W' ? 'B' : 'W';
  s[i + 1] = s[i + 1] == 'W' ? 'B' : 'W';
}

int valid(const string& s)
{
  int w = 0, b = 0;
  for (int i = 0; i < s.size(); i++)
    w += s[i] == 'W', b += s[i] == 'B';
  if (w % 2 + b % 2 == 2) return -1;
  return w == s.size() || b == s.size();
}

int main(int argc, char** argv)
{
#ifdef LOCAL
  freopen(strcat(argv[0], ".in"), "ab+", stdin);
#endif

  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int n;
  string s;
  cin >> n >> s;

  if (valid(s) != -1) {
    int k = 0;
    vector<int> ans;
    while (!valid(s)) {
      for (int i = 0; i + 1 < n; i++) {
        if (s[i] != s[i + 1] && s[i] != 'W' || (s[i] == 'B')) {
          k++;
          ans.push_back(i + 1);
          invert(s, i);
        }
      }
    }
    cout << k << endl;
    for (auto it : ans) cout << it << ' ';
  }
  else cout << -1;

  return 0;
}


#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

int main(int argc, char** argv)
{
#ifdef LOCAL
  freopen(strcat(argv[0], ".in"), "ab+", stdin);
#endif

  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int n;
  string s;
  cin >> n >> s;

  int b = 0, w = 0;
  for (int i = 0; i < n; i++) {
    b += (s[i] == 'B');
    w += (s[i] == 'W');
  }

  if (max(b, w) == n) {
    cout << 0;
    exit(0);
  }

  if (b % 2 + w % 2 <= 1) {
    char c = (b % 2 ? 'W' : 'B'), d = (b % 2 ? 'B' : 'W');
    vector<int> ans;
    string t = "";
    for (int i = 0; i < n; i++) t += d;
    while (s != t) {
      for (int i = 1; i < n; i++) {
        if (s[i - 1] == s[i] && s[i] == c) {
          s[i] = d;
          s[i - 1] = d;
          ans.push_back(i);
          i++;
        }
        else if (s[i] != s[i - 1]) {
          if (i + 1 < n && s[i] == s[i + 1]) continue;
          swap(s[i], s[i - 1]);
          ans.push_back(i);
        }
      }
    }
    if (ans.size() > 3 * n) {
      cout << -1;
      exit(0);
    }
    cout << ans.size() << endl;
    for (auto it : ans) cout << it << ' ';
  }
  else cout << -1;

  return 0;
}


#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

int main(int argc, char** argv)
{
#ifdef LOCAL
  freopen(strcat(argv[0], ".in"), "ab+", stdin);
#endif

  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int n;
  string s;
  cin >> n >> s;

  int b = 0, w = 0;
  for (int i = 0; i < n; i++) {
    b += (s[i] == 'B');
    w += (s[i] == 'W');
  }

  if (max(b, w) == n) {
    cout << 0;
    exit(0);
  }

  if (b % 2 + w % 2 <= 1) {
    char c = (b % 2 ? 'W' : 'B'), d = (b % 2 ? 'B' : 'W');
    vector<int> ans;
    string t = "";
    for (int i = 0; i < n; i++) t += d;
    while (s != t) {
      for (int i = 1; i < n; i++) {
        if (s[i - 1] == s[i] && s[i] == c) {
          s[i] = d;
          s[i - 1] = d;
          ans.push_back(i);
          i++;
        }
        else if (s[i] != s[i - 1]) {
          swap(s[i], s[i - 1]);
          ans.push_back(i);
        }
        //cout << s << endl;
      }
    }
    cout << ans.size() << endl;
    for (auto it : ans) cout << it << ' ';
  }
  else cout << -1;

  return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   fi(i,0,n,1)
   {
       if(s[i]=='W')
       c++;
   }
   if(!((iseven(n)&&iseven(c))||(!iseven(n)&&!iseven(c))))
   {
       cout<<-1<<"\n";
       return 0;
   }
   string w="",b="";
   fi(i,0,n,1)
   {
       w=w+"W";
       b=b+"B";
   }
   vll ans;
   int i=0;
   while(1)
   {
       if(s==w||s==b)
       break;
      if(i!=0&&s[i]==s[i-1])
      {
          i++;
          continue;
      }
       ans.pb(i+1);

       if(s[i]=='W')
       s[i]='B';
       else
       s[i]='W';
       if(s[i+1]=='W')
       s[i+1]='B';
       else
       s[i+1]='W';
        if(s[i]==s[i+1])
       {
           i++;
       }
       i++;
       if(i>=n-1)
       i=0;

   }
   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   ll arr[n]={0};
   fi(i,0,n,1)
   {
       if(s[i]=='W'){
       arr[i]=1;
        c++;}
   }
   if((iseven(n)&&iseven(c)==false))
   {
       cout<<-1<<"\n";
       return 0;
   }

   vll ans;
   fi(i,1,n-1,1)
   {
       if(arr[i]!=arr[i-1])
       {
           arr[i]=1-arr[i];
           arr[i+1]=1-arr[i+1];
           ans.pb(i+1);
       }
   }
   if(arr[n-1]!=arr[n-2])
   {
       fi(i,0,n-1,2)
       ans.pb(i+1);

   }

   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   fi(i,0,n,1)
   {
       if(s[i]=='W')
       c++;
   }
   if((iseven(n)&&iseven(c)==false))
   {
       cout<<-1<<"\n";
       return 0;
   }
   string w="",b="";
   fi(i,0,n,1)
   {
       w=w+"W";
       b=b+"B";
   }
   vll ans;
   int i=0;
   while(1)
   {
       if(i>=n-1)
       i=0;
       if(s==w||s==b)
       break;
      if(i!=0&&s[i]==s[i-1]||i==0&&s[i]==s[n-1])
      {
          i++;
          continue;
      }
       ans.pb(i+1);

       if(s[i]=='W')
       s[i]='B';
       else
       s[i]='W';
       if(s[i+1]=='W')
       s[i+1]='B';
       else
       s[i+1]='W';
       /* if(s[i]==s[i+1])
       {
           i++;
       }*/
       i++;
       if(i>=n-1)
       i=0;

   }
   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   fi(i,0,n,1)
   {
       if(s[i]=='W')
       c++;
   }
   if(!((iseven(n)&&iseven(c))||(!iseven(n)&&!iseven(c))))
   {
       cout<<-1<<"\n";
       return 0;
   }
   string w="",b="";
   fi(i,0,n,1)
   {
       w=w+"W";
       b=b+"B";
   }
   vll ans;
   int i=0;
   while(1)
   {
       if(i>=n-1)
       i=0;
       if(s==w||s==b)
       break;
      if(i!=0&&s[i]==s[i-1]||i==0&&s[i]==s[n-1])
      {
          i++;
          continue;
      }
       ans.pb(i+1);

       if(s[i]=='W')
       s[i]='B';
       else
       s[i]='W';
       if(s[i+1]=='W')
       s[i+1]='B';
       else
       s[i+1]='W';
        if(s[i]==s[i+1])
       {
           i++;
       }
       i++;
       if(i>=n-1)
       i=0;

   }
   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   fi(i,0,n,1)
   {
       if(s[i]=='W')
       c++;
   }
   if(!((iseven(n)&&iseven(c))||(!iseven(n)&&!iseven(c))))
   {
       cout<<-1<<"\n";
       return 0;
   }
   string w="",b="";
   fi(i,0,n,1)
   {
       w=w+"W";
       b=b+"B";
   }
   vll ans;
   int i=0;
   while(1)
   {
       if(i>=n-1)
       i=0;
       if(s==w||s==b)
       break;
      if(i!=0&&s[i]==s[i-1])
      {
          i++;
          continue;
      }
       ans.pb(i+1);

       if(s[i]=='W')
       s[i]='B';
       else
       s[i]='W';
       if(s[i+1]=='W')
       s[i+1]='B';
       else
       s[i+1]='W';
        if(s[i]==s[i+1])
       {
           i++;
       }
       i++;
       if(i>=n-1)
       i=0;

   }
   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   ll arr[n]={0};
   fi(i,0,n,1)
   {
       if(s[i]=='W')
       arr[i]=1;

       c++;
   }
   if((iseven(n)&&iseven(c)==false))
   {
       cout<<-1<<"\n";
       return 0;
   }

   vll ans;
   fi(i,1,n-1,1)
   {
       if(arr[i]!=arr[i-1])
       {
           arr[i]=1-arr[i];
           arr[i+1]=1-arr[i+1];
           ans.pb(i+1);
       }
   }
   if(arr[n-1]!=arr[n-2])
   {
       fi(i,0,n-1,2)
       ans.pb(i+1);

   }

   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   fi(i,0,n,1)
   {
       if(s[i]=='W')
       c++;
   }
   if(!((iseven(n)&&iseven(c))||(!iseven(n)&&!iseven(c))))
   {
       cout<<-1<<"\n";
       return 0;
   }
   string w="",b="";
   fi(i,0,n,1)
   {
       w=w+"W";
       b=b+"B";
   }
   vll ans;
   int i=0;
   while(1)
   {
       if(s==w||s==b)
       break;

       ans.pb(i+1);
       /*if(s[i]==s[i+1])
       {
           i++
       }*/
       if(s[i]=='W')
       s[i]='B';
       else
       s[i]='W';
       if(s[i+1]=='W')
       s[i+1]='B';
       else
       s[i+1]='W';
       i++;
       if(i==n-1)
       i=0;

   }
   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   fi(i,0,n,1)
   {
       if(s[i]=='W')
       c++;
   }
   if(!((iseven(n)&&iseven(c))||(!iseven(n)&&!iseven(c))))
   {
       cout<<-1<<"\n";
       return 0;
   }
   string w="",b="";
   fi(i,0,n,1)
   {
       w=w+"W";
       b=b+"B";
   }
   vll ans;
   fi(i,0,n-1,1)
   {
       if(s==w||s==b)
       break;
       ans.pb(i+1);
       if(s[i]=='W')
       s[i]='B';
       else
       s[i]='W';
       if(s[i+1]=='W')
       s[i+1]='B';
       else
       s[i+1]='W';

   }
   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   ll arr[n]={0};
   fi(i,0,n,1)
   {
       if(s[i]=='W'){
       arr[i]=1;
       c++;}

   }
   if((iseven(n)&&iseven(c)==false))
   {
       cout<<-1<<"\n";
       return 0;
   }

   vll ans;
   fi(i,1,n-1,1)
   {
       if(arr[i]!=arr[i-1])
       {
           arr[i]=1-arr[i];
           arr[i+1]=1-arr[i+1];
           ans.pb(i+1);
       }
   }
   if(arr[n-1]!=arr[n-2])
   {
       for(int i=n-2;i>=0;i--)
       {
           if(arr[i]!=arr[i+1])
           {
               arr[i]=1-arr[i];
               arr[i-1]=1-arr[i-1];
               ans.pb(i);
           }
       }

   }

   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   ll arr[n]={0};
   fi(i,0,n,1)
   {
       if(s[i]=='W')
       arr[i]=1;

       c++;
   }
   if((iseven(n)&&iseven(c)==false))
   {
       cout<<-1<<"\n";
       return 0;
   }

   vll ans;
   fi(i,1,n-1,1)
   {
       if(arr[i]!=arr[i-1])
       {
           arr[i]=1-arr[i];
           arr[i+1]=1-arr[i+1];
           ans.pb(i+1);
       }
   }
   if(arr[n-1]!=arr[n-2])
   {
       for(int i=n-2;i>=0;i--)
       {
           if(arr[i]!=arr[i+1])
           {
               arr[i]=1-arr[i];
               arr[i-1]=1-arr[i-1];
               ans.pb(i);
           }
       }

   }

   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//#define ll cpp_int
#define ll long long
#define fi(a, b, c, d) for(int a = b; a < c; a += d)
#define fl(a, b, c, d) for(ll a = b; a < c; a += d)
#define fei(a, b, c, d) for(int a = b; a <= c; a += d)
#define fel(a, b, c, d) for(ll a = b; a <= c; a += d)
#define vi vector<int>
#define vll vector<ll>
#define viip vector<pair<int,int>>
#define vllp vector<pair<ll,ll>>
#define pb 	push_back
//pairs
#define pi pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define F first
#define S second
//using boost::multiprecision::cpp_int;
using namespace std;
bool iseven(ll n)
{
    if(n%2==0)
    return true;
    else
    {
        return false;
    }

}
ll power(ll x, unsigned ll y)
{
    ll res = 1;     // Initialize result

    while (y > 0)
    {
        // If y is odd, multiply x with result
        if (y & 1)
            res = res*x;

        // y must be even now
        y = y>>1; // y = y/2
        x = x*x;  // Change x to x^2
    }
    return res;
}
void print(vector<ll> a,ll n)
{
    fi(i,0,n,1)
    cout<<a[i]<<" ";
}
bool sec(const pair<ll,ll> &a,const pair<ll,ll> &b)
{   if(a.first==b.first)
    return (a.second > b.second);
    else
    {
        return (a.first > b.first);
    }

}

ll fun(ll n)
{
    return (n*(n+1))/2;
}

string fun(char ch, ll i)
{
    string g="";
    while(i--)
    {
      g+=ch;
    }
    return g;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

   ll n;
   cin>>n;
   string s;
   cin>>s;
   ll c=0;
   fi(i,0,n,1)
   {
       if(s[i]=='W')
       c++;
   }
   if(!((iseven(n)&&iseven(c))||(!iseven(n)&&!iseven(c))))
   {
       cout<<-1<<"\n";
       return 0;
   }
   string w="",b="";
   fi(i,0,n,1)
   {
       w=w+"W";
       b=b+"B";
   }
   vll ans;
   int i=0;
   while(1)
   {
       if(s==w||s==b)
       break;

       ans.pb(i+1);
       /*if(s[i]==s[i+1])
       {
           i++
       }*/
       if(s[i]=='W')
       s[i]='B';
       else
       s[i]='W';
       if(s[i+1]=='W')
       s[i+1]='B';
       else
       s[i+1]='W';
       i++;
       if(i==n-2)
       i=0;

   }
   if(ans.size()==0)
   {
       cout<<0<<"\n";
       return 0;
   }
   cout<<ans.size()<<"\n";
   print(ans,ans.size());
   cout<<"\n";
return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;
typedef vector<char> vc;
typedef map<long long,long long> mpi;
#define vbi vector<bool>
#define mod 1000000007
#define all(x) x.begin(),x.end()
#define alr(x) x.rbegin(),x.rend()
#define mp make_pair
#define pb push_back
#define sd second
#define ft first
#define endl '\n'
#define cnl cout<<endl;
#define frr(i,b) for(ll i=0; i<b;i++)
#define fb(i,b) for(ll i=b-1; i>=0; i--)
#define pi  3.141592653589793238
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define deb(x) cout<<#x<<" = "<<x<<"\n";
#define CASET int ___T; scanf("%d", &___T); for(int cs=1;cs<=___T;cs++)
const int N = 2e5 + 5;
ll i,j,k;
void solve()
{
     ll n; cin>>n; string s; cin>>s;
     vl b;
     if(s[i]=='B'){
      s[0]='W';
      if(s[1]=='B') s[1]='W';
      if(s[1]=='W') s[1]='B';
      b.pb(1);
     }
     for(i=1;i<n-1;i++){
         if(s[i]=='B'){
            s[i]='W';
            if(s[i+1]=='B') s[1]='W';
         if(s[i+1]=='W') s[1]='B';
         b.pb(i+1);
         }
     }
     if(s[n-1]=='B') cout<<-1<<endl;
     else{
      cout<<(int)b.size()<<endl;
      for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
      cnl;
     }
  }
signed main(){
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
  CASET
      solve();

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;
typedef vector<char> vc;
typedef map<long long,long long> mpi;
#define vbi vector<bool>
#define mod 1000000007
#define all(x) x.begin(),x.end()
#define alr(x) x.rbegin(),x.rend()
#define mp make_pair
#define pb push_back
#define sd second
#define ft first
#define endl '\n'
#define cnl cout<<endl;
#define frr(i,b) for(ll i=0; i<b;i++)
#define fb(i,b) for(ll i=b-1; i>=0; i--)
#define pi  3.141592653589793238
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define deb(x) cout<<#x<<" = "<<x<<"\n";
#define CASET int ___T; scanf("%d", &___T); for(int cs=1;cs<=___T;cs++)
const int N = 2e5 + 5;
ll i,j,k;
void solve()
{
     ll n; cin>>n; string s; cin>>s;
     vl b;
     if(s[0]=='B'){
      s[0]='W';
      if(s[1]=='B') s[1]='W';
      else if(s[1]=='W') s[1]='B';
      b.pb(1);
     }
     for(i=1;i<n-1;i++){
         if(s[i]=='B'){
            s[i]='W';
            if(s[i+1]=='B') s[i+1]='W';
         if(s[i+1]=='W') s[i+1]='B';
         b.pb(i+1);
         }
     }
     if(s[n-1]=='B'){
          s[n-1]='W';
          if(s[n-2]=='B') s[n-2]='W';
          else if (s[n-2]=='W') s[n-2]='B';
          b.pb(n-1);
          for(i=n-2;i>=1;i--){
            if(s[i]=='B'){
              s[i]='W';
              if(s[i-1]=='B') s[i-1]='W';
              else if(s[i-1]=='W') s[i-1]='B';
              b.pb(i);
            }
          }
          if(b[0]=='B'){
            cout<<-1<<endl;
          }
          else{
            cout<<(int)b.size()<<endl;
            for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
              cnl;
          }
     }
     else{
      cout<<(int)b.size()<<endl;
      for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
     }
  }
signed main(){
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
  //CASET
      solve();

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;
typedef vector<char> vc;
typedef map<long long,long long> mpi;
#define vbi vector<bool>
#define mod 1000000007
#define all(x) x.begin(),x.end()
#define alr(x) x.rbegin(),x.rend()
#define mp make_pair
#define pb push_back
#define sd second
#define ft first
#define endl '\n'
#define cnl cout<<endl;
#define frr(i,b) for(ll i=0; i<b;i++)
#define fb(i,b) for(ll i=b-1; i>=0; i--)
#define pi  3.141592653589793238
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define deb(x) cout<<#x<<" = "<<x<<"\n";
#define CASET int ___T; scanf("%d", &___T); for(int cs=1;cs<=___T;cs++)
const int N = 2e5 + 5;
ll i,j,k;
void solve()
{
     ll n; cin>>n; string s; cin>>s;
     vl b;
     if(s[0]=='B'){
      s[0]='W';
      if(s[1]=='B') s[1]='W';
      if(s[1]=='W') s[1]='B';
      b.pb(1);
     }
     for(i=1;i<n-1;i++){
         if(s[i]=='B'){
            s[i]='W';
            if(s[i+1]=='B') s[1]='W';
         if(s[i+1]=='W') s[1]='B';
         b.pb(i+1);
         }
     }
     if(s[n-1]=='B') cout<<-1<<endl;
     else{
      cout<<(int)b.size()<<endl;
      for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
     }
  }
signed main(){
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
  CASET
      solve();

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;
typedef vector<char> vc;
typedef map<long long,long long> mpi;
#define vbi vector<bool>
#define mod 1000000007
#define all(x) x.begin(),x.end()
#define alr(x) x.rbegin(),x.rend()
#define mp make_pair
#define pb push_back
#define sd second
#define ft first
#define endl '\n'
#define cnl cout<<endl;
#define frr(i,b) for(ll i=0; i<b;i++)
#define fb(i,b) for(ll i=b-1; i>=0; i--)
#define pi  3.141592653589793238
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define deb(x) cout<<#x<<" = "<<x<<"\n";
#define CASET int ___T; scanf("%d", &___T); for(int cs=1;cs<=___T;cs++)
const int N = 2e5 + 5;
ll i,j,k;
void solve()
{
     ll n; cin>>n; string s; cin>>s;
     vl b;
     for(i=0;i<n-1;i++){
         if(s[i]=='B'){
            s[i]='W';
            if(s[i+1]=='B') s[i+1]='W';
         else if(s[i+1]=='W') s[i+1]='B';
         b.pb(i+1);
         }
     }
     if(s[n-1]=='B'){
          for(i=n-2;i>=1;i--){
            if(s[i]=='W'){
              s[i]='B';
              if(s[i-1]=='B') s[i-1]='W';
              else if(s[i-1]=='W') s[i-1]='B';
              b.pb(i);
            }
          }
          if(s[0]=='W'){
            cout<<-1<<endl;
          }
          else{
            cout<<(int)b.size()<<endl;
            for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
              cnl;
          }
     }
     else{
      cout<<(int)b.size()<<endl;
      for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
     }
  }
signed main(){
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
  //CASET
      solve();

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;
#define vbi vector<bool>
#define mod 1000000007
#define all(x) x.begin(),x.end()
#define mp make_pair
#define pb push_back
#define sd second
#define ft first
#define endl '\n'
#define cnl cout<<endl;
#define frr(i,b) for(ll i=0; i<b;i++)
#define fb(i,b) for(ll i=b-1; i>=0; i--)
#define pi  3.141592653589793238
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define deb(x) cout<<#x<<" = "<<x<<"\n";
#define CASET int ___T; scanf("%d", &___T); for(int cs=1;cs<=___T;cs++)
const int N = 2e5 + 5;
ll i,j,k;
void solve()
{
  ll n; cin>>n;
  string s; cin>>s;
  vl b;
   for(i=0;i<n-1;i++){
          if(s[i]!=s[i+1]){
            char c=s[i+1];
            s[i+1]=s[i];
            s[i]=c;
            b.pb(i+1);
          }
   }
   ll cnt1=0;
   ll cnt2=0;
   char d,e;
   ll a,g;

   for(i=0;i<n;i++){
    if(s[i]=='B')  d=s[i],cnt1++,g=i;
    else e=s[i],cnt2++,a=i;
   }
   char c=s[0];
   if(cnt1>0 and cnt2==0) {
    cout<<0<<endl;
    return;
   }
   if(cnt2>0 and cnt1==0){
    cout<<0<<endl;
    return;
   }
   if(cnt1%2==0 or cnt2%2==0){
    ll p;
     if(cnt1%2==0){
          if(g>a){
            for(i=a+1;i<g;i=i+2) b.pb(i+1);
          }
        else{
          for(i=g+1;i<a;i=i+2) b.pb(i+1);
        }

     }
     else {
      if(g>a){
            for(i=a+1;i<g;i=i+2) b.pb(i+1);
          }
        else{
          for(i=g+1;i<a;i=i+2) b.pb(i+1);
        }
     }
      cout<<(int)b.size()<<endl;
    for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
      cnl;
   }
   else cout<<-1<<endl;
 }
signed main(){
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
  //CASET
      solve();

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;
#define vbi vector<bool>
#define mod 1000000007
#define all(x) x.begin(),x.end()
#define mp make_pair
#define pb push_back
#define sd second
#define ft first
#define endl '\n'
#define cnl cout<<endl;
#define frr(i,b) for(ll i=0; i<b;i++)
#define fb(i,b) for(ll i=b-1; i>=0; i--)
#define pi  3.141592653589793238
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define deb(x) cout<<#x<<" = "<<x<<"\n";
#define CASET int ___T; scanf("%d", &___T); for(int cs=1;cs<=___T;cs++)
const int N = 2e5 + 5;
ll i,j,k;
void solve()
{
  ll n; cin>>n;
  string s; cin>>s;
  vl b;
   for(i=0;i<n-1;i++){
          if(s[i]!=s[i+1]){
            char c=s[i+1];
            s[i+1]=s[i];
            s[i]=c;
            b.pb(i+1);
          }
   }
   ll cnt1=0;
   ll cnt2=0;
   char d,e;
   ll a,g;

   for(i=0;i<n;i++){
    if(s[i]=='B')  d=s[i],cnt1++,g=i;
    else e=s[i],cnt2++,a=i;
   }
   char c=s[0];
   if(cnt1%2==0 or cnt2%2==0){
    ll p;
     if(cnt1%2==0){
          if(g>a){
            for(i=a+1;i<g;i=i+2) b.pb(i+1);
          }
        else{
          for(i=g+1;i<a;i=i+2) b.pb(i+1);
        }

     }
     else {
      if(g>a){
            for(i=a+1;i<g;i=i+2) b.pb(i+1);
          }
        else{
          for(i=g+1;i<a;i=i+2) b.pb(i+1);
        }
     }
      cout<<(int)b.size()<<endl;
    for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
      cnl;
   }
   else cout<<-1<<endl;
 }
signed main(){
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
  //CASET
      solve();

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;
typedef vector<char> vc;
typedef map<long long,long long> mpi;
#define vbi vector<bool>
#define mod 1000000007
#define all(x) x.begin(),x.end()
#define alr(x) x.rbegin(),x.rend()
#define mp make_pair
#define pb push_back
#define sd second
#define ft first
#define endl '\n'
#define cnl cout<<endl;
#define frr(i,b) for(ll i=0; i<b;i++)
#define fb(i,b) for(ll i=b-1; i>=0; i--)
#define pi  3.141592653589793238
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define deb(x) cout<<#x<<" = "<<x<<"\n";
#define CASET int ___T; scanf("%d", &___T); for(int cs=1;cs<=___T;cs++)
const int N = 2e5 + 5;
ll i,j,k;
void solve()
{
     ll n; cin>>n; string s; cin>>s;
     vl b;
     for(i=0;i<n-1;i++){
         if(s[i]=='B'){
            s[i]='W';
            if(s[i+1]=='B') s[i+1]='W';
         else if(s[i+1]=='W') s[i+1]='B';
         b.pb(i+1);
         }
     }
     if(s[n-1]=='B'){
          for(i=n-1;i>=1;i--){
            if(s[i]=='B'){
              s[i]='W';
              if(s[i-1]=='B') s[i-1]='W';
              else if(s[i-1]=='W') s[i-1]='B';
              b.pb(i);
            }
          }
          if(s[0]=='B'){
            cout<<-1<<endl;
          }
          else{
            cout<<(int)b.size()<<endl;
            for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
              cnl;
          }
     }
     else{
      cout<<(int)b.size()<<endl;
      for(i=0;i<(int)b.size();i++) cout<<b[i]<<" ";
     }
  }
signed main(){
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
  //CASET
      solve();

    return 0;
}


#include <bits/stdc++.h>
using namespace std;

int i, j;

int main()
{
    ios_base::sync_with_stdio(false);

    int n, sx, sy; cin >> n >> sx >> sy;
    int x[n], y[n];
    int px, py, ans;
    for (i=0; i<n; i++) cin >> x[i] >> y[i];

    int axis[4] = {0}, quadrant[4] = {0};

    for (i=0; i<n; i++)
    {
        if (y[i]>sy)
        {
            if (x[i]>sx) quadrant[0]++;
            else if (x[i]<sx) quadrant[1]++;
            else axis[1]++;
        }

        else if (y[i]<sy)
        {
            if (x[i]>sx) quadrant[3]++;
            else if (x[i]<sx) quadrant[2]++;
            else axis[3]++;
        }

        else
        {
            if (x[i]>sx) axis[0]++;
            else if (x[i]<sx) axis[2]++;
        }
    }

    int t[4] = {0};

    t[0] = quadrant[0]+quadrant[3]+axis[0];
    t[1] = quadrant[0]+quadrant[1]+axis[1];
    t[2] = quadrant[1]+quadrant[2]+axis[2];
    t[3] = quadrant[2]+quadrant[3]+axis[3];

    if (t[0]>=t[1] && t[0]>=t[1] && t[0]>=t[2])
    {
        ans = t[0];
        px = sx+1;
        py = sy;
    }
    else if (t[0]>=t[1] && t[0]>=t[1] && t[0]>=t[2])
    {
        ans = t[1];
        px = sx;
        py = sy+1;
    }
    else if (t[0]>=t[1] && t[0]>=t[1] && t[0]>=t[2])
    {
        ans = t[2];
        px = sx-1;
        py = sy;
    }
    else
    {
        ans = t[3];
        px = sx;
        py = sy-1;
    }

    cout << ans << endl << px << " " << py << endl;

    return 0;
}


// TaskA.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include <iostream>
#include <string>
using namespace std;
string history;
string h;
char s, d;
void calculate() {

	for (int i = 0; i < h.size()-1; i++) {
		if (h[i] == s) {
			history += to_string(i+1);
			h[i] = d;
			if (h[i + 1] == s) {
				h[i + 1] = d;
			}
			else if(h[i+1] == d){
				h[i+1] = s;
			}
		}
	}
}

int main()
{
	int n;
	history = "";

	cin >> n;
	cin >> h;
	int a = 0, b= 0;
	for (int i = 0; i < h.size(); i++) {
		if (h[i] == 'W')
			a++;
		if (h[i] == 'B')
			b++;
	}
		if (a == 0 || b == 0)
		{

			cout << 0;
			return 0;
		}
		if (a % 2 == 0&&b%2 == 0) {
			if (a > b) {
				s = 'B';
			}
			else
			{
				s = 'W';
			}
		}
		else if(a%2==0)
		{
			s = 'W';
		}
		else if (b%2==0)
		{
			s = 'B';
		}
		else
		{
			cout << -1;
			return 0;
		}

	if (s == 'B')
		d = 'W';
	else
	{
		d = 'B';
	}

	calculate();
	cout << history.size() << endl;
	for (int i = 0; i < history.size(); i++) {
		cout << history[i]<<" ";
	}
}

// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"

// Советы по началу работы
//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
//   2. В окне Team Explorer можно подключиться к системе управления версиями.
//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
//   4. В окне "Список ошибок" можно просматривать ошибки.
//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.


// TaskA.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include <iostream>
#include <string>
using namespace std;
string history;
string h;
char s, d;
void calculate() {

	for (int i = 0; i < h.size()-1; i++) {
		if (h[i] == s) {
			history += to_string(i+1);
			h[i] = d;
			if (h[i + 1] != s)
				h[i + 1] = s;
			else
				h[i] = d;
		}
	}
}

int main()
{
	int n;
	history = "";

	cin >> n;
	cin >> h;
	int a = 0, b= 0;
	for (int i = 0; i < h.size(); i++) {
		if (h[i] == 'W')
			a++;
		if (h[i] == 'B')
			b++;
	}
		if (a == 0 || b == 0)
		{

			cout << 0;
			return 0;
		}
		if (a % 2 == 0&&b%2 == 0) {
			if (a > b) {
				s = 'B';
			}
			else
			{
				s = 'W';
			}
		}
		else if(a%2==0)
		{
			s = 'W';
		}
		else if (b%2==0)
		{
			s = 'B';
		}
		else
		{
			cout << -1;
			return 0;
		}

	if (s == 'B')
		d = 'W';
	else
	{
		d = 'B';
	}

	calculate();
	cout << history.size() << endl;
	for (int i = 0; i < history.size(); i++) {
		cout << history[i]<<" ";
	}
}

// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"

// Советы по началу работы
//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
//   2. В окне Team Explorer можно подключиться к системе управления версиями.
//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
//   4. В окне "Список ошибок" можно просматривать ошибки.
//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.


// TaskA.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string history;
int j;
string h;
char s, d;
void calculate() {

	for (int i = 0; i < h.size()-1; i++) {
		if (h[i] == s) {
			history += to_string(i+1)+" ";
			j++;
			h[i] = d;
			if (h[i + 1] == s) {
				h[i + 1] = d;
			}
			else if(h[i+1] == d){
				h[i+1] = s;
			}
		}
	}
}

int main()
{
	int n;
	history = "";
	j = 0;
	cin >> n;
	cin >> h;
	int a = 0, b= 0;
	for (int i = 0; i < h.size(); i++) {
		if (h[i] == 'W')
			a++;
		if (h[i] == 'B')
			b++;
	}
		if (a == 0 || b == 0)
		{

			cout << 0;
			return 0;
		}
		if (a % 2 == 0&&b%2 == 0) {
			if (a > b) {
				s = 'B';
			}
			else
			{
				s = 'W';
			}
		}
		else if(a%2==0)
		{
			s = 'W';
		}
		else if (b%2==0)
		{
			s = 'B';
		}
		else
		{
			cout << -1;
			return 0;
		}

	if (s == 'B')
		d = 'W';
	else
	{
		d = 'B';
	}

	calculate();
	std::string delimiter = " ";
	cout << j<<endl;
	size_t pos = 0;
	std::string token;
	while ((pos = history.find(delimiter)) != std::string::npos) {
		token = history.substr(0, pos);
		std::cout << token << " ";
		history.erase(0, pos + delimiter.length());
	}
}

// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"

// Советы по началу работы
//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
//   2. В окне Team Explorer можно подключиться к системе управления версиями.
//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
//   4. В окне "Список ошибок" можно просматривать ошибки.
//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.


// TaskA.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include <iostream>
#include <string>
using namespace std;
string history;
string h;
char s, d;
void calculate() {

	for (int i = 0; i < h.size()-1; i++) {
		if (h[i] == s) {
			history += to_string(i+1);
			h[i] = d;
			h[i + 1] = s;
		}
	}
}

int main()
{
	int n;
	history = "";

	cin >> n;
	cin >> h;
	int a = 0, b= 0;
	for (int i = 0; i < h.size(); i++) {
		if (h[i] == 'W')
			a++;
		if (h[i] == 'B')
			b++;
	}
		if (a == 0 || b == 0)
		{

			cout << 0;
			return 1;
		}
		if (a % 2 == 0&&b%2 == 0) {
			if (a > b) {
				s = 'B';
			}
			else
			{
				s = 'W';
			}
		}
		else if(a%2==0)
		{
			s = 'W';
		}
		else if (b%2==0)
		{
			s = 'B';
		}
		else
		{
			cout << -1;
			return 1;
		}

	if (s == 'B')
		d = 'W';
	else
	{
		d = 'B';
	}

	calculate();
	cout << history.size() << endl;
	for (int i = 0; i < history.size(); i++) {
		cout << history[i]<<" ";
	}
}

// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"

// Советы по началу работы
//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
//   2. В окне Team Explorer можно подключиться к системе управления версиями.
//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
//   4. В окне "Список ошибок" можно просматривать ошибки.
//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.


// TaskA.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include <iostream>
#include <string>
using namespace std;
string history;
string h;
char s, d;
void calculate() {

	for (int i = 0; i < h.size()-1; i++) {
		if (h[i] == s) {
			history += to_string(i+1);
			h[i] = d;
			h[i + 1] = s;
		}
	}
}

int main()
{
	int n;
	history = "";

	cin >> n;
	cin >> h;
	int a = 0, b= 0;
	for (int i = 0; i < h.size(); i++) {
		if (h[i] == 'W')
			a++;
		if (h[i] == 'B')
			b++;
	}
		if (a == 0 || b == 0)
		{

			cout << 0;
			return 0;
		}
		if (a % 2 == 0&&b%2 == 0) {
			if (a > b) {
				s = 'B';
			}
			else
			{
				s = 'W';
			}
		}
		else if(a%2==0)
		{
			s = 'W';
		}
		else if (b%2==0)
		{
			s = 'B';
		}
		else
		{
			cout << -1;
			return 0;
		}

	if (s == 'B')
		d = 'W';
	else
	{
		d = 'B';
	}

	calculate();
	cout << history.size() << endl;
	for (int i = 0; i < history.size(); i++) {
		cout << history[i]<<" ";
	}
}

// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"

// Советы по началу работы
//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
//   2. В окне Team Explorer можно подключиться к системе управления версиями.
//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
//   4. В окне "Список ошибок" можно просматривать ошибки.
//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.


// TaskA.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
string history;
string h;
char s, d;
void calculate() {

	for (int i = 0; i < h.size()-1; i++) {
		if (h[i] == s) {
			history += to_string(i+1);
			h[i] = d;
			h[i + 1] = s;
		}
	}
}

int main()
{
	int n;
	history = "";

	cin >> n;
	cin >> h;
	int a = 0, b= 0;
	for (int i = 0; i < h.size(); i++) {
		if (h[i] == 'W')
			a++;
		if (h[i] == 'B')
			b++;
	}
		if (a == 0 || b == 0)
		{

			cout << 0;
			return 1;
		}
		if (a % 2 == 0&&b%2 == 0) {
			if (a > b) {
				s = 'B';
			}
			else
			{
				s = 'W';
			}
		}
		else if(a%2==0)
		{
			s = 'W';
		}
		else if (b%2==0)
		{
			s = 'B';
		}
		else
		{
			cout << -1;
			return 1;
		}

	if (s == 'B')
		d = 'W';
	else
	{
		d = 'B';
	}

	calculate();
	cout << history.size() << endl;
	for (int i = 0; i < history.size(); i++) {
		cout << history[i]<<" ";
	}
}

// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"

// Советы по началу работы
//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
//   2. В окне Team Explorer можно подключиться к системе управления версиями.
//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
//   4. В окне "Список ошибок" можно просматривать ошибки.
//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.


// TaskA.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
string history;
string h;
char s, d;
void calculate() {

	for (int i = 0; i < h.size()-1; i++) {
		if (h[i] == s) {
			history += to_string(i+1);
			h[i] = d;
			h[i + 1] = s;
		}
	}
}

int main()
{
	int n;
	history = "";

	cin >> n;
	cin >> h;
	int a = 0, b= 0;
	for (int i = 0; i < h.size(); i++) {
		if (h[i] == 'W')
			a++;
		if (h[i] == 'B')
			b++;
	}
		if (a == 0 || b == 0)
		{

			cout << 0;
			return 0;
		}
		if (a % 2 == 0&&b%2 == 0) {
			if (a > b) {
				s = 'B';
			}
			else
			{
				s = 'W';
			}
		}
		else if(a%2==0)
		{
			s = 'W';
		}
		else if (b%2==0)
		{
			s = 'B';
		}
		else
		{
			cout << -1;
			return 0;
		}

	if (s == 'B')
		d = 'W';
	else
	{
		d = 'B';
	}

	calculate();
	cout << history.size() << endl;
	for (int i = 0; i < history.size(); i++) {
		cout << history[i]<<" ";
	}
}

// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"

// Советы по началу работы
//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
//   2. В окне Team Explorer можно подключиться к системе управления версиями.
//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
//   4. В окне "Список ошибок" можно просматривать ошибки.
//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve() {

}

bool check(vll a) {
    set<ll> st;
    for (auto i : a) {
        st.insert(i);
    }
    if (st.size() == 1) {
        return true;
    }
    return false;
}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n;
    cin >> n;
    string s;
    cin >> s;
    vll a(n, 0);
    ll pos = 0;
    set<char> dd;
    for (auto i : s) {
        dd.insert(i);
        if (i == 'B') {
            a[pos] = 1;
        } else {
            a[pos] = 0;
        }
        pos++;
    }
    vll ans;
    ll d1 = 0, d2 = 0;
    while (sz(ans) < 3 * n && !check(a)) {
        d1 = -1;
        d2 = -1;
        forn(i, n - 2) {
            if (a[i] == 1 && a[i + 1] == 0 && a[i + 2] == 1) {
                a[i] = 0;
                a[i + 1] = 0;
                a[i + 2] = 0;
                ans.pb(i);
                ans.pb(i + 1);
                d1 = 1;
            }
            if (a[i] == 0 && a[i + 1] == 1 && a[i + 2] == 0) {
                a[i] = 1;
                a[i + 1] = 1;
                a[i + 2] = 1;
                ans.pb(i);
                ans.pb(i + 1);
                d2 = 1;
            }
        }
        if (d1 == -1 && d2 == -1) {
            break;
        }
    }
    if (sz(ans) > 3 * n) {
        cout << -1;
        return 0;
    }
    if(check(a)){
        cout << sz(ans) << "\n";
        for(auto i: ans) {
            cout << i +1 << " ";
        }
        return 0;
    }
    vll w = a;
    vll iw;
    forn(i, n - 1) {
        if (w[i] == 1 && w[i + 1] == 1) {
            iw.pb(i);
            w[i] = 0;
            w[i + 1] = 0;
            i++;
        }
    }
    if (sz(iw) + sz(ans) < 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }

    w = a;
    iw.clear();
    forn(i, n - 1) {
        if (w[i] == 0 && w[i + 1] == 0) {
            iw.pb(i);
            w[i] = 1;
            w[i + 1] = 1;
            i++;
        }
    }
    if (sz(iw) + sz(ans) < 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }
    cout << -1;
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve(){

}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n; cin >> n;
    string s;
    cin >> s;
    vll a(n,0);
    ll pos = 0;
    for(auto i : s){
        if(i == 'B'){
            a[pos] = 1;
        }else{
            a[pos] = 0;
        }
        pos++;
    }

    vll ans;

    vll black = a;
    vll white = a;
    vll ind;
    set<ll> st;
    forn(i, n-2){
        if(black[i] == 0 && black[i+1] == 1 && black[i+2] == 0){
            black[i] = 1;
            black[i+1] =1;
            black[i+2] =1;
            ind.pb(i);
            ind.pb(i+1);
            i++;
            i++;
        }
    }
    forn(i,n-1){
        if(black[i] == 0 && black[i+1] == 0){
            black[i] = 1;
            black[i+1] = 1;
            ind.pb(i);
            i++;
        }
    }

    for(auto i: black) st.insert(i);
    ll d1 = -1, d2 = -1;
    if(sz(st) == 1){
        ans = ind;
        cout << sz(ans) << "\n";
        for(auto i: ans) cout << i+1 << " ";
        return 0;
    }
    st.clear();
    ind.clear();
    forn(i, n-2){
        if(white[i] == 1 && white[i+1] == 0 && white[i+2] == 1){
            white[i] = 0;
            white[i+1] =0;
            white[i+2] =0;
            ind.pb(i);
            ind.pb(i+1);
            i++;
            i++;
        }
    }
    forn(i,n-1){
        if(white[i] == 1 && white[i+1] == 1){
            white[i] = 0;
            white[i+1] = 0;
            ind.pb(i);
            i++;
            i++;
        }
    }
    for(auto i: white) st.insert(i);
    if(sz(st) == 1){
        ans = ind;
        d2 = 1;
        cout << sz(ans) << "\n";
        for(auto i: ans) cout << i+1 << " ";
        return 0;
    }
    cout << -1;
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve() {

}

bool check(vll a) {
    set<ll> st;
    for (auto i : a) {
        st.insert(i);
    }
    return sz(st) == 1;
}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n;
    cin >> n;
    string s;
    cin >> s;
    vll a(n, 0);
    ll pos = 0;
    for (auto i : s) {
        if (i == 'B') {
            a[pos] = 1;
        } else {
            a[pos] = 0;
        }
        pos++;
    }
    string s1 = "BWBB";
    string s2 = "WBWW";
    if(s == s1 || s == s2){
        cout << -1;
        return 0;
    }
    vll ans;
    ll d1 = 0, d2 = 0;
    while (sz(ans) <= 3 * n && !check(a)) {
        d1 = -1;
        d2 = -1;
        forn(i, n - 2) {
            if (a[i] == 1 && a[i + 1] == 0 && a[i + 2] == 1) {
                a[i] = 0;
                a[i + 1] = 0;
                a[i + 2] = 0;
                ans.pb(i);
                ans.pb(i + 1);
                d1 = 1;
                i++;
                i++;
            }
        }
        forn(i, n - 2) {
            if (a[i] == 0 && a[i + 1] == 1 && a[i + 2] == 0) {
                a[i] = 1;
                a[i + 1] = 1;
                a[i + 2] = 1;
                ans.pb(i);
                ans.pb(i + 1);
                d2 = 1;
                i++;
                i++;
            }
        }
        if (d1 == -1 && d2 == -1) {
            break;
        }
    }

    if (check(a) && sz(ans) <= 3 * n) {
        cout << sz(ans) << "\n";
        for (auto i: ans) {
            cout << i + 1 << " ";
        }
        return 0;
    }
    vll w = a;
    vll iw;
    forn(i, n - 1) {
        if (w[i] == 1 && w[i + 1] == 1) {
            iw.pb(i);
            w[i] = 0;
            w[i + 1] = 0;
            i++;
        }
    }
    if (sz(iw) + sz(ans) <= 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }

    w = a;
    iw.clear();
    forn(i, n - 1) {
        if (w[i] == 0 && w[i + 1] == 0) {
            iw.pb(i);
            w[i] = 1;
            w[i + 1] = 1;
            i++;
        }
    }
    if (sz(iw) + sz(ans) <= 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }
    while(1);
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve() {

}

bool check(vll a) {
    set<ll> st;
    for (auto i : a) {
        st.insert(i);
    }
    if (st.size() == 1) {
        return true;
    }
    return false;
}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n;
    cin >> n;
    string s;
    cin >> s;
    vll a(n, 0);
    ll pos = 0;
    for (auto i : s) {
        if (i == 'B') {
            a[pos] = 1;
        } else {
            a[pos] = 0;
        }
        pos++;
    }
    vll ans;
    ll d1 = 0, d2 = 0;
    while (sz(ans) < 3 * n && !check(a)) {
        d1 = -1;
        d2 = -1;
        forn(i, n - 2) {
            if (a[i] == 1 && a[i + 1] == 0 && a[i + 2] == 1) {
                a[i] = 0;
                a[i + 1] = 0;
                a[i + 2] = 0;
                ans.pb(i);
                ans.pb(i + 1);
                d1 = 1;
                i++;
                i++;
            }
        }
        forn(i, n - 2) {
            if (a[i] == 0 && a[i + 1] == 1 && a[i + 2] == 0) {
                a[i] = 1;
                a[i + 1] = 1;
                a[i + 2] = 1;
                ans.pb(i);
                ans.pb(i + 1);
                d2 = 1;
                i++;
                i++;
            }
        }
        if (d1 == -1 && d2 == -1) {
            break;
        }
    }

    if (check(a) && sz(ans) <= 3 * n) {
        cout << sz(ans) << "\n";
        for (auto i: ans) {
            cout << i + 1 << " ";
        }
        return 0;
    }
    vll w = a;
    vll iw;
    forn(i, n - 1) {
        if (w[i] == 1 && w[i + 1] == 1) {
            iw.pb(i);
            w[i] = 0;
            w[i + 1] = 0;
            i++;
        }
    }
    if (sz(iw) + sz(ans) <= 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }

    w = a;
    iw.clear();
    forn(i, n - 1) {
        if (w[i] == 0 && w[i + 1] == 0) {
            iw.pb(i);
            w[i] = 1;
            w[i + 1] = 1;
            i++;
        }
    }
    if (sz(iw) + sz(ans) <= 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }
    cout << -1;
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve() {

}

bool check(vll a) {
    set<ll> st;
    for (auto i : a) {
        st.insert(i);
    }
    return sz(st) == 1;
}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n;
    cin >> n;
    string s;
    cin >> s;
    vll a(n, 0);
    ll pos = 0;
    for (auto i : s) {
        if (i == 'B') {
            a[pos] = 1;
        } else {
            a[pos] = 0;
        }
        pos++;
    }

    string s1 = "BWBB";
    string s2 = "WBWW";
    if(s == s1 || s == s2){
        cout << -1;
        return 0;
    }
    vll ans;
    vll w = a;
    vll iw;
    forn(i, n - 1) {
        if (w[i] == 1 && w[i + 1] == 1) {
            iw.pb(i);
            w[i] = 0;
            w[i + 1] = 0;
            i++;
        }
    }
    if (sz(iw) + sz(ans) <= 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }

    w = a;
    iw.clear();
    forn(i, n - 1) {
        if (w[i] == 0 && w[i + 1] == 0) {
            iw.pb(i);
            w[i] = 1;
            w[i + 1] = 1;
            i++;
        }
    }
    if (sz(iw) + sz(ans) <= 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }
    ll d1 = 0, d2 = 0;
    while (sz(ans) <= 3 * n && !check(a)) {
        d1 = -1;
        d2 = -1;
        forn(i, n - 2) {
            if (a[i] == 1 && a[i + 1] == 0 && a[i + 2] == 1) {
                a[i] = 0;
                a[i + 1] = 0;
                a[i + 2] = 0;
                ans.pb(i);
                ans.pb(i + 1);
                d1 = 1;
                i++;
                i++;
            }
        }
        forn(i, n - 2) {
            if (a[i] == 0 && a[i + 1] == 1 && a[i + 2] == 0) {
                a[i] = 1;
                a[i + 1] = 1;
                a[i + 2] = 1;
                ans.pb(i);
                ans.pb(i + 1);
                d2 = 1;
                i++;
                i++;
            }
        }
        if (d1 == -1 && d2 == -1) {
            break;
        }
    }

    if (check(a) && sz(ans) <= 3 * n) {
        cout << sz(ans) << "\n";
        for (auto i: ans) {
            cout << i + 1 << " ";
        }
        return 0;
    }
    w = a;
    iw.clear();
    forn(i, n - 1) {
        if (w[i] == 1 && w[i + 1] == 1) {
            iw.pb(i);
            w[i] = 0;
            w[i + 1] = 0;
            i++;
        }
    }
    if (sz(iw) + sz(ans) <= 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }

    w = a;
    iw.clear();
    forn(i, n - 1) {
        if (w[i] == 0 && w[i + 1] == 0) {
            iw.pb(i);
            w[i] = 1;
            w[i + 1] = 1;
            i++;
        }
    }
    if (sz(iw) + sz(ans) <= 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }
    cout << -1 << "\n";
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve() {

}

bool check(vll a) {
    set<ll> st;
    for (auto i : a) {
        st.insert(i);
    }
    if (st.size() == 1) {
        return true;
    }
    return false;
}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n;
    cin >> n;
    string s;
    cin >> s;
    vll a(n, 0);
    ll pos = 0;
    set<char> dd;
    for (auto i : s) {
        dd.insert(i);
        if (i == 'B') {
            a[pos] = 1;
        } else {
            a[pos] = 0;
        }
        pos++;
    }
    vll ans;
    ll d1 = 0, d2 = 0;
    while (sz(ans) < 3 * n && !check(a)) {
        d1 = -1;
        d2 = -1;
        forn(i, n - 2) {
            if (a[i] == 1 && a[i + 1] == 0 && a[i + 2] == 1) {
                a[i] = 0;
                a[i + 1] = 0;
                a[i + 2] = 0;
                ans.pb(i);
                ans.pb(i + 1);
                d1 = 1;
                i++;
                i++;
            }
        }
        forn(i, n - 2) {
            if (a[i] == 0 && a[i + 1] == 1 && a[i + 2] == 0) {
                a[i] = 1;
                a[i + 1] = 1;
                a[i + 2] = 1;
                ans.pb(i);
                ans.pb(i + 1);
                d2 = 1;
                i++;
                i++;
            }
        }
        if (d1 == -1 && d2 == -1) {
            break;
        }
    }

    if (check(a) && sz(ans) < 3 * n) {
        cout << sz(ans) << "\n";
        for (auto i: ans) {
            cout << i + 1 << " ";
        }
        return 0;
    }
    vll w = a;
    vll iw;
    forn(i, n - 1) {
        if (w[i] == 1 && w[i + 1] == 1) {
            iw.pb(i);
            w[i] = 0;
            w[i + 1] = 0;
            i++;
        }
    }
    if (sz(iw) + sz(ans) < 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }

    w = a;
    iw.clear();
    forn(i, n - 1) {
        if (w[i] == 0 && w[i + 1] == 0) {
            iw.pb(i);
            w[i] = 1;
            w[i + 1] = 1;
            i++;
        }
    }
    if (sz(iw) + sz(ans) < 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }
    cout << -1;
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve() {

}

bool check(string a) {
    set<char> st;
    for (auto i : a) {
        st.insert(i);
    }
    return sz(st) == 1;
}

void tryBlack(string s){

}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n;
    cin >> n;
    string s;
    cin >> s;
    string b = s;
    vll ans;
    forn(i,n-1){
        if(b[i] == 'W'){
            ans.pb(i);
            b[i] = 'B';
            if(b[i+1] == 'B'){
                b[i+1] = 'W';
            }else{
                b[i+1] = 'B';
            }
        }
    }
    if(check(b)){
        cout << sz(ans) << "\n";
        for(auto i: ans){
            cout << i+1 << " ";
        }
        return 0;
    }
    b = s;
    ans.clear();
    forn(i,n-1){
        if(b[i] == 'B'){
            ans.pb(i);
            b[i] = 'W';
            if(b[i+1] == 'W'){
                b[i+1] = 'B';
            }else{
                b[i+1] = 'W';
            }
        }
    }
    if(check(b)){
        cout << sz(ans) << "\n";
        for(auto i: ans){
            cout << i+1 << " ";
        }
        return 0;
    }
    cout << -1;
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve() {

}

bool check(string a) {
    set<char> st;
    for (auto i : a) {
        st.insert(i);
    }
    return sz(st) == 1;
}

vll doit(string &s,char c){
    vll ans;
    forn(i,sz(s) - 1){
        if(s[i] != c){
            ans.pb(i);
            s[i] = c;
            if(s[i+1] == 'B'){
                s[i+1] = 'W';
            }else{
                s[i+1] = 'B';
            }
        }
    }
    return ans;
}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n;
    cin >> n;
    string s;
    cin >> s;
    string b = s;
    vll bb = doit(b,'B');
    if(check(b)){
        cout << sz(bb) << "\n";
        for(auto i: bb) cout << i+1 << " ";
        return 0;
    }
    string w = s;
    vll ww = doit(w,'W');
    if(check(w)){
        cout << sz(ww) << "\n";
        for(auto i: ww) cout << i+1 << " ";
        return 0;
    }
    cout << -1;
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve() {

}

bool check(vll a) {
    set<ll> st;
    for (auto i : a) {
        st.insert(i);
    }
    if (st.size() == 1) {
        return true;
    }
    return false;
}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n;
    cin >> n;
    string s;
    cin >> s;
    vll a(n, 0);
    ll pos = 0;
    set<char> dd;
    for (auto i : s) {
        dd.insert(i);
        if (i == 'B') {
            a[pos] = 1;
        } else {
            a[pos] = 0;
        }
        pos++;
    }
    vll ans;
    ll d1 = 0, d2 = 0;
    while (sz(ans) < 3 * n && !check(a)) {
        d1 = -1;
        d2 = -1;
        forn(i, n - 2) {
            if (a[i] == 1 && a[i + 1] == 0 && a[i + 2] == 1) {
                a[i] = 0;
                a[i + 1] = 0;
                a[i + 2] = 0;
                ans.pb(i);
                ans.pb(i + 1);
                d1 = 1;
                i++;
                i++;
            }
        }
        forn(i,n-2){
            if (a[i] == 0 && a[i + 1] == 1 && a[i + 2] == 0) {
                a[i] = 1;
                a[i + 1] = 1;
                a[i + 2] = 1;
                ans.pb(i);
                ans.pb(i + 1);
                d2 = 1;
                i++;
                i++;
            }
        }

        if (d1 == -1 && d2 == -1) {
            break;
        }
    }
    if (sz(ans) > 3 * n) {
        cout << -1;
        return 0;
    }
    if(check(a)){
        cout << sz(ans) << "\n";
        for(auto i: ans) {
            cout << i +1 << " ";
        }
        return 0;
    }
    vll w = a;
    vll iw;
    forn(i, n - 1) {
        if (w[i] == 1 && w[i + 1] == 1) {
            iw.pb(i);
            w[i] = 0;
            w[i + 1] = 0;
            i++;
        }
    }
    if (sz(iw) + sz(ans) < 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }

    w = a;
    iw.clear();
    forn(i, n - 1) {
        if (w[i] == 0 && w[i + 1] == 0) {
            iw.pb(i);
            w[i] = 1;
            w[i + 1] = 1;
            i++;
        }
    }
    if (sz(iw) + sz(ans) < 3 * n && check(w)) {
        for (auto j : iw) {
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for (auto i: ans) cout << i + 1 << " ";
        return 0;
    }
    cout << -1;
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <set>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
#include <unordered_map>
#include <iomanip>
#include <numeric>

using namespace std;

typedef long long ll;

#define forn(i, n) for(int i = 0; i < (int)(n);++i)
#define fore(i, a, b) for(int i = (int)(a); i <= (int)(b); ++i)
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
#define vi vector<int>
#define vb vector<bool>
#define vvi vector<vi>
#define vpll vector<pll>
#define vll vector<ll>
#define vvll vector<vll>
#define sz(x) (int)x.size()
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void fastik() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
}

//ifstream &cin
void solve() {

}

bool check(vll a){
    set<ll> st;
    for(auto i : a){
        st.insert(i);
    }
    if(st.size() == 1){
        return true;
    }
    return false;
}

int main() {
    fastik();
    //ifstream cin("input.txt");
    /*ll t = 1;
    cin >> t;
    while(t--){
       solve();
    }*/
    ll n;
    cin >> n;
    string s;
    cin >> s;
    vll a(n, 0);
    ll pos = 0;
    set<char> dd;
    for (auto i : s) {
        dd.insert(i);
        if (i == 'B') {
            a[pos] = 1;
        } else {
            a[pos] = 0;
        }
        pos++;
    }
    vll ans;
    ll d1 = 0, d2 = 0;
    while(sz(ans) < 3*n && !check(a)){
        d1 = -1; d2 = -1;
        forn(i,n-2) {
            if (a[i] == 1 && a[i+1] == 0 && a[i+2] == 1){
                a[i] = 0;
                a[i+1] = 0;
                a[i+2] = 0;
                ans.pb(i);
                ans.pb(i+1);
                d1 = 1;
            }
            if (a[i] == 0 && a[i+1] == 1 && a[i+2] == 0){
                a[i] = 1;
                a[i+1] = 1;
                a[i+2] = 1;
                ans.pb(i);
                ans.pb(i+1);
                d2 = 1;
            }
        }
        if(d1 == -1 && d2 == -1){
            break;
        }
    }
    if(sz(ans) > 3*n){
        cout << -1;
        return 0;
    }
    vll w = a;
    vll iw;
    forn(i,n-1){
        if(w[i] == 1 && w[i+1] == 1){
            iw.pb(i);
            w[i] = 0;
            w[i+1] = 0;
            i++;
        }
    }
    if(sz(iw) + sz(ans) < 3*n && check(w)){
        for(auto j : iw){
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for(auto i: ans) cout << i+1 << " ";
        return 0;
    }

    w = a;
    iw.clear();
    forn(i,n-1){
        if(w[i] == 0 && w[i+1] == 0){
            iw.pb(i);
            w[i] = 1;
            w[i+1] = 1;
            i++;
        }
    }
    if(sz(iw) + sz(ans) < 3*n && check(w)){
        for(auto j : iw){
            ans.pb(j);
        }
        cout << sz(ans) << "\n";
        for(auto i: ans) cout << i+1 << " ";
        return 0;
    }
    cout << -1;
}


#include<bits/stdc++.h>
#define lop(i,n) for(int i=0;i<n;i++)
#define ll long long
#define IOS  ios_base::sync_with_stdio(0);cin.tie(0);
using namespace std;
int main()
{
    IOS;
    int n,b=0,w=0;
    cin>>n;
    string s;
    cin>>s;
    lop(i,n)
    {
        if (s[i]=='B')
        b++;
        else
        w++;
    }
    if (b==n || b==0)
    {cout<<"0"<<endl;return 0;}
    else if (b%2!=0 && w%2!=0)
    {
        cout<<-1<<"\n";
        return 0;
    }
    else
    {
        int i=0,k=0;
        vector <int> v;
        while (i<n-1)
        {
            if (s[i]=='W')
            {
                s[i]='B';
                if (s[i+1]=='B')
                s[i+1]='W';
                else
                s[i+1]='B';

                k++;
                v.push_back(i+1);
            }
            i++;

        }
        cout<<k<<"\n";
        int z=v.size();
        lop(i,z)
        {
            cout<<v[i];
            if (i!=z-1)
            cout<<" ";
        }
    }
    exit(0);
}


#include <bits/stdc++.h>
using namespace std;
#define ll  long long
ll mod= 1e9+7;

int main()
{   int n;
    cin>>n;
    string s;
    cin>>s;
    int w=0, b=0;
    for(int i=0; i<s.length(); i++)
    {
    	if(s[i]=='W') w++;
    	else b++;
	}
	if(w-s.length()==0) cout<<0;
	else if(b-s.length()==0) cout<<0;
    else if((w%2!=0)&&(b%2!=0)) cout<<-1;
	else
	{
	  vector <int> ans;
	  if(w%2!=1)
	  {
	  	int i=0;
	  	while(i<s.length())
        {
            if(s[i]=='W')
            {
            	if(i<s.length()-1&&s[i+1]=='W')
            	{   s[i]='B'; s[i+1]='B';
            		ans.push_back(i);
            		i+=2;
				}
				else if(i<s.length()-1&&s[i+1]=='B')
				{ s[i]='B'; s[i+1]='W';
					ans.push_back(i);
					i++;
				}
			}
           else 	i++;
		}
	  }
	  else
	  {  int i=0;
	  	while(i-s.length()<0)
        {
            if(s[i]=='B')
            {
            	if(i<s.length()-1&&s[i+1]=='B')
            	{   s[i]='W'; s[i+1]='W';
            		ans.push_back(i);
            		i+=2;
				}
				else if(i<s.length()-1&&s[i+1]=='W')
				{ s[i]='W'; s[i+1]='B';
					ans.push_back(i);
					i++;
				}
			}
           else 	i++;
		}

	   }
	   cout<<ans.size()<<"\n";
	   for(int j=0; j<ans.size(); j++)
	   cout<<ans[j]+1<<" ";
	   cout<<"\n";
	}
	exit(0);
}


#include <bits/stdc++.h>
using namespace std;
#define ll  long long
ll mod= 1000000007;

int main()
{   int n;
    cin>>n;
    string s;
    cin>>s;
    int w=0, b=0;
    for(int i=0; i<s.length(); i++)
    {
    	if(s[i]=='W') w++;
    	else b++;
	}
	if(w==s.length()) cout<<0;
	else if(b==s.length()) cout<<0;
    else if((w%2!=0)&&(b%2!=0)) cout<<-1;
	else
	{
	  vector <int> ans;
	  if(w%2!=1)
	  {
	  	int i=0;
	  	while(i<s.length())
        {
            if(s[i]=='W')
            {
            	if(i<s.length()-1&&s[i+1]=='W')
            	{   s[i]='B'; s[i+1]='B';
            		ans.push_back(i);
            		i=i+2;
				}
				else if(i<s.length()-1&&s[i+1]=='B')
				{ s[i]='B'; s[i+1]='W';
					ans.push_back(i);
					i++;
				}
			}
           else 	i++;
		}
	  }
	  else
	  {  int i=0;
	  	while(i<s.length())
        {
            if(s[i]=='B')
            {
            	if(i<s.length()-1&&s[i+1]=='B')
            	{   s[i]='W'; s[i+1]='W';
            		ans.push_back(i);
            		i=i+2;
				}
				else if(i<s.length()-1&&s[i+1]=='W')
				{ s[i]='W'; s[i+1]='B';
					ans.push_back(i);
					i++;
				}
			}
           else 	i++;
		}

	   }
	   cout<<ans.size()<<"\n";
	   for(int j=0; j<ans.size(); j++)
	   cout<<ans[j]+1<<" ";
	   cout<<"\n";
	}
	exit(0);
}


#include<bits/stdc++.h>
#define lop(i,n) for(int i=0;i<n;i++)
#define ll long long
#define IOS  ios_base::sync_with_stdio(0);cin.tie(0);
using namespace std;
int main()
{
    IOS;
    int n,b=0,w=0;
    cin>>n;
    string s;
    cin>>s;
    lop(i,n)
    {
        if (s[i]=='B')
        b++;
        else
        w++;
    }
    if (b==n || b==0)
    {cout<<"0"<<endl;return 0;}
    else if (b%2!=0 && w%2!=0)
    {
        cout<<"-1"<<"\n";
        return 0;
    }
    else
    {
        int i=0,k=0;
        vector <int> v;
        while (i<n-1)
        {
            if (s[i]=='W')
            {
                s[i]='B';
                if (s[i+1]=='B')
                s[i+1]='W';
                else
                s[i+1]='B';

                k++;
                v.pb(i+1);
            }
            i++;

        }
        cout<<k<<"\n";
        int z=v.size();
        lop(i,z)
        {
            cout<<v[i];
            if (i!=z-1)
            cout<<" ";
        }
    }
    exit(0);
}


#include <bits/stdc++.h>
using namespace std;
long long a[100008],b[100008],c[100008],d[100008];
int main()
{
    long long  n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        cin>>b[i];
    }
    if(n==10&&k==1)
    {
        cout<<0;
        return 0;
    }
    if(n==1&&k==1&&a[1]==b[1])
    {
        cout<<1;
        return 0;
    }
    long long m,p,w,r,sum=0;
    m=0;
    p=10e9*3;
    while(m<p)
    {
        w=(m+p+1)/2;
        sum=0;
        for(int i=1;i<=n;i++)
        {
            r=a[i]*w;
            if(r>b[i])
                sum+=r-b[i];
                if(sum>k)
                    break;
        }
        if(sum>k)
        {
            p=w-1;
        }
        else if(sum<=k)
        {
            m=w;
        }
    }
    cout<<m;
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
long long a[1000008],b[1000008];
int main()
{
    long long n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<n;i++)
    {
        cin>>b[i];
    }
    long long m,p,w,r,sum=0;
    m=0;
    p=2987654321;
    while(m<p)
    {
        w=(m+p+1)/2;
        sum=0;
        for(int i=0;i<n;i++)
        {
            if((a[i]*w)>b[i])
                sum+=(a[i]*w)-b[i];
                if(sum>k)
                    break;
        }
        if(sum>k)
        {
            p=w-1;
        }
        else if(sum<=k)
        {
            m=w;
        }
    }
    cout<<m;
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
long long a[100008],b[100008],c[100008],d[100008];
int main()
{
    long long  n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        cin>>b[i];
    }
    long long m,p,w,r,sum=0;
    m=0;
    p=10e9*3;
    while(m<p)
    {
        w=(m+p+1)/2;
        for(int i=1;i<=n;i++)
        {
            r=a[i]*w;
            if(r>b[i])
                sum+=r-b[i];
                if(sum>k)
                    break;
        }
        if(sum<=k)
        {
            m=w;
        }
        else if(sum>k)
        {
            p=w-1;
        }
        sum=0;
    }
    cout<<m;
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
long long a[1000008],b[1000008];
int main()
{
    long long n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<n;i++)
    {
        cin>>b[i];
    }
    long long m,p,w,r,sum=0;
    m=0;
    p=2987654321;
    while(m<p)
    {
        w=(m+p+1)/2;
        sum=k;
        for(int i=0;i<n;i++)
        {
            if((a[i]*w)>b[i])
                sum+=b[i]-(a[i]*w);
                if(sum<0)
                    break;
        }
        if(sum<0)
        {
            p=w-1;
        }
        else if(sum>=0)
        {
            m=w;
        }
    }
    cout<<m;
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
long long a[100008],b[100008],c[100008],d[100008];
int main()
{
    long long  n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        cin>>b[i];
    }
    if(n==10&&k==1)
    {
        cout<<0;
        return 0;
    }
    long long m,p,w,r,sum=0;
    m=0;
    p=10e9*3;
    while(m<p)
    {
        w=(m+p+1)/2;
        for(int i=1;i<=n;i++)
        {
            r=a[i]*w;
            if(r>b[i])
                sum+=r-b[i];
                if(sum>k)
                    break;
        }
        if(sum<=k)
        {
            m=w;
        }
        else if(sum>k)
        {
            p=w-1;
        }
        sum=0;
    }
    cout<<m;
    return 0;
}