#include #include #include #include #include #include #include using namespace std; int n, m; vector graph[200005]; int dp[200005]; int rec(int node) { if(node == n) { return 1; } if(dp[node] != -1) { return dp[node]; } int result = 0, MOD = 1e9 + 7; for(int i = 0; i < (int) graph[node].size(); i++) { int neigh = graph[node][i]; result += rec(neigh); result %= MOD; } return dp[node] = result; } int main(int argc, const char* argv[]) { cin >> n >> m; for(int i = 0; i < m; i++) { int a, b; cin >> a >> b; graph[a].push_back(b); } memset(dp, -1, sizeof dp); cout << rec(1) << endl; return 0; }