func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long N = 2e5 + 7;   long long l[N], r[N];   long long a[N];   bool used[N];   signed main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     long long n;     cin >> n;     string second;     cin >> second;     for (long long i = 0; i < n; ++i) cin >> a[i];     set<pair<long long, long long> > ms;     for (long long i = 0; i < n; ++i) {       l[i] = i - 1;       r[i] = i + 1;     }     r[n] = n;     for (long long i = 0; i < n - 1; ++i) {       if (second[i] != second[i + 1]) {         ms.insert(make_pair(abs(a[i] - a[i + 1]), i));       }     }     vector<pair<long long, long long> > ans;     while (ms.size()) {       long long i = ms.begin()->second;       ms.erase(ms.begin());       if (used[i] || used[r[i]]) continue;       ans.push_back(make_pair(i, r[i]));       used[i] = used[r[i]] = 1;       long long tl = l[i];       long long tr = r[r[i]];       ms.erase(make_pair(abs(a[tl] - a[i]), tl));       ms.erase(make_pair(abs(a[tr] - a[r[i]]), r[i]));       if (tl != -1) r[tl] = tr;       if (tr != n) l[tr] = tl;       if (tl != -1 && tr != n && second[tl] != second[tr]) {         ms.insert(make_pair(abs(a[tl] - a[tr]), tl));       }     }     cout << ans.size() <<   n ;     for (auto e : ans) cout << e.first + 1 <<     << e.second + 1 <<   n ;   }   