#include <bits/stdc++.h>
using namespace std;
long long mod1 = 1e9 + 7;
long long mod2 = 998244353;
long long mul(long long x, long long y) {
  return (1ll * (x % mod1) * (y % mod1));
}
long long power(long long x, long long y) {
  long long z = 1;
  while (y > 0) {
    if (y % 2) z = mul(z, x);
    x = mul(x, x);
    y /= 2;
  }
  return z;
}
long long gcd(long long a, long long b) {
  if (a < b) return gcd(b, a);
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long min(long long a, long long b) {
  if (a < b) return a;
  return b;
}
long long max(long long a, long long b) {
  if (a > b) return a;
  return b;
}
void solve() {
  long long a;
  while (1) {
    cin >> a;
    if (a = 42) break;
    cout << a << endl;
  }
}
long long dp[100001], sum[100001];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long t, k;
  cin >> t >> k;
  dp[0] = 1;
  for (long long i = 1; i < k; i++) dp[i] = 1;
  dp[k] = 2;
  for (long long i = k + 1; i < 100001; i++) {
    dp[i] += dp[i - 1] + dp[i - k];
    if (dp[i] >= mod1) dp[i] -= mod1;
  }
  sum[0] = 0;
  for (long long i = 1; i < 100001; i++) {
    sum[i] = sum[i - 1];
    if (sum[i] >= mod1) sum[i] -= mod1;
    sum[i] += dp[i];
    if (sum[i] >= mod1) sum[i] -= mod1;
  }
  while (t--) {
    long long a, b;
    cin >> a >> b;
    cout << (sum[b] % mod1 - sum[a - 1] % mod1 + mod1) % mod1 << endl;
  }
}
