#include <bits/stdc++.h>
#include <vector>
using namespace std;
typedef long long ll;
typedef pair<int,int>PII;
const int N=200010;
int t,n,m;
int a[N];
string s;
void solve()
{
cin>>n;cin>>s;
vector<int>one;vector<int>vis(n);vector<int>last;
vector<PII>ans;
for(int i=0;i<s.size();i++)
{
if(s[i]=='1')
one.push_back(i),vis[i]=1;
}//找出以奇度开头的链
// 树有叶子节点 且树的度数为偶;
if(one.size()==0||one.size()%2==1)
{
cout<<"NO"<<endl;
return ;
}
else cout<<"YES"<<endl;
//插入每条链相连的偶度的点的关系;
for(int i:one)
{
while(!vis[(i+1)%n])//取模巧妙退出;
{
ans.push_back({i,(i+1)%n}),i++;
i%=n;
}
last.push_back(i);//寻找每条链的尾节点(度数为偶)
}
for(int i=1;i<last.size();i++)
{
ans.push_back({last[0],last[i]});//链接尾节点;
}
for(auto i:ans)//坐标1开始; 插入的时候0开始;
{
cout<<i.first+1<<' '<<i.second+1<<endl;
}
return ;
}
int main()
{
cin>>t;
while(t--)
{
solve();
}
return 0;
}