#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define fi first
#define se second
int get(char c){
return c-'0';
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n;
cin>>n;
string s;
cin>>s;
int val[n];
int pref[n+1];
vector<int>oc(4,0);
pref[0]=0;
for(int i=0;i<n;++i){
val[i]=get(s[i]);
pref[i+1]=pref[i]^val[i];
++oc[val[i]];
}
vector<pair<int,pair<int,int>>>v,ans;
for(int i=0;i<n;++i){
v.push_back(make_pair(val[i],make_pair(i,(i+1)%n)));
while(v.size()>=2){
int m=v.size();
if(v[m-1].fi!=v[m-2].fi and !(oc[v[m-1].fi]==1 and oc[v[m-2].fi]==1)){
auto v1=v[m-1],v2=v[m-2];
int col=6-v1.fi-v2.fi;
++oc[col];
--oc[v1.fi];
--oc[v2.fi];
v.pop_back();
v.pop_back();
v.push_back(make_pair(col,make_pair(v2.se.fi,v1.se.se)));
ans.push_back(v.back());
}else break;
}
}
if(v.size()==3 and v[0].fi!=v[1].fi and v[0].fi!=v[2].fi and v[1].fi!=v[2].fi){
cout<<"DA\n";
for(auto&i:ans)
cout<<i.se.fi+1<<' '<<i.se.se+1<<' '<<i.fi<<'\n';
}else
cout<<"NE\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |