#include <bits/stdc++.h>
using namespace std;
template <class T, class U>
ostream& operator<<(ostream& out, const pair<T, U>& a) {
  out << "[" << a.first << " " << a.second << "]";
  return out;
}
template <class T>
ostream& operator<<(ostream& out, const vector<T>& a) {
  out << "[ ";
  for (auto& it : a) out << it << " ";
  out << "]";
  return out;
}
template <class T>
ostream& operator<<(ostream& out, const set<T>& a) {
  out << "[ ";
  for (auto& it : a) out << it << " ";
  out << "]";
  return out;
}
template <class T>
ostream& operator<<(ostream& out, const multiset<T>& a) {
  out << "[ ";
  for (auto& it : a) out << it << " ";
  out << "]";
  return out;
}
template <class T, class U>
ostream& operator<<(ostream& out, const map<T, U>& a) {
  for (auto& it : a) out << it.first << " -> " << it.second << " | ";
  return out;
}
template <class T, class U>
ostream& operator<<(ostream& out, const multimap<T, U>& a) {
  for (auto& it : a) out << it.first << " -> " << it.second << " | ";
  return out;
}
int x_dir[4] = {-1, 0, 1, 0};
int y_dir[4] = {0, 1, 0, -1};
const int max_n = 2e5 + 10;
int n, k;
vector<vector<int> > adj;
long long ans;
long long dp[max_n][6];
long long subtrees[max_n];
long long sumpaths[6];
void dfs(int u, int parent) {
  subtrees[u] = 1;
  dp[u][0] = 1;
  for (auto v : adj[u]) {
    if (v == parent) continue;
    dfs(v, u);
    for (int i = int(0); i <= int(k - 1); i++)
      for (int j = int(0); j <= int(k - 1); j++)
        sumpaths[(i + j + 1) % k] += dp[u][i] * dp[v][j];
    for (int i = int(0); i <= int(k - 1); i++)
      dp[u][i] += dp[v][(i + k - 1) % k];
    ans += subtrees[v] * (n - subtrees[v]);
    subtrees[u] += subtrees[v];
  }
}
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  cin >> n >> k;
  adj.assign(n + 1, vector<int>());
  for (int i = int(1); i <= int(n - 1); i++) {
    int u, v;
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  dfs(1, -1);
  for (int i = int(1); i <= int(k - 1); i++) ans += (k - i) * sumpaths[i];
  cout << ans / k;
  return 0;
}
