#include "testlib.h" #include using namespace std; using ll = long long; using pll = pair; #define all(a) begin(a), end(a) #define space inf.readChar(' ') #define endl inf.readChar('\n') #define eof inf.readEof() tuple read(ll min, ll max){ ll a = inf.readLong(min, max); endl; return tuple{a}; } template auto read(ll min, ll max, T... t){ ll a = inf.readLong(min, max); space; return tuple_cat(tuple{a}, read(t...)); } string read(string p){ return inf.readLine(p); } vector reads(ll N, ll min, ll max){ auto a = inf.readLongs(N, min, max); endl; return a; } vector read_lines(ll N, string p){ return inf.readLines(N, p); } template auto read_lines(ll N, T... t){ vector a; a.reserve(N); while(N--) a.push_back(read(t...)); return a; } vector> read_matrix(ll H, ll W, ll min, ll max){ vector> ans(H); for(auto& v : ans) v = reads(W, min, max); return ans; } const long long MIN_H = 2; const long long MAX_H = 2000; const long long MIN_W = 2; const long long MAX_W = 2000; int main() { registerValidation(); long long H = inf.readLong(MIN_H, MAX_H); inf.readSpace(); long long W = inf.readLong(MIN_W, MAX_W); inf.readEoln(); for (int i = 0; i < H; i++) { string s = inf.readString(); assert(s.size() == W); for (int j = 0; j < W; j++) { if (i == 0 && j == 0) { assert(s[j] == 'S'); } else if (i == H - 1 && j == W - 1) { assert(s[j] == 'G'); } else { assert(s[j] == '.' || s[j] == '#'); } } } inf.readEof(); }