func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 3e5 + 10;   inline int read() {     char ch = getchar();     int x = 0, f = 1;     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (ch >=  0  && ch <=  9 ) {       x = (x << 1) + (x << 3) -  0  + ch;       ch = getchar();     }     return x * f;   }   int n, k, size[N];   long long ans, f[N][5];   vector<int> g[N];   void dfs(int u, int fa, int d) {     size[u] = 1;     f[u][d % k] = 1;     for (auto &v : g[u]) {       if (v == fa) continue;       dfs(v, u, d + 1);       size[u] += size[v];       ans += 1ll * (n - size[v]) * size[v];       for (int i = 0; i < k; i++) {         for (int j = 0; j < k; j++) {           int z = ((i + j - 2 * d) % k + k) % k;           z = (k - z) % k;           ans += 1ll * z * f[u][i] * f[v][j];         }       }       for (int i = 0; i < k; i++) f[u][i] += f[v][i];     }   }   int main() {     n = read(), k = read();     for (int i = 1; i <= n - 1; i++) {       int a = read(), b = read();       g[a].push_back(b);       g[b].push_back(a);     }     dfs(1, 0, 0);     printf( %lld n , ans / k);   }   