begin%try1%

Stone(id,x,y) :- id=1, x=0, y=19.
Stone(id,x,y) :- id=2, x=6, y=8.
Stone(id,x,y) :- id=3, x=15, y=12.
Stone(id,x,y) :- id=4, x=25, y=5.
Bank(id,x,y) :- id=100, -x-y>=0.
Bank(id,x,y) :- id=200, x+y>=41.
D(x,y,z) :- x-y=0, z=0.
D(x,y,z) :- D(x1,y,z1), x-x1=1, z-z1=1.
M(x,y,z) :- x=0, y=0, z=0.
M(x,y,z) :- M(x1,y,z1), D(z,z1,y), x-x1>=1, x1-x>=-1.
M(x,y,z) :- M(x,y1,z1), D(z,z1,x), y-y1>=1, y1-y>=-1.
AD(x,y,z) :- D(x,y,z), x-y>=0.
AD(x,y,z) :- D(y,x,z), y-x>=0.
Step(x,y) :- x=0, y=0.
Step(x,y) :- Step(x1,y1), Stone(id,x,y), AD(x,x1,dx), AD(y,y1,dy), M(dx,dx,dx2), M(dy,dy,dy2), dx2+dy2<=100, dx<=10, dy<=10.
Reach(x,y) :- Bank(id,x,y), id=200, Step(x1,y1), AD(x,x1,dx), AD(y,y1,dy), M(dx,dx,dx2), M(dy,dy,dy2), dx2+dy2<=100, dx<=10, dy<=10.

end%try1%
