#include <bits/stdc++.h>
using namespace std;
const int N = 200004;
vector<int> G[N];
int k;
long long ans = 0;
long long num[N][5], dis[N][5];
void dfs(int x, int fa) {
  num[x][0] = 1;
  for (auto y : G[x]) {
    if (y == fa) continue;
    dfs(y, x);
    for (int i = 0; i < k; i++) {
      for (int j = 0; j < k; j++) {
        int length =
            (i + j + k - 1) / k + ((i + j) % k == 0) - (i > 0) - (j > 0);
        ans += length * num[y][j] * num[x][i];
        ans += num[y][j] * dis[x][i] + num[x][i] * dis[y][j];
      }
    }
    for (int i = 0; i < k; i++) {
      num[x][i] += num[y][(i - 1 + k) % k];
      dis[x][i] += dis[y][(i - 1 + k) % k] +
                   ((i - 1 + k) % k == 0) * num[y][(i - 1 + k) % k];
    }
  }
}
int main() {
  int n;
  scanf("%d%d", &n, &k);
  for (int i = 1; i < n; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    G[x].push_back(y);
    G[y].push_back(x);
  }
  dfs(1, 1);
  cout << ans << endl;
  return 0;
}
