#include #include #include using namespace std; #define REP(i,m,n) for(int i=(int)(m) ; i < (int) (n) ; ++i ) #define rep(i,n) REP(i,0,n) typedef long long ll; const ll mod=1e9+7 ; ll dp[3030][3030]; int main(){ int n,m,k; cin>>n>>m>>k; assert(1<=n&&n<=3000); assert(1<=m&&m<=3000); assert(1<=k&&k<=3000); vector> v(m); for(auto &p :v){ cin>>p.first>>p.second; assert(1<=p.first&&p.first<=p.second&&p.second<=n); } dp[0][1]=1; rep(i,k){ rep(j,n)(dp[i][j+1]+=dp[i][j])%=mod; for(auto p : v){ dp[i+1][p.first]+=dp[i][p.second]-dp[i][p.first-1]+mod; dp[i+1][p.second+1]+=-dp[i][p.second]+dp[i][p.first-1]+mod; } rep(j,n)(dp[i+1][j+1]+=dp[i+1][j])%=mod; } cout<