#include #define rep(i,n) for(int i=(0);i<(n);i++) using namespace std; typedef long long ll; template bool chmax(T &a, const T &b) { if (a bool chmin(T &a, const T &b) { if (a>b) { a=b; return 1; } return 0; } int main(){ cin.tie(0); ios::sync_with_stdio(false); ll n, m, k; cin >> n >> m >> k; vector l(m), r(m); rep(i, m){ cin >> l[i] >> r[i]; l[i]--; r[i]--; } ll MOD = 1e9 + 7; ll dp[k+1][n+1]; rep(i, k+1) rep(j, n+1) dp[i][j] = 0; dp[0][0] = 1; rep(i, k){ vector a(n+1, 0); rep(j, n) { a[j+1] = a[j] + dp[i][j]; a[j+1] %= MOD; } rep(j, m){ ll sm = a[r[j]+1] - a[l[j]]; dp[i+1][l[j]] += sm; dp[i+1][l[j]] %= MOD; dp[i+1][r[j]+1] += MOD - sm; dp[i+1][r[j]+1] %= MOD; } rep(j, n){ dp[i+1][j+1] += dp[i+1][j]; dp[i+1][j+1] %= MOD; } } cout << dp[k][n-1] << endl; }