#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define pb push_back #define mp make_pair #define pii pair #define vi vector #define all(a) (a).begin(),(a).end() #define F first #define S second #define sz(x) (int)x.size() #define hell 1000000007 #define endl '\n' #define rep(i,a,b) for(int i=a;imoves={{0,1},{0,-1},{1,0},{-1,0}}; vectorextra[25][25]; void solve(){ int n,m,k; cin>>n>>m>>k; vectorx(n); rep(i,0,n)cin>>x[i]; queueq; rep(i,0,n)rep(j,0,m)if(x[i][j]=='A')q.push(mp(i,j)); rep(i,0,k){ int a,b,c,d; cin>>a>>b>>c>>d; extra[a][b].pb(mp(c,d)); extra[c][d].pb(mp(a,b)); } while(!q.empty()){ auto cur=q.front(); q.pop(); if(vis[cur.F][cur.S])continue; vis[cur.F][cur.S]=1; for(auto move:moves){ if(cur.F+move.F=0 and cur.S+move.S=0){ if(x[cur.F+move.F][cur.S+move.S]=='%'){ cout<<1; return; } if(x[cur.F+move.F][cur.S+move.S]=='O'){ q.push(mp(cur.F+move.F,cur.S+move.S)); } } } for(auto j:extra[cur.F][cur.S]){ if(x[j.F][j.S]=='%'){ cout<<1; return; } if(x[j.F][j.S]=='O'){ q.push(j); } } } cout<<0; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t=1; // cin>>t; while(t--){ solve(); } return 0; }