#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return (a ? gcd(b % a, a) : b); }
long long power(long long a, long long n) {
  long long p = 1;
  while (n > 0) {
    if (n & 1) {
      p = p * a;
    }
    n >>= 1;
    a *= a;
  }
  return p;
}
long long power(long long a, long long n, long long mod) {
  long long p = 1;
  while (n > 0) {
    if (n & 1) {
      p = p * a;
      p %= mod;
    }
    n >>= 1;
    a *= a;
    a %= mod;
  }
  return p % mod;
}
vector<int> prime;
bool primee[10000000];
void primegen(long long x) {
  for (long long i = 2; i * i <= x; i++)
    if (!primee[i])
      for (long long j = i * i; j <= x; j += i) primee[j] = true;
  for (long long i = 2; i <= x; i++)
    if (!primee[i]) prime.push_back(i);
}
const int N = 234567;
long long coun[6], dp[N][6], ans;
vector<int> v[N];
int sz[N], k, n;
void dfs(int s, int pa) {
  dp[s][0] = 1;
  sz[s] = 1;
  int i, j, l;
  for (i = 0; i < v[s].size(); i++)
    if (v[s][i] != pa) {
      int u = v[s][i];
      dfs(u, s);
      sz[s] += sz[u];
      for (j = 0; j < k; j++)
        for (l = 0; l < k; l++) coun[(j + l + 1) % k] += (dp[s][j] * dp[u][l]);
      for (j = 0; j < k; j++) dp[s][(j + 1) % k] += dp[u][j];
    }
  ans += (n - (long long)sz[s]) * (long long)sz[s];
}
int main() {
  int i, j;
  scanf("%d", &n);
  scanf("%d", &k);
  int x, y;
  for (i = 0; i < n - 1; i++) {
    scanf("%d", &x);
    scanf("%d", &y);
    v[x].push_back(y);
    v[y].push_back(x);
  }
  dfs(1, 0);
  for (i = 1; i < k; i++) ans += (k - i) * coun[i];
  printf("%lld\n", ans / k);
  return 0;
}
