func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   using ld = long double;   using vi = vector<int>;   using vl = vector<ll>;   using pii = pair<int, int>;   using vpii = vector<pair<int, int>>;   template <typename T>   using pque = priority_queue<T, vector<T>, greater<T>>;   constexpr int N = 212345, M = 16;   class Node {    public:     int a = 0;     Node *c[2] = {NULL, NULL};     Node *next(int a) {       if (c[a] == NULL) c[a] = new Node();       return c[a];     }   } *head = new Node();   vpii g[N];   vi v[M][M];   int p[N] = {};   template <class T>   void dfs(int a, int b, T func) {     if (a > b) {       func();       return;     };     for (int i = (0); i < ((a)); i++) {       for (int j : v[a][i]) p[j]++;       dfs(a + 1, b, func);       for (int j : v[a][i]) p[j]--;     }   }   int main() {     int n, m, k;     scanf( %d%d%d , &n, &m, &k);     for (int i = (0); i < ((m)); i++) {       int a, b, c;       scanf( %d%d%d , &a, &b, &c);       g[a].emplace_back(c, b);     }     for (int i = (1); i < (n + 1); i++) {       sort((g[i]).begin(), (g[i]).end());       for (int j = (0); j < (((int)g[i].size())); j++) {         v[g[i].size()][j].emplace_back(g[i][j].second);       }     }     for (int i = (1); i < (k); i++)       for (int j = (0); j < ((i)); j++) {         ;         for (int h : v[i][j])           ;         ;       }     dfs(1, min(6, k), [&]() {       for (int i = (1); i < (n + 1); i++)         ;       ;       Node *node = head;       for (int i = (1); i < (n + 1); i++) {         if (p[i] >= 2) return;         node = node->next(p[i]);       }       node->a++;     });     ;     int ans = 0;     dfs(min(7, k), k <= 6 ? 0 : k, [&]() {       Node *node = head;       for (int i = (1); i < (n + 1); i++) {         if (p[i] >= 2) return;         node = node->next(1 - p[i]);       }       ans += node->a;       ;     });     printf( %d n , ans);   }   