#include<bits/stdc++.h>
#define int long long int
#define nitro ios_base::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL);
#define pb push_back
#define pi 3.1415926535897932384626
#define mod 1000000007
#define endl '\n'
#define DEBUG false
#define F first
#define S second
#pragma GCC optimize "trapv"
using namespace std;
int32_t main()
{
nitro;
/*#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif*/
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
string s;
cin>>s;
int c=1;
std::vector<int> v(n,0);
std::stack<int> s0,s1;
for(int i=0;i<n;i++)
{
if(s[i]=='0')
{
if(!s1.empty())
{
int k=s1.top();
v[i]=k;
s1.pop();
s0.push(k);
}
else
{
s0.push(c);
v[i]=c;
c++;
}
}
else
{
if(!s0.empty())
{
int k=s0.top();
v[i]=k;
s0.pop();
s1.push(k);
}
else
{
s1.push(c);
v[i]=c;
c++;
}
}
}
int m=*max_element(v.begin(),v.end());
cout<<m<<endl;
for(auto i:v)
cout<<i<<" ";
cout<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBpbnQgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgbml0cm8gICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksY2luLnRpZShOVUxMKSxjb3V0LnRpZShOVUxMKTsKI2RlZmluZSBwYiAgICAgICBwdXNoX2JhY2sKI2RlZmluZSBwaSAgICAgICAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjYKI2RlZmluZSBtb2QgICAgICAxMDAwMDAwMDA3CiNkZWZpbmUgZW5kbCAgICAgJ1xuJwojZGVmaW5lIERFQlVHICAgIGZhbHNlCiNkZWZpbmUgRiAgICAgICAgZmlyc3QKI2RlZmluZSBTICAgICAgICBzZWNvbmQKI3ByYWdtYSBHQ0Mgb3B0aW1pemUgInRyYXB2IgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgppbnQzMl90IG1haW4oKQp7CiBuaXRybzsKIC8qI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgICAgZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKICNlbmRpZiovCiBpbnQgdDsKIGNpbj4+dDsKIHdoaWxlKHQtLSkKIHsKICAgICBpbnQgbjsKICAgICBjaW4+Pm47CiAgICAgc3RyaW5nIHM7CiAgICAgY2luPj5zOwogICAgIGludCBjPTE7CiAgICAgc3RkOjp2ZWN0b3I8aW50PiB2KG4sMCk7CiAgICAgc3RkOjpzdGFjazxpbnQ+IHMwLHMxOwogICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgewogICAgICAgICBpZihzW2ldPT0nMCcpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmKCFzMS5lbXB0eSgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGludCBrPXMxLnRvcCgpOwogICAgICAgICAgICAgICAgIHZbaV09azsKICAgICAgICAgICAgICAgICBzMS5wb3AoKTsKICAgICAgICAgICAgICAgICBzMC5wdXNoKGspOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHMwLnB1c2goYyk7CiAgICAgICAgICAgICAgICAgdltpXT1jOwogICAgICAgICAgICAgICAgIGMrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmKCFzMC5lbXB0eSgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGludCBrPXMwLnRvcCgpOwogICAgICAgICAgICAgICAgIHZbaV09azsKICAgICAgICAgICAgICAgICBzMC5wb3AoKTsKICAgICAgICAgICAgICAgICBzMS5wdXNoKGspOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHMxLnB1c2goYyk7CiAgICAgICAgICAgICAgICAgdltpXT1jOwogICAgICAgICAgICAgICAgIGMrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBpbnQgbT0qbWF4X2VsZW1lbnQodi5iZWdpbigpLHYuZW5kKCkpOwogICAgIGNvdXQ8PG08PGVuZGw7CiAgICAgZm9yKGF1dG8gaTp2KQogICAgIGNvdXQ8PGk8PCIgIjsKICAgICBjb3V0PDxlbmRsOwogfQogcmV0dXJuIDA7Cn0=