func_code_string: #include <bits/stdc++.h>   using namespace std;   class team {    public:     int x, y, z;   };   int search(team *, int, int);   int main() {     int m, n, t;     cin >> n >> m;     int *arr1, *arr2;     arr1 = new int[m];     arr2 = new int[m];     for (int i = 0; i < m; i++) cin >> arr1[i] >> arr2[i];     team *res = new team[n / 3];     for (int i = 0; i < n / 3; i++) {       res[i].x = 0;       res[i].y = 0;       res[i].z = 0;     }     bool *tak = new bool[n + 1];     bool resf = false;     for (int i = 0; i < n + 1; i++) tak[i] = false;     tak[0] = true;     for (int i = 0; i < m; i++) {       if ((!tak[arr1[i]]) && (!tak[arr2[i]])) {         bool f = true;         for (int j = 0; j < n / 3; j++) {           if (res[j].x == 0) {             res[j].x = arr1[i];             res[j].y = arr2[i];             tak[arr1[i]] = true;             tak[arr2[i]] = true;             f = false;             break;           }         }         if (f) {           resf = true;           goto End;         }       } else if (tak[arr1[i]] && tak[arr2[i]]) {         if (search(res, arr1[i], n / 3) == search(res, arr2[i], n / 3))           continue;         else {           resf = true;           goto End;         }       } else if (tak[arr1[i]]) {         t = search(res, arr1[i], n / 3);         if (res[t].z == 0) {           res[t].z = arr2[i];           tak[arr2[i]] = true;         } else {           resf = true;           goto End;         }       } else if (tak[arr2[i]]) {         t = search(res, arr2[i], n / 3);         if (res[t].z == 0) {           res[t].z = arr1[i];           tak[arr1[i]] = true;         } else {           resf = true;           goto End;         }       }     }     for (int i = 0; i < n / 3; i++) {       if (res[i].x == 0) {         for (int j = 1; j < n + 1; j++)           if (!tak[j]) {             res[i].x = j;             tak[j] = true;             break;           }       }       if (res[i].y == 0) {         for (int j = 1; j < n + 1; j++)           if (!tak[j]) {             res[i].y = j;             tak[j] = true;             break;           }       }       if (res[i].z == 0) {         for (int j = 1; j < n + 1; j++)           if (!tak[j]) {             res[i].z = j;             tak[j] = true;             break;           }       }     }   End:     if (resf)       cout << -1;     else {       for (int i = 0; i < n / 3; i++)         cout << res[i].x <<     << res[i].y <<     << res[i].z << endl;     }     return 0;   }   int search(team *input, int val, int size) {     for (int i = 0; i < size; i++) {       if (input[i].x == val) return i;       if (input[i].y == val) return i;       if (input[i].z == val) return i;     }   }   