// compile: make data
// run: time ./data < data.in
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#ifdef LOCAL
#include <debug/codeforces.h>
#define debug(x...) _debug_print(#x, x);
#define Debug(x...) _debug_print_format(#x, x);
std::ifstream terminal("/dev/tty");
#define PP cerr<<"\033[1;30mpause...\e[0m",terminal.ignore();
#else
#define debug(x...)
#define Debug(x...)
#define PP
#endif
template<typename...Args> void print_(Args...args){((cout<<args<<" "),...)<<endl;}
#define VI vector<int>
#define VII vector<vector<int>>
#define VIII vector<vector<vector<int>>>
#define rep(i,a,b) for(int i=(a);i<(int)(b);++i)
#define sz(v) ((int)(v).size())
#define print(...) print_(__VA_ARGS__);
#define FIND(a, x) ((find(a.begin(),a.end(),(x))!=a.end())?1:0)
#define cmin(x,...) x=min({(x), __VA_ARGS__})
#define cmax(x,...) x=max({(x), __VA_ARGS__})
#define INTMAX (int)(9223372036854775807)
#define INF (int)(1152921504606846976)
#define NaN (int)(0x8b88e1d0595d51d1)
#define double long double
#define int long long
#define uint unsigned long long
#define MAXN 200010
#define P 1000000007
namespace math {
struct matrix {
vector<vector<int>> val;
int row, col;
int modp;
matrix(int r, int c, int m = NaN) : row(r), col(c), modp(m) {
val.resize(row, vector<int>(col, 0));
}
matrix operator*(const matrix &rhs) const {
auto lhs = *this;
matrix res(lhs.row, rhs.col, modp);
rep(i, 0, lhs.row) {
rep(k, 0, lhs.col) {
rep(j, 0, rhs.col) {
res.val[i][j] += lhs.val[i][k] * rhs.val[k][j];
if (modp != NaN) res.val[i][j] %= modp;
}
}
}
return res;
}
matrix pow(const int N) {
assert(row == col);
if (N == 0) {
matrix res(row, col, modp);
rep(i, 0, row) res.val[i][i] = 1;
return res;
}
if (N == 1) return *this;
matrix block = this->pow(N >> 1);
if (N & 1) return block * block * *this;
else return block * block;
}
};
}
int32_t main() {
ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int n, m, k; cin >> n >> m >> k;
vector<vector<int>> A(n, vector<int>(n));
rep(i, 0, m) {
int u, v; cin >> u >> v;
++A[u-1][v-1];
}
math::matrix M(n, n, P); M.val = A;
M = M.pow(k);
cout << M.val[0][n-1] << endl;
return 0;
}
Bahisbey103 is where it’s at right now! Signed up last week and already seeing some decent returns. Hopefully, the luck keeps rollin’! Sign up and give it a shot: bahisbey103
Joined b52cc yesterday and man can’t stop playing. Website is awesome and graphics are amazing. Go play now: b52cc
Okay, j168bet. Looks quite similar to j168. Maybe same company? Anyway, decent selection of games, promotions also not bad. Gotta read the terms and conditions properly though! Worth a shot at j168bet.
Car88slot? Gotta love those slot car vibes! I spent a bit of time spinning the reels there last week. Not a huge selection, but what they have is solid. Could be your next favorite. Check it out here: car88slot
Gate777casino… Get ready for takeoff! Feels like a bit of a trip with the selection of games. Solid overall from what I saw, not too shabby. Ready to fly? Click here: gate777casino
Mex365bet… Sounds like a contender. Not bad at all, I had a quick play and can’t complain. Plenty of options so give it a try sometime. Jump in by clicking here: mex365bet
Downloading new games on the go has never been this convenient. The installer is clean and updates arrive automatically so I never miss new features. I recommend this to friends who want quick access to top rated entertainment apps 99oxgameapk
Loading up on my phone has never been this effortless before. I appreciate how the mobile interface runs so smoothly without draining my battery or lagging during live matches. It feels like they really built this app with everyday commuters in mind. Just tap the login and I am ready to place my bets while grabbing morning coffee. Highly recommend this to anyone who wants a reliable gaming partner on the go. okwinapklogin
Finding a safe and reliable gaming spot in the Philippines has always been a struggle until I stumbled upon this page. The registration process takes barely a minute and I felt instantly welcome by the active community. My payouts arrive quickly and I never have to jump through hoops just to claim my rewards. It truly feels like a crown fitting for loyal players who stick around. phjilicrown