#include using namespace std; #define MOD 1000000007 int main(void) { int N, M, K; cin >> N >> M >> K; vector L(M), R(M); for (int i = 0; i < M; i++) { cin >> L[i] >> R[i]; L[i]--; R[i]--; } vector > dp(K + 1, vector(N + 1, 0)); dp[0][0] = 1; for (int i = 1; i <= K; i++) { vector sum(N + 1, 0); sum[0] = dp[i - 1][0]; for (int j = 1; j <= N; j++) { sum[j] += sum[j - 1] + dp[i - 1][j - 1]; sum[j] %= MOD; } for (int j = 0; j < M; j++) { int l = L[j]; int r = R[j] + 1; long long s = (sum[r] - sum[l] + MOD) % MOD; dp[i][l] = (dp[i][l] + s) % MOD; dp[i][r] = (dp[i][r] - s + MOD) % MOD; } for (int j = 1; j <= N; j++) { dp[i][j] += dp[i][j - 1]; dp[i][j] %= MOD; } } cout << dp[K][N - 1] << endl; return 0; }