1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-06 03:30:23 +00:00
QB64-PE/tests/qbasic_testcases/thebob/chess/chess.bas
Matthew Kilgore 9ee89d6ff4 Add QBasic tests
These tests use a variety of sample code (with some of the larger files
removed, so they are not complete!) and verifies that they all compile
successfully.
2022-04-28 23:00:07 -04:00

463 lines
18 KiB
QBasic

CHDIR ".\programs\samples\thebob\chess"
'CHESSGFX.BAS
DEFINT A-Z
DIM Box(1 TO 26000)
SCREEN 12
GOSUB SetPALETTE
GOSUB DrawPIX
GOSUB DrawBOARD
DEF SEG = VARSEG(Box(1))
BSAVE "chesspcs.bsv", VARPTR(Box(1)), 39000
DEF SEG
'position black pieces
PUT (31, 31), Box(7501), PSET
PUT (81, 31), Box(15751), PSET
PUT (131, 31), Box(6001), PSET
PUT (181, 31), Box(14251), PSET
PUT (231, 31), Box(4501), PSET
PUT (281, 31), Box(15001), PSET
PUT (331, 31), Box(6751), PSET
PUT (381, 31), Box(16501), PSET
FOR x = 31 TO 331 STEP 100
PUT (x, 81), Box(17251), PSET
PUT (x + 50, 81), Box(8251), PSET
NEXT x
'position white pieces
PUT (31, 381), Box(12001), PSET
PUT (81, 381), Box(2251), PSET
PUT (131, 381), Box(10501), PSET
PUT (181, 381), Box(751), PSET
PUT (231, 381), Box(9001), PSET
PUT (281, 381), Box(1501), PSET
PUT (331, 381), Box(11251), PSET
PUT (381, 381), Box(3001), PSET
FOR x = 31 TO 331 STEP 100
PUT (x, 331), Box(3751), PSET
PUT (x + 50, 331), Box(12751), PSET
NEXT x
GOSUB SaveSCREEN
CLS
LINE (100, 100)-(539, 349), 3, B
COLOR 14
LOCATE 13, 26
PRINT "The chess graphics files have"
LOCATE 14, 28
PRINT "been successfully created."
LOCATE 16, 28
PRINT "You may now run CHESSUBS"
a$ = INPUT$(1)
END
SetPALETTE:
RESTORE PaletteDATA
OUT &H3C8, 0
FOR n = 1 TO 48
READ Colr
OUT &H3C9, Colr
NEXT n
RETURN
DrawPIX:
RESTORE PictureDATA
MaxWIDTH = 465
MaxDEPTH = 46
x = 0: y = 0
DO
READ Count, Colr
FOR Reps = 1 TO Count
PSET (x, y), Colr
x = x + 1
IF x > MaxWIDTH THEN
x = 0
y = y + 1
END IF
NEXT Reps
LOOP UNTIL y > MaxDEPTH
RETURN
SaveSCREEN:
FileNUM = 0
DEF SEG = VARSEG(Box(1))
FOR y = 0 TO 320 STEP 160
GET (0, y)-(639, y + 159), Box
FileNUM = FileNUM + 1
FileNAME$ = "ChessBD" + LTRIM$(STR$(FileNUM)) + ".BSV"
BSAVE FileNAME$, VARPTR(Box(1)), 52000
NEXT y
DEF SEG
RETURN
DrawBOARD:
LINE (0, 47)-(46, 93), 7, BF
FOR x = 0 TO 46
FOR y = 0 TO 46
SELECT CASE POINT(x, y)
CASE 3: PSET (x, y + 47), 5
CASE 1: PSET (x, y + 47), 6
END SELECT
NEXT y
NEXT x
GET (0, 0)-(46, 46), Box(1000)
PUT (0, 0), Box(1000)
GET (0, 47)-(46, 93), Box(2000)
PUT (0, 47), Box(2000)
xx = 100: y = 100
LINE (100, 100)-(300, 450), 0, BF
FOR x = 55 TO 450 STEP 35
GET (x, 0)-(x + 30, 47), Box
PUT (xx, y), Box
PUT (xx - 50, y), Box(2000)
FOR xxx = xx TO xx + 35
FOR yy = y TO y + 48
IF POINT(xxx, yy) <> 0 THEN
PSET (xxx - 42, yy), POINT(xxx, yy)
PSET (xxx, yy), 0
END IF
NEXT yy
NEXT xxx
y = y + 50
IF y = 400 THEN xx = xx + 100: y = 100
NEXT x
FOR x = 55 TO 450 STEP 35
GET (x, 0)-(x + 30, 47), Box
PUT (x, 0), Box
PUT (xx, y), Box
PUT (xx - 50, y), Box(1000)
FOR xxx = xx TO xx + 35
FOR yy = y TO y + 48
IF POINT(xxx, yy) <> 0 THEN
PSET (xxx - 42, yy), POINT(xxx, yy)
PSET (xxx, yy), 0
END IF
NEXT yy
NEXT xxx
y = y + 50
IF y = 400 THEN xx = xx + 100: y = 100
NEXT x
PUT (0, 0), Box(1000)
PUT (0, 47), Box(2000)
Index = 1
FOR x = 50 TO 350 STEP 100
FOR y = 100 TO 350 STEP 50
GET (x, y)-(x + 46, y + 46), Box(Index)
PUT (x, y), Box(Index)
Index = Index + 750
NEXT y
NEXT x
GET (0, 0)-(46, 46), Box(18001)
PUT (0, 0), Box(18001)
GET (0, 47)-(46, 93), Box(18751)
PUT (0, 47), Box(18751)
LINE (16, 16)-(444, 444), 1, BF
LINE (15, 15)-(445, 445), 8, B
LINE (15, 15)-(445, 15), 3
LINE (15, 15)-(15, 445), 3
LINE (25, 25)-(435, 435), 2, BF
FOR Reps = 1 TO 1600
x = FIX(RND * 11) + 14
y = FIX(RND * 430) + 14
IF FIX(RND * 2) = 0 THEN Colr = 3 ELSE Colr = 8
IF POINT(x, y) = 1 THEN
PSET (x, y), Colr
PSET (x + 420, y), Colr
END IF
x = FIX(RND * 430) + 14
y = FIX(RND * 11) + 14
IF FIX(RND * 2) = 0 THEN Colr = 3 ELSE Colr = 8
IF POINT(y, x) = 1 THEN
PSET (x, y), Colr
PSET (x, y + 420), Colr
END IF
NEXT Reps
LINE (25, 25)-(435, 435), 7, BF
LINE (29, 29)-(430, 430), 13, B
LINE (28, 28)-(431, 431), 14, B
LINE (29, 430)-(430, 430), 8
LINE (431, 29)-(431, 430), 8
LINE (25, 25)-(435, 435), 8, B
LINE (435, 26)-(435, 435), 3
LINE (25, 435)-(435, 435), 3
FOR x = 30 TO 380 STEP 50
n = n + 1
FOR y = 30 TO 380 STEP 50
n = n + 1
IF n MOD 2 THEN PUT (x + 1, y + 1), Box(18751), PSET ELSE PUT (x + 1, y + 1), Box(18001), PSET
LINE (x, y)-(x + 49, y + 49), 14, B
LINE (x, y)-(x + 48, y + 48), 13, B
NEXT y
NEXT x
LINE (5, 5)-(634, 474), 1, B
LINE (8, 8)-(631, 471), 1, B
RETURN
PaletteDATA:
DATA 12,0,10, 12,14,12, 15,17,15, 16,20,16
DATA 63,0,0, 63,60,50, 58,55,45, 53,50,40
DATA 0,0,0, 42,42,48, 50,50,55, 40,40,63
DATA 15,15,34, 58,37,15, 60,52,37, 63,63,63
PictureDATA:
DATA 4,3,2,2,11,3,6,2,1,3,4,2,4,3,8,1,1,2,1,3,3,1,2,2,20,0
DATA 7,8,392,0,18,3,4,2,1,1,1,2,3,1,1,2,4,3,5,1,3,2,5,1
DATA 2,2,20,0,2,8,3,15,2,8,204,0,1,15,3,8,184,0,8,3,1,2
DATA 9,3,4,2,1,1,1,2,2,1,2,2,1,3,1,2,2,3,1,2,8,1,1,3,3,1
DATA 2,2,18,0,4,8,3,15,4,8,202,0,1,11,3,8,184,0,2,2,6,3
DATA 1,2,5,3,8,2,2,1,10,2,5,1,1,2,1,3,1,2,3,1,2,2,18,0,2,8
DATA 7,15,2,8,200,0,1,15,7,8,182,0,3,2,5,3,1,2,5,3,7,2,1,3
DATA 2,1,4,2,5,1,2,2,1,1,1,2,2,1,5,2,1,1,1,2,1,1,18,0,2,8
DATA 7,15,2,8,200,0,1,11,7,8,182,0,3,2,5,3,1,2,6,3,3,2,3,3
DATA 2,2,1,1,1,2,3,3,5,1,2,2,1,1,1,2,2,1,3,2,1,3,2,2,2,1
DATA 18,0,4,8,3,15,4,8,28,0,3,8,171,0,1,11,3,8,184,0,1,1
DATA 2,2,13,3,1,2,1,1,2,2,3,3,1,2,1,1,1,2,2,3,3,1,1,2,1,1
DATA 2,2,1,1,3,2,2,3,1,1,2,3,3,2,20,0,2,8,3,15,2,8,28,0
DATA 2,8,2,15,1,10,2,8,169,0,1,11,3,8,32,0,1,15,2,8,149,0
DATA 3,1,1,2,1,1,2,2,7,3,2,2,8,3,1,2,3,3,1,2,1,3,1,2,1,3
DATA 1,2,1,1,2,2,1,1,5,2,3,1,2,2,14,0,7,8,3,15,2,10,7,8
DATA 17,0,6,8,2,15,3,10,6,8,163,0,1,11,5,8,30,0,1,11,4,8
DATA 148,0,1,2,5,1,1,2,14,3,1,2,10,3,2,2,1,1,1,2,1,1,3,2
DATA 1,1,1,2,1,1,4,2,13,0,2,8,17,15,2,8,15,0,1,8,17,15,1,8
DATA 157,0,2,11,2,15,3,11,7,8,2,12,1,8,18,0,2,15,3,8,2,11
DATA 3,8,2,12,2,8,2,12,1,8,142,0,3,2,3,1,1,2,8,3,1,2,1,3
DATA 1,2,1,3,2,2,2,3,1,2,8,3,2,2,1,1,1,2,1,1,4,2,6,1,12,0
DATA 2,8,2,9,3,10,1,9,1,10,11,9,1,10,2,8,13,0,1,8,3,15,1,10
DATA 1,9,1,10,2,15,1,10,1,9,1,10,2,15,1,10,1,9,1,10,3,15
DATA 1,8,23,0,3,8,129,0,19,8,16,0,1,12,3,8,1,11,4,8,1,12
DATA 4,8,1,12,3,8,1,12,24,0,1,11,2,12,114,0,3,2,2,1,2,2
DATA 2,3,2,2,3,3,6,2,3,3,1,1,2,2,4,3,6,2,1,1,3,2,1,3,5,1
DATA 1,2,13,0,2,8,1,9,3,10,1,9,1,10,10,9,1,10,2,8,14,0,2,8
DATA 1,9,1,10,3,15,1,10,1,9,3,15,2,9,3,15,1,9,1,10,2,8,21,0
DATA 2,8,3,9,2,8,127,0,19,8,16,0,19,8,24,0,3,8,114,0,7,1
DATA 1,2,8,3,1,2,6,3,1,2,1,1,2,2,5,3,1,2,2,1,9,2,3,1,14,0
DATA 2,8,1,9,3,10,1,9,1,10,8,9,1,10,2,8,16,0,2,8,1,9,3,10
DATA 1,9,1,10,8,9,1,10,2,8,21,0,2,8,5,9,2,8,56,0,4,8,2,0
DATA 7,8,2,0,4,8,52,0,17,8,18,0,17,8,24,0,1,12,4,8,113,0
DATA 4,1,3,2,1,1,1,2,1,1,4,3,3,2,6,3,1,2,1,3,1,2,6,3,10,2
DATA 4,3,1,2,14,0,2,8,1,9,3,10,1,9,1,10,8,9,1,10,2,8,16,0
DATA 2,8,1,9,3,10,1,9,1,10,8,9,1,10,2,8,20,0,1,8,3,9,4,15
DATA 1,9,2,8,21,0,3,8,31,0,1,8,1,15,1,10,1,8,2,0,1,8,4,15
DATA 1,9,1,8,2,0,1,8,1,9,1,10,1,8,52,0,16,8,19,0,16,8,24,0
DATA 1,12,1,8,1,15,1,11,1,12,2,8,58,0,1,8,1,15,1,11,3,0
DATA 5,12,3,0,3,12,37,0,4,1,1,2,1,3,1,2,4,1,2,2,1,3,2,2
DATA 1,3,7,2,8,3,2,1,3,2,1,1,4,2,4,3,1,2,15,0,2,8,1,9,3,10
DATA 1,9,1,10,6,9,1,10,2,8,18,0,2,8,1,9,3,10,1,9,1,10,6,9
DATA 1,10,2,8,21,0,3,8,6,15,2,8,21,0,1,8,2,15,5,8,26,0,1,8
DATA 1,15,1,10,1,8,2,0,1,8,4,15,1,9,1,8,2,0,1,8,1,9,1,10
DATA 1,8,53,0,15,8,20,0,15,8,23,0,3,8,1,11,3,12,2,8,24,0
DATA 2,8,31,0,1,8,1,15,1,11,3,0,5,8,3,0,2,12,1,8,37,0,3,2
DATA 2,1,2,2,2,1,1,2,1,1,6,2,4,1,4,2,7,3,3,1,1,2,2,1,3,2
DATA 5,3,1,2,15,0,2,8,1,9,3,10,1,9,1,10,6,9,1,10,2,8,18,0
DATA 2,8,1,9,3,10,1,9,1,10,6,9,1,10,2,8,21,0,1,8,1,9,2,8
DATA 5,15,1,10,2,8,19,0,1,8,1,10,1,9,1,15,1,10,3,15,4,8
DATA 23,0,1,8,1,15,1,10,1,8,2,0,1,8,4,15,1,9,1,8,2,0,1,8
DATA 1,9,1,10,1,8,54,0,13,8,22,0,13,8,25,0,3,8,2,12,3,8
DATA 23,0,1,8,1,15,5,8,27,0,1,8,1,15,1,11,3,0,5,8,3,0,2,12
DATA 1,8,37,0,2,2,1,3,1,1,4,2,1,1,4,2,8,1,3,2,2,3,1,2,5,3
DATA 2,1,2,2,1,1,4,2,5,3,1,2,16,0,2,8,1,9,3,10,1,9,1,10
DATA 4,9,1,10,2,8,20,0,2,8,1,9,3,10,1,9,1,10,4,9,1,10,2,8
DATA 21,0,1,8,3,9,2,8,4,15,1,10,2,8,19,0,1,8,1,15,1,9,2,10
DATA 6,15,3,8,21,0,1,8,1,15,1,10,4,8,4,15,1,9,4,8,1,9,1,10
DATA 1,8,54,0,13,8,22,0,13,8,23,0,2,8,1,12,1,0,7,8,22,0
DATA 1,8,1,11,2,12,6,8,24,0,1,8,1,15,4,11,5,8,5,12,1,8,37,0
DATA 3,2,3,3,1,2,1,3,13,1,3,2,1,3,1,2,2,1,4,3,4,2,1,1,3,2
DATA 2,3,2,2,2,3,1,2,15,0,2,8,13,15,2,8,18,0,2,8,13,15,2,8
DATA 20,0,1,8,3,15,1,9,2,8,2,15,3,10,1,8,18,0,1,8,1,10,3,15
DATA 3,10,1,9,5,15,1,10,1,8,20,0,1,8,1,15,1,10,8,15,4,10
DATA 2,9,1,10,1,8,53,0,15,8,20,0,15,8,22,0,3,8,1,12,1,0
DATA 6,8,21,0,1,8,1,11,4,8,1,12,1,11,1,12,4,8,22,0,1,8,1,15
DATA 2,11,2,12,7,8,3,12,1,8,37,0,8,3,1,2,4,3,1,2,1,3,1,2
DATA 2,3,8,2,3,1,3,2,4,3,2,2,1,1,3,2,2,1,1,2,2,3,14,0,2,8
DATA 15,9,2,8,16,0,2,8,15,9,2,8,19,0,1,8,4,15,1,9,2,8,1,15
DATA 2,10,1,9,1,8,18,0,1,8,3,15,1,10,4,15,2,10,1,9,4,15
DATA 1,8,19,0,1,8,1,15,1,10,8,15,4,10,2,9,1,10,1,8,52,0
DATA 2,8,2,15,3,11,5,12,2,8,1,12,2,8,18,0,2,8,2,15,3,11
DATA 5,12,2,8,1,12,2,8,21,0,2,8,1,15,2,12,1,0,5,8,21,0,1,8
DATA 1,12,8,8,1,12,4,8,20,0,1,8,1,15,2,11,2,12,7,8,3,12
DATA 1,8,37,0,8,3,1,2,9,3,3,2,3,3,2,2,3,1,3,2,6,3,7,1,1,2
DATA 1,3,13,0,2,8,17,15,2,8,14,0,2,8,17,15,2,8,18,0,1,8
DATA 1,15,1,10,3,15,1,9,1,8,3,10,1,9,1,8,17,0,1,8,1,10,3,15
DATA 2,10,5,15,2,10,1,9,3,15,1,8,18,0,1,8,1,15,1,10,8,15
DATA 4,10,2,9,1,10,1,8,51,0,19,8,16,0,19,8,20,0,2,8,2,12
DATA 1,8,1,12,1,0,4,8,20,0,1,8,1,12,2,8,1,12,8,8,1,12,3,8
DATA 19,0,1,8,1,15,2,11,2,12,7,8,3,12,1,8,37,0,8,3,1,2,16,3
DATA 2,2,2,1,3,2,6,3,3,2,5,1,1,2,12,0,2,8,19,15,2,8,12,0
DATA 2,8,19,15,2,8,18,0,1,8,4,15,1,10,1,9,2,10,1,9,1,8,18,0
DATA 1,8,3,15,2,10,8,15,1,10,1,9,2,15,2,8,17,0,1,8,1,15
DATA 1,10,8,15,4,10,2,9,1,10,1,8,24,0,3,8,23,0,2,8,3,15
DATA 3,11,5,12,5,8,1,12,2,8,14,0,2,8,3,15,3,11,5,12,4,8
DATA 1,12,3,8,19,0,6,8,1,12,4,8,20,0,3,8,2,12,12,8,19,0
DATA 1,8,1,15,2,11,2,12,7,8,3,12,1,8,37,0,2,2,6,3,1,2,16,3
DATA 3,2,3,1,1,2,8,3,1,2,6,1,13,0,2,8,17,15,2,8,14,0,2,8
DATA 17,15,2,8,19,0,1,8,7,10,2,9,1,8,17,0,1,8,1,10,1,15
DATA 2,8,1,10,10,15,2,10,2,15,2,8,16,0,1,8,1,15,1,10,8,15
DATA 4,10,2,9,1,10,1,8,23,0,1,8,3,15,1,8,23,0,19,8,16,0
DATA 19,8,21,0,9,8,20,0,2,8,1,11,2,12,11,8,1,12,2,8,18,0
DATA 1,8,1,15,2,11,2,12,7,8,3,12,1,8,25,0,2,12,1,8,9,0,5,1
DATA 1,2,20,3,3,2,2,1,1,2,9,3,3,1,2,2,1,1,14,0,6,8,7,9,6,8
DATA 16,0,6,8,7,9,6,8,21,0,1,8,2,9,2,10,3,9,1,8,18,0,1,8
DATA 3,15,1,8,1,10,11,15,1,10,1,9,2,15,1,8,16,0,2,8,15,9
DATA 2,8,22,0,1,8,5,15,1,8,27,0,9,8,26,0,9,8,26,0,9,8,20,0
DATA 2,8,2,11,16,8,17,0,1,8,1,15,2,11,2,12,7,8,3,12,1,8
DATA 24,0,1,12,4,8,8,0,1,2,4,1,1,2,20,3,6,2,10,3,1,2,1,1
DATA 1,2,2,1,18,0,2,8,7,9,2,8,24,0,2,8,7,9,2,8,26,0,1,8
DATA 6,9,1,8,17,0,1,8,1,10,1,15,1,10,14,15,1,10,1,9,2,15
DATA 2,8,17,0,2,8,11,9,2,8,23,0,1,8,6,15,1,10,1,8,26,0,9,8
DATA 26,0,9,8,27,0,7,8,20,0,2,8,1,11,6,8,1,12,8,8,1,12,2,8
DATA 18,0,15,8,24,0,1,12,2,15,1,11,3,8,7,0,1,2,3,1,2,2,19,3
DATA 7,2,10,3,2,2,1,3,2,2,18,0,2,8,7,9,2,8,24,0,2,8,7,9
DATA 2,8,27,0,1,8,4,9,1,8,18,0,1,8,1,15,1,10,8,15,2,10,5,15
DATA 2,10,2,15,2,8,19,0,2,8,7,9,2,8,25,0,1,8,6,15,1,10,1,8
DATA 26,0,9,8,26,0,9,8,28,0,5,8,21,0,1,8,1,11,7,8,1,12,8,8
DATA 1,12,2,8,20,0,11,8,25,0,1,12,1,8,2,15,1,11,1,12,3,8
DATA 6,0,2,2,2,1,1,2,20,3,7,2,14,3,1,2,18,0,2,8,5,10,2,9
DATA 2,8,24,0,2,8,5,10,2,9,2,8,22,0,5,8,4,15,2,10,5,8,12,0
DATA 1,8,2,10,8,15,3,10,5,15,2,10,1,9,2,15,1,8,20,0,1,8
DATA 7,9,1,8,26,0,1,8,6,15,1,10,1,8,26,0,9,8,26,0,9,8,26,0
DATA 9,8,18,0,1,8,1,11,8,8,1,12,12,8,20,0,9,8,26,0,1,12
DATA 1,8,2,11,2,12,2,8,1,12,6,0,1,3,3,2,22,3,6,2,15,3,17,0
DATA 2,8,2,15,5,10,2,9,2,8,22,0,2,8,2,15,5,10,2,9,2,8,20,0
DATA 2,8,11,15,2,10,1,15,2,8,11,0,1,8,4,15,1,9,5,15,1,8
DATA 1,9,1,10,5,15,2,10,1,9,2,15,1,8,17,0,3,8,10,15,2,8
DATA 23,0,1,8,1,10,2,15,4,10,1,8,25,0,11,8,24,0,11,8,22,0
DATA 3,8,2,15,2,11,3,12,5,8,15,0,4,8,1,12,15,8,1,12,2,8
DATA 17,0,15,8,23,0,1,12,1,8,3,12,3,8,1,12,6,0,26,3,6,2
DATA 15,3,17,0,2,8,3,15,4,10,2,9,2,8,22,0,2,8,3,15,4,10
DATA 2,9,2,8,19,0,2,8,16,9,2,8,9,0,1,8,1,10,5,15,1,9,3,15
DATA 1,8,2,9,6,15,1,10,2,9,2,15,1,8,16,0,1,8,15,10,1,8,23,0
DATA 1,8,5,10,1,8,26,0,11,8,24,0,11,8,21,0,17,8,13,0,6,8
DATA 1,12,4,8,1,12,9,8,1,12,2,8,16,0,17,8,23,0,1,12,5,8
DATA 1,12,7,0,24,3,1,1,6,3,1,2,2,3,4,2,1,1,1,2,7,3,17,0
DATA 2,8,4,15,3,10,2,9,2,8,22,0,2,8,4,15,3,10,2,9,2,8,19,0
DATA 1,8,13,15,4,10,1,15,1,8,9,0,1,8,1,15,1,8,1,9,2,15,1,10
DATA 1,15,1,9,2,8,2,9,1,10,6,15,1,10,2,9,2,15,1,8,15,0,1,8
DATA 17,15,1,8,23,0,1,8,3,10,1,8,27,0,11,8,24,0,11,8,20,0
DATA 3,8,2,15,2,11,3,12,6,8,3,12,12,0,1,8,1,11,1,12,2,8
DATA 1,12,1,8,2,12,1,8,1,12,10,8,1,12,2,8,15,0,1,8,2,15
DATA 3,11,4,12,6,8,2,12,1,8,22,0,1,12,4,8,2,12,7,0,31,3
DATA 1,2,2,3,4,2,1,1,2,2,6,3,17,0,2,8,4,15,4,10,1,9,2,8
DATA 22,0,2,8,4,15,4,10,1,9,2,8,19,0,2,8,8,15,8,10,2,8,9,0
DATA 1,8,1,15,2,9,2,8,2,10,2,8,2,9,1,10,6,15,1,10,3,9,2,15
DATA 1,8,16,0,6,8,5,9,6,8,24,0,1,8,3,9,1,8,27,0,11,8,24,0
DATA 11,8,21,0,17,8,13,0,1,8,2,12,2,8,2,12,1,0,1,8,1,12
DATA 14,8,16,0,17,8,25,0,1,12,2,8,9,0,34,3,7,2,6,3,16,0
DATA 2,8,5,15,4,10,2,9,2,8,20,0,2,8,5,15,4,10,2,9,2,8,19,0
DATA 6,8,6,9,6,8,11,0,1,8,1,9,1,15,1,8,1,15,1,10,2,8,1,9
DATA 2,10,6,15,2,10,2,9,2,15,2,8,21,0,1,8,5,9,1,8,26,0,1,8
DATA 9,9,1,8,23,0,13,8,22,0,13,8,25,0,7,8,18,0,1,8,1,12
DATA 3,8,1,12,1,0,1,8,1,12,14,8,22,0,7,8,26,0,11,8,5,0,31,3
DATA 1,2,3,3,7,2,5,3,16,0,2,8,5,15,4,10,2,9,2,8,20,0,2,8
DATA 5,15,4,10,2,9,2,8,23,0,2,8,6,9,2,8,16,0,2,8,1,15,1,10
DATA 2,8,1,9,2,10,6,15,5,10,2,15,1,8,22,0,1,8,5,9,1,8,25,0
DATA 1,8,11,15,1,8,22,0,13,8,22,0,13,8,25,0,7,8,20,0,2,8
DATA 1,12,1,0,1,8,1,12,12,8,1,12,2,8,22,0,7,8,25,0,1,8,2,15
DATA 3,11,4,12,3,8,4,0,25,3,6,2,8,3,3,2,5,3,16,0,2,8,6,15
DATA 3,10,2,9,2,8,20,0,2,8,6,15,3,10,2,9,2,8,23,0,2,8,6,9
DATA 2,8,18,0,4,8,1,10,6,15,7,10,1,15,2,8,22,0,1,8,2,15
DATA 3,10,1,8,26,0,4,8,3,9,4,8,23,0,13,8,22,0,13,8,25,0
DATA 7,8,23,0,1,8,1,11,12,8,1,12,2,8,23,0,7,8,26,0,11,8
DATA 5,0,2,3,1,2,23,3,2,2,2,3,2,2,15,3,16,0,2,8,11,9,2,8
DATA 20,0,2,8,11,9,2,8,23,0,1,8,2,15,4,10,2,9,1,8,19,0,2,8
DATA 17,15,1,8,22,0,1,8,4,15,1,10,1,8,29,0,1,8,3,9,1,8,26,0
DATA 13,8,22,0,13,8,24,0,9,8,21,0,1,8,1,11,1,12,16,8,21,0
DATA 9,8,29,0,3,8,9,0,26,3,1,2,5,3,1,2,14,3,15,0,2,8,6,15
DATA 6,10,1,9,2,8,18,0,2,8,6,15,6,10,1,9,2,8,22,0,1,8,3,15
DATA 4,10,1,9,1,8,18,0,1,8,20,15,1,8,20,0,1,8,1,9,4,15,2,10
DATA 1,8,28,0,1,8,3,15,1,8,25,0,2,8,1,15,3,11,3,12,6,8,20,0
DATA 2,8,1,15,3,11,3,12,6,8,23,0,9,8,21,0,1,8,1,12,1,11
DATA 4,12,11,8,1,12,1,8,20,0,9,8,28,0,5,8,8,0,6,3,3,2,23,3
DATA 1,2,14,3,14,0,2,8,9,15,4,10,1,9,1,10,2,8,16,0,2,8,9,15
DATA 4,10,1,9,1,10,2,8,20,0,1,8,5,15,3,10,2,9,1,8,18,0,2,8
DATA 16,9,2,8,20,0,1,8,2,9,5,15,1,10,1,9,1,8,26,0,1,8,3,15
DATA 2,10,1,8,23,0,2,8,3,15,1,11,1,12,8,8,1,12,1,8,18,0
DATA 2,8,3,15,1,11,1,12,9,8,1,12,21,0,11,8,21,0,15,8,2,12
DATA 1,8,20,0,11,8,27,0,5,8,8,0,2,2,1,3,3,2,3,1,2,2,10,3
DATA 4,2,7,3,1,2,12,3,2,2,13,0,2,8,10,15,4,10,2,9,1,10,2,8
DATA 14,0,2,8,10,15,4,10,2,9,1,10,2,8,18,0,2,8,6,15,2,10
DATA 2,9,2,8,16,0,2,8,18,15,2,8,19,0,1,8,1,9,6,15,1,10,1,9
DATA 1,8,25,0,1,8,5,15,2,10,1,8,21,0,2,8,3,15,2,11,1,12
DATA 9,8,1,12,1,8,16,0,2,8,3,15,2,11,1,12,9,8,1,12,1,8,20,0
DATA 11,8,20,0,2,8,2,15,4,11,5,12,6,8,20,0,11,8,26,0,7,8
DATA 7,0,3,2,1,3,2,2,3,1,2,2,13,3,1,2,2,1,1,2,4,3,2,2,13,3
DATA 13,0,2,8,9,15,5,10,3,9,2,8,14,0,2,8,9,15,5,10,3,9,2,8
DATA 18,0,2,8,10,9,2,8,17,0,2,8,16,9,2,8,20,0,1,8,9,9,1,8
DATA 24,0,2,8,7,9,2,8,20,0,1,8,1,12,1,11,1,15,2,11,1,12
DATA 11,8,1,12,16,0,1,8,1,12,1,11,1,15,2,11,1,12,11,8,1,12
DATA 20,0,11,8,21,0,17,8,21,0,11,8,25,0,9,8,6,0,2,2,3,3
DATA 2,2,3,1,1,2,14,3,3,2,2,3,1,2,1,3,1,2,14,3,12,0,2,8
DATA 9,15,6,10,3,9,1,10,2,8,12,0,2,8,9,15,6,10,3,9,1,10
DATA 2,8,16,0,2,8,6,15,3,10,3,9,2,8,18,0,2,8,9,10,3,9,2,8
DATA 21,0,1,8,6,15,3,10,2,9,1,8,22,0,1,8,6,15,3,10,2,9,1,8
DATA 19,0,1,8,2,12,2,11,1,12,12,8,1,12,16,0,1,8,2,12,2,11
DATA 1,12,12,8,1,12,19,0,2,8,1,15,2,11,3,12,5,8,22,0,2,8
DATA 1,15,2,11,3,12,5,8,22,0,2,8,1,15,3,11,3,12,4,8,23,0
DATA 2,8,1,15,2,11,3,12,3,8,5,0,6,3,3,2,14,3,5,2,3,3,1,2
DATA 15,3,12,0,2,8,8,15,6,10,4,9,1,10,2,8,12,0,2,8,8,15
DATA 6,10,4,9,1,10,2,8,15,0,2,8,8,15,3,10,3,9,2,8,17,0,1,8
DATA 6,15,5,10,3,9,1,8,20,0,1,8,8,15,3,10,2,9,1,8,20,0,1,8
DATA 8,15,3,10,2,9,1,8,18,0,18,8,1,12,16,0,18,8,1,12,18,0
DATA 2,8,1,15,1,11,1,12,8,8,1,12,1,8,20,0,2,8,2,15,1,11
DATA 1,12,7,8,1,12,1,8,20,0,2,8,1,15,2,11,1,12,7,8,1,12
DATA 1,8,21,0,2,8,1,15,1,11,1,12,6,8,1,12,1,8,4,0,7,3,1,2
DATA 14,3,1,2,2,1,2,2,19,3,1,2,12,0,2,8,6,15,7,10,5,9,1,10
DATA 2,8,12,0,2,8,6,15,7,10,5,9,1,10,2,8,14,0,2,8,9,15,3,10
DATA 4,9,2,8,15,0,1,8,9,15,3,10,4,9,1,8,18,0,1,8,9,15,3,10
DATA 3,9,1,8,18,0,1,8,9,15,3,10,3,9,1,8,16,0,20,8,1,12,14,0
DATA 20,8,1,12,17,0,1,8,3,15,2,12,8,8,1,12,1,8,18,0,2,8
DATA 2,15,2,11,1,12,8,8,1,12,1,8,18,0,2,8,3,15,1,11,2,12
DATA 7,8,1,12,1,8,19,0,2,8,3,15,2,12,6,8,1,12,1,8,3,0,6,3
DATA 1,2,1,1,5,2,9,3,1,2,2,1,1,2,10,3,3,2,1,3,7,2,12,0,2,8
DATA 4,15,8,10,6,9,1,10,2,8,12,0,2,8,4,15,8,10,6,9,1,10
DATA 2,8,14,0,2,8,8,15,4,10,4,9,2,8,15,0,1,8,8,15,4,10,4,9
DATA 1,8,18,0,1,8,8,15,4,10,3,9,1,8,18,0,1,8,8,15,4,10,3,9
DATA 1,8,16,0,20,8,1,12,14,0,21,8,16,0,2,8,1,11,1,15,2,11
DATA 1,12,9,8,1,12,18,0,2,8,3,11,2,12,9,8,1,12,18,0,2,8
DATA 1,11,1,15,2,11,2,12,8,8,1,12,19,0,2,8,1,11,1,15,1,11
DATA 2,12,7,8,1,12,3,0,2,3,2,2,8,1,4,2,5,3,1,2,4,1,1,2,9,3
DATA 2,2,6,3,3,2,11,0,2,8,2,15,10,10,8,9,1,10,2,8,10,0,2,8
DATA 2,15,10,10,8,9,1,10,2,8,13,0,2,8,6,15,4,10,6,9,2,8
DATA 14,0,1,8,7,15,4,10,7,9,1,8,17,0,1,8,6,15,4,10,5,9,1,8
DATA 17,0,1,8,7,15,4,10,6,9,1,8,14,0,22,8,1,12,12,0,22,8
DATA 1,12,15,0,2,8,4,12,10,8,1,12,18,0,2,8,4,12,10,8,1,12
DATA 18,0,2,8,4,12,10,8,1,12,19,0,2,8,4,12,8,8,1,12,3,0
DATA 1,2,14,1,5,2,5,1,1,2,5,3,1,2,13,3,2,2,10,0,2,8,22,9
DATA 1,10,2,8,8,0,2,8,22,9,1,10,2,8,11,0,2,8,3,15,5,10,10,9
DATA 2,8,12,0,2,8,3,15,5,10,10,9,2,8,15,0,1,8,3,15,5,10
DATA 9,9,1,8,16,0,1,8,3,15,5,10,9,9,1,8,13,0,1,8,4,15,4,11
DATA 8,12,7,8,1,12,10,0,1,8,4,15,4,11,8,12,5,8,3,12,13,0
DATA 18,8,1,12,16,0,18,8,1,12,16,0,18,8,1,12,17,0,16,8,1,12
DATA 2,0,17,1,2,2,6,1,1,2,4,3,2,2,15,3,10,0,1,8,25,15,1,8
DATA 8,0,1,8,25,15,1,8,10,0,3,8,18,9,3,8,10,0,2,8,20,9,1,8
DATA 13,0,3,8,17,9,3,8,13,0,2,8,17,9,1,8,13,0,24,8,1,12
DATA 10,0,24,8,1,12,13,0,18,8,1,12,16,0,18,8,1,12,16,0,18,8
DATA 1,12,17,0,16,8,1,12,2,0,1,1,1,2,23,1,1,2,21,3,10,0
DATA 1,8,7,15,1,10,1,15,5,10,9,9,2,10,1,8,8,0,1,8,7,15,1,10
DATA 1,15,5,10,9,9,2,10,1,8,10,0,1,8,22,15,1,8,10,0,1,8
DATA 22,15,1,8,12,0,1,8,21,15,1,8,13,0,1,8,19,15,1,8,12,0
DATA 24,8,1,12,10,0,24,8,1,12,11,0,1,8,3,15,3,11,5,12,10,8
DATA 1,12,12,0,1,8,3,15,3,11,5,12,10,8,1,12,12,0,2,8,3,15
DATA 3,11,5,12,9,8,1,12,13,0,1,8,3,15,3,11,5,12,8,8,1,12
DATA 1,2,1,3,1,2,22,1,1,2,21,3,10,0,1,8,7,15,1,10,1,15,5,10
DATA 9,9,2,10,1,8,8,0,1,8,7,15,1,10,1,15,5,10,9,9,2,10,1,8
DATA 10,0,1,8,8,15,6,10,7,9,1,10,1,8,10,0,1,8,8,15,6,10
DATA 7,9,1,10,1,8,12,0,1,8,8,15,6,10,7,9,1,8,13,0,1,8,7,15
DATA 6,10,6,9,1,8,12,0,24,8,1,12,10,0,24,8,1,12,11,0,22,8
DATA 1,12,12,0,22,8,1,12,12,0,22,8,1,12,13,0,20,8,1,12,1,1
DATA 2,2,1,1,2,2,19,1,1,2,2,3,1,2,1,3,2,2,15,3,10,0,1,8
DATA 7,15,1,10,1,15,5,10,9,9,2,10,1,8,8,0,1,8,7,15,1,10
DATA 1,15,5,10,9,9,2,10,1,8,10,0,1,8,8,15,6,10,7,9,1,10
DATA 1,8,10,0,1,8,8,15,6,10,7,9,1,10,1,8,12,0,1,8,8,15,6,10
DATA 7,9,1,8,13,0,1,8,7,15,6,10,6,9,1,8,12,0,24,8,1,12,10,0
DATA 24,8,1,12,11,0,22,8,1,12,12,0,22,8,1,12,12,0,22,8,1,12
DATA 13,0,20,8,1,12