#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
const int N = 200005;
const double PI = 4 * atan(1);
const double eps = 1e-7;
const long long oo = 1e10;
const int K = 205;
long long dp[N][5];
long long num[N][5];
long long n, k;
vector<long long> adj[N];
long long ans = 0;
void dfs(long long src, long long par) {
  num[src][0]++;
  for (auto t : adj[src]) {
    if (t == par) continue;
    dfs(t, src);
    for (int i = 0; i < k; i++) {
      long long x = dp[t][(i + k - 1) % k];
      if (i == 0) x += num[t][(i + k - 1) % k] * k;
      long long y = num[t][(i + k - 1) % k];
      for (int j = 0; j < k; j++) {
        ans += ((x / k) * num[src][j] + (dp[src][j] / k) * y);
        if (i + j > k)
          ans += 2 * (num[src][j] * y);
        else if (i + j > 0)
          ans += (num[src][j] * y);
      }
    }
    for (int i = 0; i < k; i++) {
      dp[src][(i + 1) % k] += (dp[t][i]);
      if (i == k - 1) dp[src][(i + 1) % k] += (num[t][i] * k);
      num[src][(i + 1) % k] += num[t][i];
    }
  }
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> k;
  for (int i = 0; i < n - 1; i++) {
    long long x, y;
    cin >> x >> y;
    x--;
    y--;
    adj[x].push_back(y);
    adj[y].push_back(x);
  }
  dfs(0, 0);
  cout << ans;
  return 0;
}
