func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Solve {     bool mark[(int)(3e5 + 10)];     vector<pair<int, int>> ed[(int)(3e5 + 10)];     vector<int> mtch;     int n, m, T;     void go() {       T = 0;       input();       find_mx_match();       if (T >= 2 * n)         prnt_match();       else         prnt_ind();     }     void input() {       cin >> n >> m;       for (int i = 0; i < m; i++) {         int u, v;         cin >> u >> v;         u--, v--;         ed[u].push_back({v, i + 1});         ed[v].push_back({u, i + 1});       }     }     void find_mx_match() {       for (int i = 0; i < 3 * n; i++) {         if (mark[i]) continue;         for (auto x : ed[i]) {           if (mark[x.first]) continue;           mark[x.first] = mark[i] = true;           mtch.push_back(x.second);           T += 2;           break;         }       }     }     void prnt_match() {       cout <<  Matching n ;       int I = 0;       for (auto x : mtch) {         if (I == n) break;         cout << x <<    ;         I++;       }       cout << endl;     }     void prnt_ind() {       cout <<  IndSet n ;       for (int I = 0, J = 0; I < 3 * n && J < n; I++) {         if (!mark[I]) {           cout << I + 1 <<    ;           J++;         }       }       cout << endl;     }     void clear() {       T = 0;       for (int i = 0; i < 3 * n; i++) mark[i] = false;       for (int i = 0; i < 3 * n; i++) ed[i].clear();       n = -1, m = -1;       mtch.clear();     }   } S;   int main() {     ios::sync_with_stdio(false);     cin.tie(NULL), cout.tie(NULL);     int T;     cin >> T;     while (T--) {       S.go();       S.clear();     }     return 0;   }   