func_code_string: #include <bits/stdc++.h>   using namespace std;   long parent[100];   long nm[100];   vector<long> v[100];   long pp(long z) {     if (parent[z] == z) {       return z;     } else {       parent[z] = pp(parent[z]);     }   }   int main() {     long i, j, k, l, m, n, p, two, one;     scanf( %ld%ld , &n, &m);     for (i = 1; i <= n; i++) parent[i] = i;     for (i = 1; i <= m; i++) {       scanf( %ld%ld , &k, &l);       parent[l] = k;     }     for (i = 1; i <= n; i++) {       k = pp(i);     }     for (i = 1; i <= n; i++) {       nm[parent[i]]++;       if (nm[parent[i]] > 3) {         printf( -1 n );         return 0;       }     }     l = one = two = 0;     for (i = 1; i <= n; i++) {       if (nm[i] == 3) {         k = 0;         for (j = 1; j <= n; j++) {           if (parent[j] == i) {             v[l].push_back(j);             parent[j] = -1;             k++;           }         }         nm[i] = -1;         l++;       }       if (nm[i] == 2)         two++;       else if (nm[i] == 1)         one++;     }     if (one >= two) {       if ((one - two) % 3) {         printf( -1 n );         return 0;       }       while (two) {         for (i = 1; i <= n; i++) {           if (nm[i] == 2) {             for (j = 1; j <= n; j++) {               if (nm[j] == 1) {                 for (k = 1; k <= n; k++) {                   if (parent[k] == j) {                     v[l].push_back(k);                     nm[j] = -1;                     parent[k] = -1;                     break;                   }                 }                 break;               }             }             for (j = 1; j <= n; j++) {               if (parent[j] == i) {                 v[l].push_back(j);                 parent[j] = -1;               }             }             nm[i] = -1;             two--;             one--;             l++;             break;           }         }       }       while (one) {         k = 0;         for (i = 1; i <= n; i++) {           if (nm[i] == 1) {             v[l].push_back(i);             nm[i] = -1;             k++;             one--;             if (k == 3) {               l++;               break;             }           }         }       }       for (i = 0; i < l; i++) printf( %ld %ld %ld n , v[i][0], v[i][1], v[i][2]);     } else {       printf( -1 n );       return 0;     }     return 0;   }   