#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<<' '<<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... |