#include #include #include #include #include using namespace std; long long n,p,k,h[205][205],c[205][205],a,b,moves[100005],mx; vector ps[205][205],pt[205][205]; string s,ans; void PushCakes(long long cn) { long long i,d[20],uk=0; char ch; while(cn!=0) { uk++; d[uk]=cn%10; cn=cn/10; } for(i=uk;i>=1;i--) { ch=d[i]+'0'; s.push_back(ch); } } bool Valid(long long sz) { long long x,y,i,t=0,cakes=0,csz,j,total=0; x=a; y=b; s=""; for(i=1;i<=sz;i++) { if(moves[i]==1) { t=t+(abs(h[x][y]-h[x-1][y])+cakes)*(abs(h[x][y]-h[x-1][y])+cakes)+1; x--; s.push_back('U'); } if(moves[i]==2) { t=t+(abs(h[x][y]-h[x][y+1])+cakes)*(abs(h[x][y]-h[x][y+1])+cakes)+1; y++; s.push_back('R'); } if(moves[i]==3) { t=t+(abs(h[x][y]-h[x+1][y])+cakes)*(abs(h[x][y]-h[x+1][y])+cakes)+1; x++; s.push_back('D'); } if(moves[i]==4) { t=t+(abs(h[x][y]-h[x][y-1])+cakes)*(abs(h[x][y]-h[x][y-1])+cakes)+1; y--; s.push_back('L'); } if(c[x][y]==1) { cakes=cakes+10; s.push_back('1'); s.push_back('0'); } csz=ps[x][y].size(); for(j=0;j=ps[x][y][j] && t<=ps[x][y][j]+pt[x][y][j]) { total=total+((ps[x][y][j]+pt[x][y][j]-t)*(cakes+1)); s.push_back('+'); PushCakes(cakes); t=ps[x][y][j]+pt[x][y][j]; cakes=0; } if((x<1) || (x>n)) return false; if((y<1) || (y>n)) return false; } if(total>mx) { mx=total; ans=s; } return true; } int main() { long long x,y,i,j,cnt=0,st,ft,sz; freopen("party.in","r",stdin); freopen("party.out","w",stdout); scanf("%lld%lld%lld",&n,&p,&k); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%lld",&h[i][j]); scanf("%lld%lld",&a,&b); for(i=1;i<=p;i++) { scanf("%lld%lld",&x,&y); scanf("%lld%lld",&st,&ft); ps[x][y].push_back(st); pt[x][y].push_back(ft); } for(i=1;i<=k;i++) { scanf("%lld%lld",&x,&y); c[x][y]=1; } srand(time(NULL)); mx=-1; while(cnt<5000) { sz=rand()%1000+1; for(i=1;i<=sz;i++) moves[i]=rand()%4+1; if(Valid(sz)) cnt++; } cout<