#include // cout, endl, cin #include // string, to_string, stoi #include // vector #include // min, max, swap, sort, reverse, lower_bound, upper_bound #include // pair, make_pair #include // tuple, make_tuple #include // int64_t, int*_t #include // printf #include // map #include // queue, priority_queue #include // set #include // stack #include // deque #include // unordered_map #include // unordered_set #include // bitset #include // isupper, islower, isdigit, toupper, tolower #include //fixed,setprecision #include //INT_MAX #include //M_PI #include #include // 正規表現 #include #include #include #include #include #include #include #include #include #include //複素数 //#include using namespace std; #define ll long long #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) template < typename T > std::string to_string( const T& n ){std::ostringstream stm ;stm << n ;return stm.str() ;} int N,M; vector A; vector>>> bomb; vector> ans; vector>tatemono; vector>bakudanya; int max_cnt_num=1; int max_cnt=0; int min_cost_num=1; int min_cost=1<<30; void input(){ cin>>N>>M; A.resize(N); for(int i=0; i>A[i]; } bomb.resize(M); for(int i=0; i>C>>L; bomb[i].first=C;//first:Cost if(min_cost>C){ min_cost=C; min_cost_num=i+1; } if(max_cnt>a>>b; bomb[i].second.push_back(make_pair(a,b));//second.first:壊せるマスのiからのx方向距離 second.second: y方向距離 } } } void bakuha(int i,int j,int num){ num--; //cerr<=N||y<0||y>=N)continue; //cerr<<"a"; A[x][y]='.'; } } void mukau(int sx,int sy,int gx,int gy){ if(sx ido(int nowx,int nowy,int bakuhax,int bakuhay,int num){ num--; int kyori=2500; int gx=10000; int gy=10000; rep(ni,bomb[num].second.size()){ int x=bakuhax-bomb[num].second[ni].first; int y=bakuhay-bomb[num].second[ni].second; //cerr<=N||y<0||y>=N)continue; if(abs(x-nowx)+abs(y-nowy)p=ido(x,y,nx,ny,kind); int ni=p.first; int nj=p.second; //if(nx<0||nx>=N||ny<0||ny>=N)continue; mukau(x,y,ni,nj); x=ni;y=nj; cnt++; ans.push_back(make_pair(3,to_string(kind))); //cerr< i:ans){ if(i.first==2){ rep(j,cnt)cout<