#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
vector<long long int> PreCompute(long long int k) {
  vector<long long int> dp(1e5 + 5);
  tie(dp[1], dp[k]) = make_tuple(1, 2);
  for (long long int i = 2; i < k; i++) {
    dp[i] = 1;
  }
  for (long long int i = k + 1; i < dp.size(); i++) {
    dp[i] = (dp[i - 1] % mod + dp[i - k] % mod) % mod;
  }
  vector<long long int> prefix(1e5 + 5);
  prefix[1] = dp[1];
  for (long long int i = 1; i < dp.size() - 1; i++) {
    prefix[i + 1] = (dp[i + 1] + prefix[i]);
  }
  return prefix;
}
void Compute(long long int a, long long int b, long long int k,
             const vector<long long int> &prefix) {
  long long int x = prefix[b];
  long long int y = prefix[a - 1];
  cout << (x - y) % mod << "\n";
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long int t, k, a, b;
  cin >> t >> k;
  vector<long long int> vec = PreCompute(k);
  while (t--) {
    cin >> a >> b;
    Compute(a, b, k, vec);
  }
}
