#include #include #include #include #include #include using namespace std; #define int long long #define rep(i,n) for(int i = 0; i < (n); i++) #define INF ((long long)1e18) #define MOD ((int)1e9+7) #define endl "\n" #define yn(f) ((f)?"Yes":"No") #define YN(f) ((f)?"YES":"NO") #define MAX 3100 int N, M, K; int _floor[MAX][MAX]; int L[MAX], R[MAX]; signed main(){ cin.tie(0); ios::sync_with_stdio(false); cout<>N>>M>>K; for(int i = 0; i < M; i++){ cin>>L[i]>>R[i]; } _floor[0][1] = 1; for(int i = 1; i <= K; i++){ for(int j = 0; j <= N; j++){ if(j)_floor[i-1][j] += _floor[i-1][j-1]; _floor[i-1][j] %= MOD; } for(int j = 0; j < M; j++){ int sum = (MOD + _floor[i-1][R[j]] - _floor[i-1][L[j]-1])%MOD; _floor[i][R[j]+1] = (MOD+_floor[i][R[j]+1]-sum)%MOD; _floor[i][L[j]] = (MOD+_floor[i][L[j]]+sum)%MOD; } for(int j = 0; j <= N; j++){ if(j)_floor[i][j] += _floor[i][j-1]; _floor[i][j] %= MOD; } } cout<<_floor[K][N]<