#include <bits/stdc++.h>
using namespace std;
struct node {
  int l, r;
} s[100005];
int n, p;
int main() {
  while (scanf("%d%d", &n, &p) == 2) {
    for (int i = 0; i < n; i++) {
      scanf("%d%d", &s[i].l, &s[i].r);
    }
    double ans = 0;
    for (int i = 0; i < n; i++) {
      long long s1 = (s[i].r / p) - (s[i].l - 1) / p;
      long long s2 = (s[(i + 1) % n].r / p) - (s[(i + 1) % n].l - 1) / p;
      long long num1 = (s[i].r - s[i].l + 1);
      long long num2 = (s[(i + 1) % n].r - s[(i + 1) % n].l + 1);
      double x = s1;
      x = x / num1;
      double y = s2;
      y = y / num2;
      ans += 2000 * (y + (1 - y) * x);
    }
    printf("%.6f\n", ans);
  }
  return 0;
}
