set display mode 640,480,32
 
randomize timer()
 
`//
`// Passable tiles range from 1 to 5
`// Obstacle tiles range from 6 and up
`//
`//
`//
`//
 
#CONSTANT GRASS = 1        : `image number for grass
#CONSTANT BRICK = 3        : `image number for bricks
#CONSTANT BUSHES = 7       : `image number for bricks
#CONSTANT WATTER = 6       : `image number for water (water is a reserved word, hence watter)
#CONSTANT TILE_SIZE = 32   : `size of 1 tile (tile is assumed and should to be square)
Global MAP_WIDTH = 64   : `number of tiles in a map across
Global MAP_HEIGHT = 64  : `number of tiles in a map down
GLOBAL SCREEN_HEIGHT : SCREEN_HEIGHT = screen height() / TILE_SIZE   : `screen height in number of tiles
GLOBAL SCREEN_WIDTH : SCREEN_WIDTH = screen width() / TILE_SIZE      : `screen width in number of tiles
GLOBAL SCREEN_WIDTH_BOUNDARY : SCREEN_WIDTH_BOUNDARY = (MAP_WIDTH * TILE_SIZE) -  (SCREEN_WIDTH-1)*TILE_SIZE
GLOBAL SCREEN_HEIGHT_BOUNDARY : SCREEN_HEIGHT_BOUNDARY = (MAP_HEIGHT * TILE_SIZE) -  (SCREEN_HEIGHT-1)*TILE_SIZE
GLOBAL SCROLL_BOUNDARY : SCROLL_BOUNDARY = TILE_SIZE*4    : `How far from edge of screen should map start scrolling
GLOBAL STAT_BOX_HEIGHT = 64
 
type character
   x as float
   y as float
   damage as integer
   armor as integer
   str as float
   dex as float
   hp as float
   gold as integer
   level as integer
   expr as integer
   name as string
endtype
 
 
player as character
 
restore player1
read player.damage
read player.armor
read player.str
read player.dex
read player.hp
read player.gold
read player.level
read player.expr
read player.name
player.x = 320
player.y = 240
 
 
REM create some random images
getGrassImage(GRASS)
getBushesImage(BUSHES)
getWaterImage(WATTER)
getBrickImage(BRICK)
 
 
restore map1
buildMap()
 
restore Character_Pic
getCharacterImage(9)
 
 
 
mx = TILE_SIZE
my = TILE_SIZE
 
 
sync on
backdrop on
 
 
DO
 
 
   gosub _CONTROLS
 
   drawMap(mx,my)
 
   positionPlayer(player.x, player.y)
 
   printStats(player)
   set cursor 0,0
   print "FPS: ",screen fps()
 
sync
LOOP
 
 
 
`=================================================
`Player controls
`Also keeps coordinates within boundaries
`=================================================
_CONTROLS:
   speed = 2
   if upkey() then dec player.y, speed
   if downkey() then inc player.y, speed
   if rightkey() then inc player.x, speed
   if leftkey() then dec player.x, speed
 
   gosub _BOUNDARY_CHECKS
 
RETURN
 
 
`=================================================
`Checks player and screen boundaries along with
`map scrolling
`=================================================
_BOUNDARY_CHECKS:
   sw = screen width()
   sh = screen height()
 
   if player.x < SCROLL_BOUNDARY
      if mx > TILE_SIZE
         player.x = SCROLL_BOUNDARY
         dec mx, speed
      else
         mx = TILE_SIZE
         if player.x < 0 then player.x = 0
      endif
   endif
 
   if player.x > sw - SCROLL_BOUNDARY
      if mx < SCREEN_WIDTH_BOUNDARY
         player.x = sw - SCROLL_BOUNDARY
         inc mx, speed
      else
         mx = mx - (mx-SCREEN_WIDTH_BOUNDARY)
         rem 15 is the character's image size
         if player.x > sw-15 then player.x = sw-15
      endif
   endif
 
   if player.y < SCROLL_BOUNDARY
      if my > TILE_SIZE
         player.y = SCROLL_BOUNDARY
         dec my, speed
      else
         my = TILE_SIZE
         if player.y < 0 then player.y = 0
      endif
   endif
 
   if player.y > (sh - STAT_BOX_HEIGHT) - SCROLL_BOUNDARY
      if my < SCREEN_HEIGHT_BOUNDARY
         player.y = (sh - STAT_BOX_HEIGHT) - SCROLL_BOUNDARY
         inc my, speed
      else
         my = SCREEN_HEIGHT_BOUNDARY
         if player.y > (sh - STAT_BOX_HEIGHT)-15 then player.y = (sh - STAT_BOX_HEIGHT)-15
      endif
   endif
RETURN
 
 
`=================================================
`Draws the map at position (mapDrawX,mapDrawY
`starting in the top left corner of the screen(0,0)
`Parameters are map coordinates. So a map with 64
`tiles each 32pixels each, the map would range from
`1 to 2048
`=================================================
function drawMap(mapDrawX as integer, mapDrawY as integer)
 
   mapx = mapDrawX / TILE_SIZE
   mapy = mapDrawY / TILE_SIZE
   xoff = mapDrawX AND (TILE_SIZE-1)
   yoff = mapDrawY AND (TILE_SIZE-1)
   xoff = mapDrawX - mapx*TILE_SIZE
   yoff = mapDrawY - mapy*TILE_SIZE
 
 
   sprt = 0
   for x = 0 to SCREEN_WIDTH
      for y=0 to SCREEN_HEIGHT
         inc sprt, 1
         img = getMapTile(mapy+y, mapx+x)
         `if img > 0 then sprite sprt, x*32 - xoff, y*32 - yoff, img
         if img > 0 then paste image img,x*TILE_SIZE - xoff, y*TILE_SIZE - yoff
      next y
   next x
endfunction
 
 
`=================================================
`
`=================================================
function positionPlayer(x as float, y as float)
   paste image 9, x, y
endfunction
 
`=================================================
`Returns value from map array, making sure the call
`is within the boundaries of the array
`=================================================
function getMapTile(y as integer, x as integer)
   if x >= 0 and x <= MAP_WIDTH and y >= 0 and y <= MAP_HEIGHT
      img = map(y,x)
      exitfunction img
   endif
endfunction 0
 
 
`=================================================
`               !!!!!WARNING!!!!!!
`map data must be restored BEFORE you call this
`function so it knows which map to load
`=================================================
function buildMap()
   REM create our map
   restore map1
   read MAP_WIDTH
   read MAP_HEIGHT
   SCREEN_WIDTH_BOUNDARY = (MAP_WIDTH * TILE_SIZE) -  (SCREEN_WIDTH-1)*TILE_SIZE
   SCREEN_HEIGHT_BOUNDARY = ((MAP_HEIGHT * TILE_SIZE) -  (SCREEN_HEIGHT-1)*TILE_SIZE) + 64
   dim map(MAP_HEIGHT, MAP_WIDTH)
   for y=1 to MAP_HEIGHT
      for x=1 to MAP_WIDTH
         read map(y,x)
      next x
   next y
endfunction
 
 
 
`=================================================
`
`=================================================
function printStats(c as character)
   SH = screen height()
   ink 0,0
   box 0,SH-STAT_BOX_HEIGHT,screen width(),SH
   ink rgb(255,0,0), 0
   center text 320,SH - 64,c.name +" ("+str$(c.level)+")"
   text 0, SH - 64, "Strength: "+str$(c.str)
   text 0, SH - 52, "Dexterity: "+str$(c.dex)
   text 0, SH - 40, "Armor: "+str$(c.armor)
   text 0, SH - 28, "Damage: "+str$(c.damage)
   text 0, SH - 16, "Hitpoints: "+str$(c.hp)
 
   text 190, SH - 28, "Experience: "+str$(c.expr)
   text 190, SH - 16, "Gold: "+str$(c.damage)
endfunction
 
 
`=================================================
`Randomly creates a grass image
`=================================================
function getGrassImage(img as integer)
   cls
   for x = 0 to 32
      for y=0 to 32
         r = rnd(128)
         dot x,y,rgb(r,rnd(128)+128,r)
      next y
   next x
   blur bitmap 0, 2
   get image img, 0,0,32,32
endfunction
 
`=================================================
`Randomly creates a bushes image
`=================================================
function getBushesImage(img as integer)
   for r = 7 to 1 step -1
      g = 255 - r*18
      ink rgb(0,g,0),0
      circle 0,0,r
      circle 0,16,r
      circle 0,32,r
      circle 16,0,r
      circle 16,16,r
      circle 16,32,r
      circle 32,0,r
      circle 32,16,r
      circle 32,32,r
   next r
   get image img, 0,0,32,32
endfunction
 
`=================================================
`Randomly creates a water image
`=================================================
function getWaterImage(img as integer)
   cls
   for x = 0 to 32
      for y=0 to 32
         r = rnd(64)
         g = rnd(128)
         dot x,y,rgb(r,g,rnd(128)+128)
      next y
   next x
   blur bitmap 0, 3
   get image img, 0,0,32,32
endfunction
 
`=================================================
`Randomly creates a brick image
`=================================================
function getBrickImage(img as integer)
   cls
   for x = 0 to 32
      for y=0 to 32
         g = rnd(128)+64
         dot x,y,rgb(g,g,g)
      next y
   next x
   ink 0,0
   line 0,31,32,31
   line 0,21,32,21
   line 0,10,32,10
   line 10,0,10,10
   line 21,0,21,10
   line 10,21,10,32
   line 21,21,21,32
   line 16,10,16,21
   get image img, 0,0,32,32
endfunction
 
 
`=================================================
`loads the character and forms a picture from data
`=================================================
function getCharacterImage(img as integer)
   cls
   color as dword
   read cx
   read cy
   for y = 1 to cy
      for x = 1 to cx
         read z
         color = rgb(255,255,255) * z
         dot x,y,color
      next y
   next x
   get image img, 1,1,15,15
endfunction
 
 
 
 
player1:
DATA 2, 0, 9, 6, 40, 80, 1, 0, "Gwark"
 
 
Character_Pic:
data 15,15
data  0,1,0,0,0,0,0,1,1,0,0,0,0,0,0
data  0,1,0,0,0,0,1,1,1,1,0,0,0,0,0
data  0,0,1,0,0,0,1,1,1,1,0,0,0,0,0
data  0,0,1,0,0,0,0,1,1,0,0,0,0,0,0
data  0,0,0,1,0,0,1,1,1,1,1,0,0,0,0
data  0,0,0,1,0,1,1,1,0,0,1,1,1,0,0
data  0,0,0,0,1,1,0,1,0,1,1,1,1,0,0
data  0,0,0,0,1,0,1,1,1,0,1,1,0,0,0
data  0,0,0,0,0,0,1,1,1,0,1,1,0,0,0
data  0,0,0,0,0,0,1,1,1,1,1,0,0,0,0
data  0,0,0,0,0,0,1,1,0,1,1,0,0,0,0
data  0,0,0,0,0,0,1,1,0,1,1,0,0,0,0
data  0,0,0,0,0,0,1,1,0,1,1,0,0,0,0
data  0,0,0,0,0,1,1,1,0,1,1,1,0,0,0
data  0,0,0,0,0,1,1,1,0,1,1,1,0,0,0
 
 
map1:
DATA 64,64
DATA 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,7,7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,1,1,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,1,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,7,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,1,1,1,1,1,1,1,7,7,7,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,1,1,1,1,1,1,1,1,7,7,7,7,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,1,1,1,1,1,1,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
DATA 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3