#include "bits/stdc++.h"
using namespace std;
#define int long long
#define double long double
#define INF 1000000000000000000
#define MOD 1000000007
int32_t main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int n, xr = 0;
    string s;
    cin >> n >> s;
    int a[n];
    for(int i = 0; i < n; i++) a[i] = s[i]-'0';
    int idx = -1;
    for(int i = 0; i < n; i++) {
        xr ^= a[i];
        if(a[i] != a[(i+1)%n] && (a[(i+n-1)%n] == a[i] || a[(i+n-1)%n] == a[(i+1)%n] || a[(i+2)%n] == a[i] || a[(i+2)%n] == a[(i+1)%n])) idx = i;
    }
    if(xr || idx == -1) {
        cout << "NE\n";
        return 0;
    }
    vector<tuple<int, int, int>> ans;
    int i1 = idx, i2 = (idx+1)%n, prv = a[i1]^a[i2];
    ans.push_back({i1+1, (i2+1)%n+1, prv});
    i1 = (i1+n-1)%n; i2 = (i2+1)%n;
    for(int i = 0; i < n-4; i++) {
        if(a[i1] != prv) {
            prv ^= a[i1];
            ans.push_back({i1+1, i2+1, prv});
            i1 = (i1+n-1)%n;
        } else if(a[i2] != prv) {
            prv ^= a[i2];
            ans.push_back({(i1+1)%n+1, (i2+1)%n+1, prv});
            i2 = (i2+1)%n;
        } else {
            cout << "NE\n";
            return 0;
        }
    }
    cout << "DA\n";
    for(auto [x,y,z] : ans) cout << x << " " << y << " " << z << '\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... |