#include #if 1 && defined(LOCAL) #include #else #define debug(...) #define line #endif using namespace std; typedef long long ll; typedef long double ld; #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() templatebool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(bA; vector bfs(int s){ vector dist(N, -1); //すべての頂点を未訪問に初期化 queue que; //初期条件 (頂点sを初期頂点とする) dist[s] = 0; que.push(s); //sを探索済み頂点に //BFS開始 while(!que.empty()) { int v = que.front(); que.pop(); //頂点vからたどれる頂点を全て調べる //すでに発見済みの頂点は探索しない if(v+A[v]>=0&&v+A[v]=0&&v-A[v]>N; A.resize(N); for(int i=1;i<=N;i++){ for(int j=0;j<20;j++){ if(i&(1<