#include #include using namespace std; typedef pair PII; const int N = 3010, MOD = 1e9 + 7; PII p[N]; int n, m, k, f[N][N], ps[N][N]; // 坐i次电梯到第j层的方案数 int main() { // freopen("lift.in", "r", stdin); // freopen("lift.out", "w", stdout); scanf("%d%d%d", &n, &m, &k); for (int i = 1; i <= m; ++i) scanf("%d%d", &p[i].first, &p[i].second); f[0][1] = 1; for (int i = 1; i <= n; ++i) ps[0][i] = 1; for (int i = 1; i <= k; ++i) { for (int j = 1; j <= m; ++j) { int x = (0LL + ps[i - 1][p[j].second] - ps[i - 1][p[j].first - 1] + MOD) % MOD; (f[i][p[j].first] += x) %= MOD; ((f[i][p[j].second + 1] -= x) += MOD) %= MOD; } ps[i][1] = f[i][1]; for (int j = 2; j <= n; ++j) { (f[i][j] += f[i][j - 1]) %= MOD; ps[i][j] = (0LL + ps[i][j - 1] + f[i][j]) % MOD; } } printf("%d\n", f[k][n]); return 0; }