#include using namespace std; #define rep(i,a,b) for(ll i=a;i=0;i--) #define ll long long #define ld long double #define llu long long unsigned #define vll std::vector #define mll std::map #define pll std::pair #define mpll std::map, ll> #define sll std::set #define ff first #define ss second #define msll std::multiset #define all(c) c.begin(), c.end() #define allr(c) c.rbegin(), c.rend() #define srt(x) sort(all(x)) #define rsrt(x) sort(allr(x)) #define mp make_pair #define mt make_tuple #define eb emplace_back #define pb push_back #define s(yy) ll yy;cin>>yy #define mod 1e9+7 #define maxlong 1e18+5 /* ###################################################### # # # @author # # Parth Lathiya # # https://www.cse.iitb.ac.in/~parthiitb/ # # # ###################################################### */ char a[21][21]; ll vis[21][21]; map mm; ll n,m,k; ld dfs(ll i,ll j) { ld cnt=0; if(i-1>=0 && a[i-1][j]!='#') cnt++; if(j-1>=0 && a[i][j-1]!='#') cnt++; if(i+1<=n && a[i+1][j]!='#') cnt++; if(j+1<=m && a[i][j+1]!='#') cnt++; // cout<=0 && !vis[i-1][j] && (a[i-1][j]=='O' || a[i-1][j]=='A')) ans+=(1.0/cnt)*dfs(i-1,j); if(i+1<=n && !vis[i+1][j] && (a[i+1][j]=='O' || a[i+1][j]=='A')) ans+=(1.0/cnt)*dfs(i+1,j); if(j-1>=0 && !vis[i][j-1] && (a[i][j-1]=='O' || a[i][j-1]=='A')) ans+=(1.0/cnt)*dfs(i,j-1); if(j+1<=m && !vis[i][j+1] && (a[i][j+1]=='O' || a[i][j+1]=='A') ) ans+=(1.0/cnt)*dfs(i,j+1); return ans; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>m>>k; re(i,n) // re(j,m) cin>>a[i]; ll aa,b,c,d; re(i,k){ cin>>aa>>b>>c>>d; mm[{aa,b}]={c,d}; mm[{c,d}]={aa,b}; } ld ans=0.0; re(i,n) re(j,m) if(a[i][j]=='%'){ans+=dfs(i,j);} cout<