#include <bits/stdc++.h>
using namespace std;
const int N = (int)2e5 + 5;
const int mod = 1000000007;
long long ans = 0;
vector<int> adj[N];
int cnt[6][N], vis[N];
long long tot[N];
int n, k;
void dfs(int u, int dis) {
  cnt[dis % k][u] = 1;
  tot[u] = 1;
  vis[u] = 1;
  for (auto &v : adj[u]) {
    if (!vis[v]) {
      dfs(v, dis + 1);
      for (int i = 0; i < k; i++)
        for (int j = 0; j < k; j++) {
          long long fij = (2 * dis + (25 * k) - i - j) % k;
          ans += fij * 1ll * (cnt[i][u]) * 1ll * (cnt[j][v]);
        }
      for (int i = 0; i < k; i++) cnt[i][u] += cnt[i][v];
      tot[u] += tot[v];
    }
  }
  ans += tot[u] * (n - tot[u]);
}
int main() {
  scanf("%d", &n);
  scanf("%d", &k);
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    scanf("%d", &u);
    scanf("%d", &v);
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  dfs(1, 0);
  printf("%lld ", ans / k);
  printf("\n");
  return 0;
}
