#include #include #include using namespace std; typedef pair pii; int N; long long L, d[20][20]; int ITERS = 0; const int MAX_ITERS = 150000000; pii drange[15][15][1<<15]; pii DRange(int at, int left, int end) { if (!left) return pii(d[at][end], d[at][end]); pii &res = drange[end][at][left]; if (res.first == 0) { res.first = 1<<30; res.second = 0; for (int i = 1; i < N; ++i) if ((left & (1< R.second) return false; if (T == R.first || T == R.second) return true; if (++ITERS >= MAX_ITERS) return false; for (int i = 1; i < N; ++i) if ((left & (1<