Rem Project: Paint Rem Created: 6/23/2006 3:30:08 PM Rem ***** Main Source File ***** set window on set display mode 800,600,32 set window size 800,600 sync on sync rate 0 type __FloodFillType Initialised as integer CoverColour as integer BitmapWidth as integer BitmapHeight as integer endtype global __FloodFillGlobal as __FloodFillType #constant __SpanListSize 15 type __FillSpan Left as integer Right as integer endtype global dim __FilledSpans() as __FillSpan global dim __FilledSpansCount() as integer global temp$ temp$="" global color color=rgb(0,0,0) global paint_mode global option_mode paint_mode=0 option_mode=1 global img_origin_x global img_origin_y global img_width global img_height global palletx1 global pallety1 global palletx2 global pallety2 global buttonsx1 global buttonsy1 global buttonsx2 global buttonsy2 global rgbx1 global rgby1 global rgbx2 global rgby2 global brush_width img_origin_x=76 img_origin_y=36 img_width=300 img_height=300 palletx1=1 pallety1=img_origin_y+20 palletx2=73 pallety2=img_origin_y+130 rgbx1=1 rgby1=img_origin_y+132 rgbx2=73 rgby2=img_origin_y+180 buttonsx1=1 buttonsy1=img_origin_y+184 buttonsx2=73 buttonsy2=img_origin_y+304 brush_width=10 get image 1,img_origin_x,img_origin_y,img_origin_x+img_width,img_origin_y+img_height,1 `create palette cls rgb(255,255,255) for x=0 to 73 for y=0 to 110 read rgbv dot x,y,rgbv next y next x sync get image 2,0,0,73,110 cls rgb(255,255,255) do cls rgb(255,255,255) draw_menu(0) draw_img() user_input() sync loop function draw_menu(not_draw_area) if not_draw_area=0 box 0,0,screen width(),screen height(),rgb(100,100,100),rgb(100,100,100),rgb(100,100,100),rgb(100,100,100) box 1,1,screen width()-1,screen height()-1,rgb(150,150,150),rgb(150,150,150),rgb(150,150,150),rgb(150,150,150) box img_origin_x-1,img_origin_y-1,screen width(),screen height(),rgb(100,100,100),rgb(100,100,100),rgb(100,100,100),rgb(100,100,100) box img_origin_x,img_origin_y,screen width()-1,screen height()-1,rgb(255,255,255),rgb(255,255,255),rgb(255,255,255),rgb(255,255,255) box img_origin_x-1,img_origin_y-1,img_origin_x+1+img_width,img_origin_y+1+img_height,rgb(100,100,100),rgb(100,100,100),rgb(100,100,100),rgb(100,100,100) box 0,0,screen width(),img_origin_y,rgb(100,100,100),rgb(100,100,100),rgb(100,100,100),rgb(100,100,100) box 1,1,screen width()-1,img_origin_y-1,rgb(150,150,150),rgb(150,150,150),rgb(150,150,150),rgb(150,150,150) else ink rgb(100,100,100),0 line img_origin_x,screen height()-1,screen width(),screen height()-1 line screen width()-1,img_origin_y,screen width()-1,screen height() line img_origin_x+img_width,img_origin_y,img_origin_x+img_width,img_origin_y+1+img_height line img_origin_x,img_origin_y+img_height,img_origin_x+1+img_width,img_origin_y+img_height box 0,0,screen width(),img_origin_y,rgb(100,100,100),rgb(100,100,100),rgb(100,100,100),rgb(100,100,100) box 0,img_origin_y-1,img_origin_x,screen height(),rgb(100,100,100),rgb(100,100,100),rgb(100,100,100),rgb(100,100,100) box 1,1,screen width()-1,img_origin_y-1,rgb(150,150,150),rgb(150,150,150),rgb(150,150,150),rgb(150,150,150) box 1,img_origin_y,img_origin_x-1,screen height()-1,rgb(150,150,150),rgb(150,150,150),rgb(150,150,150),rgb(150,150,150) box img_origin_x+1+img_width,img_origin_y,screen width()-1,screen height()-1,rgb(255,255,255),rgb(255,255,255),rgb(255,255,255),rgb(255,255,255) box img_origin_x,img_origin_y+1+img_height,screen width()-1,screen height()-1,rgb(255,255,255),rgb(255,255,255),rgb(255,255,255),rgb(255,255,255) endif `RGB PALETTE ink rgb(0,0,255),0 center text img_origin_x/2,img_origin_y,"Color" paste image 2,palletx1,pallety1 `RGB DATA INPUT box rgbx1+20,rgby1+4,rgbx1+52,rgby1+48,rgb(0,0,0),rgb(0,0,0),rgb(0,0,0),rgb(0,0,0) text rgbx1,rgby1,"R:"+str$(rgbr(color)) text rgbx1,rgby1+16,"G:"+str$(rgbg(color)) text rgbx1,rgby1+32,"B:"+str$(rgbb(color)) ink rgb(255,255,255),0 box rgbx1+20,rgby1+17,rgbx1+52,rgby1+18 box rgbx1+20,rgby1+33,rgbx1+52,rgby1+34 ink color,0 box rgbx1+54,rgby1+4,rgbx2,rgby2 `BUTTONS draw_option(mode) endfunction function draw_img() paste image 1,img_origin_x,img_origin_y endfunction function draw_option(mode) select option_mode case 1 if paint_mode=0:ink rgb(255,0,0),0:else:ink rgb(0,0,255),0:endif box buttonsx1,buttonsy1,buttonsx2,buttonsy1+20,rgb(0,0,0),rgb(255,255,255),rgb(0,0,0),rgb(255,255,255) center text buttonsx2/2,buttonsy1,"Circle" if paint_mode=1:ink rgb(255,0,0),0:else:ink rgb(0,0,255),0:endif box buttonsx1,buttonsy1+20,buttonsx2,buttonsy1+40,rgb(0,0,0),rgb(255,255,255),rgb(0,0,0),rgb(255,255,255) center text buttonsx2/2,buttonsy1+20,"Box" if paint_mode=2:ink rgb(255,0,0),0:else:ink rgb(0,0,255),0:endif box buttonsx1,buttonsy1+40,buttonsx2,buttonsy1+60,rgb(0,0,0),rgb(255,255,255),rgb(0,0,0),rgb(255,255,255) center text buttonsx2/2,buttonsy1+40,"Ellipse" if paint_mode=3:ink rgb(255,0,0),0:else:ink rgb(0,0,255),0:endif box buttonsx1,buttonsy1+60,buttonsx2,buttonsy1+80,rgb(0,0,0),rgb(255,255,255),rgb(0,0,0),rgb(255,255,255) center text buttonsx2/2,buttonsy1+60,"Line" if paint_mode=4:ink rgb(255,0,0),0:else:ink rgb(0,0,255),0:endif box buttonsx1,buttonsy1+80,buttonsx2,buttonsy1+100,rgb(0,0,0),rgb(255,255,255),rgb(0,0,0),rgb(255,255,255) center text buttonsx2/2,buttonsy1+80,"Brush" if paint_mode=5:ink rgb(255,0,0),0:else:ink rgb(0,0,255),0:endif box buttonsx1,buttonsy1+100,buttonsx2,buttonsy1+120,rgb(0,0,0),rgb(255,255,255),rgb(0,0,0),rgb(255,255,255) center text buttonsx2/2,buttonsy1+100,"Flood" if paint_mode=6:ink rgb(255,0,0),0:else:ink rgb(0,0,255),0:endif box buttonsx1,buttonsy1+120,buttonsx2,buttonsy1+140,rgb(0,0,0),rgb(255,255,255),rgb(0,0,0),rgb(255,255,255) center text buttonsx2/2,buttonsy1+120,"Dropper" endcase endselect endfunction function user_input() if mouseclick()=1 `RGB COLORS if mousex()>palletx1 and mousey()>pallety1 and mousex()<palletx2 and mousey()<pallety2 color=point(mousex(),mousey()) endif if mousex()>rgbx1+20 and mousey()>rgby1 and mousex()<rgbx1+52 and mousey()<rgby1+18`Edit R Value do cls rgb(255,255,255) ret$=get_color_val() if ret$<>"" color=rgb(val(ret$),rgbg(color),rgbb(color)) exitfunction else color=rgb(val(temp$),rgbg(color),rgbb(color)) endif draw_menu(0) draw_img() ink rgb(255,0,0),0 text rgbx1,rgby1,"R:"+str$(rgbr(color)) sync loop endif if mousex()>rgbx1+20 and mousey()>rgby1+18 and mousex()<rgbx1+52 and mousey()<rgby1+36`Edit G Value do cls rgb(255,255,255) ret$=get_color_val() if ret$<>"" color=rgb(rgbr(color),val(ret$),rgbb(color)) exitfunction else color=rgb(rgbr(color),val(temp$),rgbb(color)) endif draw_menu(0) draw_img() ink rgb(255,0,0),0 text rgbx1,rgby1+16,"G:"+str$(rgbg(color)) sync loop endif if mousex()>rgbx1+20 and mousey()>rgby1+36 and mousex()<rgbx1+52 and mousey()<rgby1+54`Edit B Value do cls rgb(255,255,255) ret$=get_color_val() if ret$<>"" color=rgb(rgbr(color),rgbg(color),val(ret$)) exitfunction else color=rgb(rgbr(color),rgbg(color),val(temp$)) endif draw_menu(0) draw_img() ink rgb(255,0,0),0 text rgbx1,rgby1+32,"B:"+str$(rgbb(color)) sync loop endif `BUTTON INTERACTIONS if mousex()>buttonsx1 and mousey()>buttonsy1 and mousex()<buttonsx2 and mousey()<buttonsy2 if mousex()>buttonsx1 and mousey()>buttonsy1 and mousex()<buttonsx2 and mousey()<buttonsy1+20 then paint_mode=0 if mousex()>buttonsx1 and mousey()>buttonsy1+20 and mousex()<buttonsx2 and mousey()<buttonsy1+40 then paint_mode=1 if mousex()>buttonsx1 and mousey()>buttonsy1+40 and mousex()<buttonsx2 and mousey()<buttonsy1+60 then paint_mode=2 if mousex()>buttonsx1 and mousey()>buttonsy1+60 and mousex()<buttonsx2 and mousey()<buttonsy1+80 then paint_mode=3 if mousex()>buttonsx1 and mousey()>buttonsy1+80 and mousex()<buttonsx2 and mousey()<buttonsy1+100 then paint_mode=4 if mousex()>buttonsx1 and mousey()>buttonsy1+100 and mousex()<buttonsx2 and mousey()<buttonsy1+120 then paint_mode=5 if mousex()>buttonsx1 and mousey()>buttonsy1+120 and mousex()<buttonsx2 and mousey()<buttonsy1+140 then paint_mode=6 endif `IMG INTERACTION if mousex()>img_origin_x-1 and mousey()>img_origin_y-1 and mousex()<img_origin_x+img_width and mousey()<img_origin_y+img_height then input_option_1() endif endfunction function input_option_1() smx=mousex() smy=mousey() select paint_mode case 0`Circle repeat cls rgb(255,255,255) draw_img() ink color,0 filled_circle(smx,smy,dist(smx,smy,mousex(),mousey())) draw_menu(1) if mouseclick()=2 or mouseclick()=3 exitfunction endif sync until mouseclick()=0 get_image() endcase case 1`Box repeat cls rgb(255,255,255) draw_img() ink color,0 box min(smx,mousex()),min(smy,mousey()),max(smx,mousex()),max(smy,mousey()) draw_menu(1) if mouseclick()=2 or mouseclick()=3 exitfunction endif sync until mouseclick()=0 get_image() endcase case 2`Ellipse repeat cls rgb(255,255,255) draw_img() ink color,0 filled_ellipse(smx,smy,abs(mousex()-smx),abs(mousey()-smy)) draw_menu(1) if mouseclick()=2 or mouseclick()=3 exitfunction endif sync until mouseclick()=0 get_image() endcase case 3`Line repeat cls rgb(255,255,255) draw_img() ink color,0 line smx,smy,mousex(),mousey() draw_menu(1) if mouseclick()=2 or mouseclick()=3 exitfunction endif sync until mouseclick()=0 get_image() endcase case 4`Brush repeat ink color,0 filled_circle(mousex(),mousey(),brush_width) draw_menu(1) if mouseclick()=2 or mouseclick()=3 exitfunction endif sync until mouseclick()=0 get_image() endcase case 5`Flood FloodFill(mousex(),mousey(),color) get_image() endcase case 6`Ink Dropper repeat color=point(mousex(),mousey()) until mouseclick()=0 endcase endselect endfunction function get_color_val() t_temp$=temp$ if returnkey() or len(temp$)>=3 ret$=temp$ temp$="" exitfunction ret$ endif if inkey$()<>"" temp$=temp$+str$(val(inkey$())) wait 200 endif if keystate(14) then temp$=left$(temp$,len(temp$)-1) temp$=str$(val(temp$)) if val(temp$)>255 then temp$=t_temp$ endfunction "" function wait_text(string$) center text screen width()/2,0,string$ sync endfunction function get_image() get image 1,img_origin_x,img_origin_y,img_origin_x+img_width,img_origin_y+img_height,1 endfunction function dist(x1#,y1#,x2#,y2#) ret#=sqrt((x2#-x1#)^2+(y2#-y1#)^2) endfunction ret# function filled_circle( CX as integer, CY as integer, R as integer ) local x as integer local y as integer local i as integer local s as integer i=R*R s=R*0.70710678 box CX-s, CY-s, CX+s+1, CY+s+1 s=s+1 for y=s to R x=sqrt( i-(y*y) ) box CX-x, CY-y, CX+x+1, CY-y+1 box CX-x, CY+y, CX+x+1, CY+y+1 box CX-y, CY-x, CX-y+1, CY+x+1 box CX+y, CY-x, CX+y+1, CY+x+1 next y endfunction function filled_ellipse(x#,y#,xrad#,yrad#) for i# =0.0 to 90.0 step 1 x1#=sin(i#-90)*xrad#+x# x2#=sin(i#+90)*xrad#+x# y1#=cos(i#+90)*yrad#+y# y2#=cos(i#-90)*yrad#+y# box x1#,y1#,x2#,y2# next i endfunction function draw_line(x1,y1,x2,y2,width) m#=(y2-y1)/(x2-x1) endfunction function min(v1,v2) if v1<v2 exitfunction v1 else exitfunction v2 endif endfunction 0 function max(v1,v2) if v1>v2 exitfunction v1 else exitfunction v2 endif endfunction 0 `FloodFill Commands are not mine, a thanks to "IanM" function FloodFill(x,y,c) __FloodFillGlobal.BitmapWidth=bitmap width()-1 __FloodFillGlobal.BitmapHeight=bitmap height()-1 __InitialiseFillSpan() if x >= 0 and x <= __FloodFillGlobal.BitmapWidth if y >= 0 and y <= __FloodFillGlobal.BitmapHeight lock pixels __FloodFillGlobal.CoverColour = point(x,y) if __FloodFillGlobal.CoverColour <> c ink c,0 __FloodLoop(x,y) endif unlock pixels endif endif endfunction function __FloodLoop(x as integer,y as integer) local Left as integer local Right as integer local SpanSize as integer for Left=x-1 to 0 step -1 if point(Left,y) <> __FloodFillGlobal.CoverColour then exit next Left inc Left for Right=x+1 to __FloodFillGlobal.BitmapWidth if point(Right,y) <> __FloodFillGlobal.CoverColour then exit next Right ` draw this line box Left,y,Right,y+1 ` and remember it __AddFillSpan(y,Left-1,Right+1) ` Fill upwards if y > 0 dec y x=Left while x < Right SpanSize=__CheckFillSpan(x,y) if SpanSize = 0 if point(x,y) = __FloodFillGlobal.CoverColour __FloodLoop(x,y) endif inc x else inc x,SpanSize endif endwhile inc y endif ` Fill downwards if y < __FloodFillGlobal.BitmapHeight inc y x=Left while x < Right SpanSize=__CheckFillSpan(x,y) if SpanSize = 0 if point(x,y) = __FloodFillGlobal.CoverColour __FloodLoop(x,y) endif inc x else inc x,SpanSize endif endwhile endif endfunction function __InitialiseFillSpan() local i as integer if __FloodFillGlobal.Initialised = 0 ` First time called, create the arrays - bigger than we should ever need undim __FilledSpans() global dim __FilledSpans(__SpanListSize,2048) as __FillSpan undim __FilledSpansCount() global dim __FilledSpansCount(2048) as integer __FloodFillGlobal.Initialised=1 else ` Subsequent call, just reset the spans we'll be using for i=__FloodFillGlobal.BitmapHeight to 0 step -1 __FilledSpansCount(i)=0 next i endif endfunction function __AddFillSpan(y as integer,Left as integer,Right as integer) local i as integer i=__FilledSpansCount(y) if i < __SpanListSize __FilledSpans(i, y).Left=Left __FilledSpans(i, y).Right=Right inc __FilledSpansCount(y) endif endfunction function __CheckFillSpan(x as integer,y as integer) local i as integer for i=__FilledSpansCount(y)-1 to 0 step -1 if x >= __FilledSpans(i, y).Left if x < __FilledSpans(i, y).Right then exitfunction __FilledSpans(i, y).Right-x endif next i endfunction 0 `//////////////////////////////////RGB COLOR INFORMATION////////////////////////////////////////// data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 393216,393216,393216,393472,393472,393472,393728,393728,393728,393984,393984,394240,394240,394240,394496,394496,394752,394752,394752,394752,394752,394752,329216,329216,263680,263680,263680,198144,198144,132608,132608,132608,67072,67072,67072,1536,1536,1536,1536,1536,1537,1537,1537,1538,1538,1539,1539,1539,1540,1540,1540,1541,1541,1542,1542,1542,1542,1542,1286,1286,1286,1030,1030,1030,774,774,518,518,518,262,262,6,6,6,6,6,6,65542,65542,65542,131078,131078,196614,196614,196614,262150,262150,327686,327686,327686,393222,393222,393222,393222,393222,393221,393221,393221,393220,393220,393219,393219,393219,393218,393218,393218,393217,393217,393216,393216,393216 data 851968,851968,852224,852480,852480,852736,852992,853248,853248,853504,853760,854016,854272,854272,854528,854784,855040,855040,855296,855296,789760,789760,724224,658688,593152,527616,527616,462080,396544,331008,331008,265472,199936,134400,134400,68864,3328,3328,3328,3329,3330,3331,3331,3332,3333,3334,3334,3335,3336,3337,3337,3338,3339,3340,3341,3341,3341,3085,2829,2829,2573,2317,2061,2061,1805,1549,1293,1037,1037,781,525,269,269,13,13,13,65549,131085,196621,196621,262157,327693,393229,393229,458765,524301,589837,655373,655373,720909,786445,851981,851981,851981,851980,851979,851979,851978,851977,851976,851975,851975,851974,851973,851972,851972,851971,851970,851969,851969,851968 data 1310720,1310720,1311232,1311488,1311744,1312000,1312256,1312512,1312768,1313280,1313536,1313792,1314048,1314304,1314560,1315072,1315328,1315584,1315840,1315840,1250304,1184768,1053696,988160,922624,857088,791552,726016,594944,529408,463872,398336,332800,267264,201728,70656,5120,5120,5121,5122,5123,5124,5125,5126,5127,5129,5130,5131,5132,5133,5134,5136,5137,5138,5139,5140,5140,4884,4372,4116,3860,3604,3348,3092,2580,2324,2068,1812,1556,1300,1044,532,276,20,20,65556,131092,196628,262164,327700,458772,524308,589844,655380,720916,786452,851988,983060,1048596,1114132,1179668,1245204,1310740,1310740,1310738,1310737,1310736,1310735,1310734,1310733,1310731,1310730,1310729,1310728,1310727,1310726,1310725,1310723,1310722,1310721,1310720 data 1769472,1769728,1770240,1770496,1770752,1771264,1771776,1772032,1772288,1772800,1773312,1773568,1774080,1774336,1774848,1775360,1775616,1775872,1776384,1776384,1645312,1579776,1448704,1383168,1252096,1121024,1055488,989952,858880,727808,662272,596736,465664,334592,269056,137984,72448,6912,6913,6915,6916,6918,6919,6921,6922,6924,6925,6927,6929,6930,6931,6933,6935,6936,6938,6939,6939,6427,5915,5659,5403,4891,4379,4123,3611,3355,2843,2331,2075,1819,1307,795,539,283,27,65563,196635,327707,393243,458779,589851,720923,786459,851995,983067,1114139,1179675,1310747,1376283,1507355,1638427,1703963,1769499,1769499,1769497,1769495,1769494,1769492,1769491,1769489,1769487,1769486,1769485,1769483,1769481,1769480,1769479,1769477,1769475,1769474,1769472 data 2293760,2294016,2294784,2295040,2295552,2296064,2296576,2297088,2297344,2298112,2298368,2298880,2299648,2299904,2300416,2300928,2301440,2301952,2302464,2171648,2106112,1975040,1843968,1712896,1581824,1450752,1319680,1188608,1057536,926464,860928,729856,598784,467712,336640,205568,74496,8960,8962,8964,8965,8968,8969,8971,8973,8975,8977,8978,8981,8983,8984,8987,8988,8990,8992,8994,8483,8227,7459,6947,6691,5923,5667,5155,4643,4131,3619,3107,2595,2339,1827,1059,803,291,35,131107,262179,393251,524323,589859,786467,917539,983075,1114147,1245219,1376291,1507363,1638435,1769507,1835043,2031651,2097187,2228259,2293793,2293791,2293789,2293787,2293785,2293783,2293782,2293779,2293778,2293776,2293774,2293772,2293770,2293769,2293766,2293764,2293763,2293760 data 2686976,2687232,2688000,2688512,2689024,2689792,2690304,2690816,2691328,2692096,2692608,2693120,2693888,2694400,2694912,2695680,2696192,2696704,2697472,2631936,2500864,2369792,2173184,2042112,1911040,1714432,1583360,1452288,1255680,1124608,993536,862464,665856,534784,403712,207104,76032,10496,10498,10500,10502,10505,10507,10509,10511,10514,10516,10518,10521,10523,10525,10528,10530,10532,10535,10537,10281,9769,9001,8489,7977,7209,6697,6185,5417,4905,4393,3625,3113,2601,2089,1321,809,297,41,131113,262185,458793,589865,720937,917545,1048617,1179689,1310761,1507369,1638441,1769513,1966121,2097193,2228265,2424873,2555945,2687017,2687016,2687013,2687011,2687009,2687006,2687004,2687002,2686999,2686997,2686995,2686992,2686990,2686988,2686986,2686983,2686981,2686979,2686976 data 3080192,3080704,3081472,3081984,3082752,3083520,3084032,3084800,3085312,3086080,3086592,3087360,3088128,3088640,3089408,3090176,3090688,3091456,3092224,3026688,2895616,2699008,2502400,2371328,2174720,1978112,1847040,1650432,1453824,1322752,1191680,995072,798464,667392,470784,274176,143104,12032,12035,12037,12039,12043,12045,12047,12050,12053,12055,12057,12061,12063,12065,12069,12071,12073,12077,12079,11823,11311,10287,9775,9263,8239,7727,7215,6191,5679,5167,4143,3631,3119,2607,1583,1071,559,65583,196655,327727,589871,720943,852015,1048623,1245231,1376303,1507375,1769519,1900591,2031663,2293807,2424879,2555951,2752559,2949167,3080239,3080238,3080234,3080232,3080230,3080227,3080224,3080222,3080219,3080216,3080214,3080211,3080208,3080206,3080204,3080201,3080198,3080196,3080193 data 3604480,3604992,3606016,3606784,3607296,3608320,3609088,3609600,3610368,3611392,3611904,3612672,3613696,3614208,3614976,3616000,3616512,3617280,3618304,3487488,3290880,3094272,2897664,2701056,2504448,2242304,2111232,1914624,1652480,1521408,1324800,1193728,931584,734976,603904,341760,145152,14080,14083,14086,14089,14092,14095,14098,14100,14104,14107,14109,14113,14116,14118,14122,14125,14127,14131,14134,13623,12855,11831,11063,10551,9527,8759,8247,7223,6455,5943,4919,4151,3639,2871,1847,1335,567,65591,196663,393271,655415,786487,983095,1245239,1441847,1572919,1769527,2031671,2162743,2359351,2621495,2752567,2949175,3211319,3342391,3538999,3604533,3604529,3604526,3604523,3604520,3604517,3604514,3604511,3604508,3604505,3604502,3604499,3604496,3604494,3604490,3604487,3604485,3604481 data 3997696,3998208,3999488,4000256,4001024,4002048,4002816,4003584,4004352,4005376,4006144,4006912,4007936,4008704,4009472,4010752,4011264,4012032,4013312,3882240,3685632,3489024,3226880,3030272,2833664,2571520,2374912,2178304,1916160,1719552,1522944,1326336,1064192,867584,670976,343296,146688,15616,15620,15623,15626,15630,15633,15636,15639,15643,15646,15649,15653,15656,15659,15664,15667,15669,15674,15677,15165,14397,13373,12605,11837,10813,10045,9277,8253,7485,6717,5437,4669,4157,3389,2109,1341,573,65597,262205,458813,720957,917565,1114173,1376317,1572925,1769533,1966141,2293821,2424893,2621501,2949181,3145789,3342397,3604541,3801149,3997757,3997755,3997751,3997748,3997745,3997741,3997738,3997735,3997731,3997728,3997725,3997720,3997717,3997714,3997712,3997707,3997704,3997701,3997697 data 4456448,4457216,4458496,4459264,4460032,4461312,4462080,4462848,4463872,4465152,4465920,4466688,4467968,4468736,4469504,4470784,4471808,4472576,4473856,4342784,4146176,3949568,3621888,3359744,3163136,2835456,2638848,2442240,2114560,1917952,1655808,1459200,1131520,934912,738304,410624,214016,17408,17412,17416,17419,17424,17427,17430,17433,17438,17442,17445,17450,17453,17456,17461,17464,17468,17472,17476,16964,16196,14916,14148,13124,12100,11076,10308,9028,8260,7492,6212,5444,4420,3652,2372,1604,836,65604,262212,524356,786500,1048644,1245252,1572932,1769540,1966148,2228292,2490436,2752580,2949188,3276868,3473476,3670084,3997764,4194372,4456516,4456514,4456509,4456506,4456503,4456498,4456495,4456491,4456486,4456483,4456480,4456475,4456472,4456469,4456465,4456460,4456457,4456454,4456449 data 4915200,4915968,4917248,4918272,4919296,4920576,4921600,4922368,4923392,4924672,4925696,4926464,4928000,4928768,4929792,4931072,4932096,4932864,4934400,4803328,4541184,4344576,3951360,3754752,3492608,3164928,2902784,2706176,2312960,2116352,1854208,1657600,1264384,1067776,805632,477952,215808,19200,19205,19208,19212,19217,19221,19225,19228,19233,19237,19241,19246,19250,19253,19259,19262,19266,19271,19275,18763,17739,16459,15435,14667,13131,12363,11339,10059,9035,8267,6731,5963,4939,4171,2635,1867,843,65611,327755,524363,917579,1114187,1376331,1704011,1966155,2162763,2424907,2752587,3014731,3276875,3604555,3866699,4063307,4390987,4653131,4915275,4915273,4915267,4915264,4915260,4915255,4915251,4915248,4915242,4915239,4915235,4915230,4915226,4915223,4915219,4915214,4915210,4915207,4915201 data 5439488,5440256,5441792,5442816,5443840,5445376,5446400,5447424,5448448,5449984,5450752,5451776,5453312,5454336,5455360,5456896,5457920,5458944,5460480,5264128,5001984,4739840,4346624,4084480,3822336,3429120,3166976,2904832,2577152,2315008,2052864,1790720,1397504,1135360,873216,480000,217856,21248,21253,21257,21261,21267,21271,21275,21279,21285,21289,21292,21298,21302,21306,21312,21316,21320,21326,21330,20563,19539,18003,16979,15955,14419,13395,12371,10835,10067,9043,7507,6483,5459,4435,2899,1875,851,65619,327763,589907,983123,1245267,1507411,1900627,2162771,2424915,2687059,3014739,3276883,3539027,3932243,4194387,4456531,4849747,5111891,5374035,5439568,5439562,5439558,5439554,5439548,5439544,5439540,5439534,5439530,5439527,5439521,5439517,5439513,5439509,5439503,5439499,5439495,5439489 data 5898240,5899264,5900800,5901824,5903104,5904640,5905664,5906688,5907968,5909504,5910528,5911552,5913344,5914368,5915392,5917184,5918208,5919232,5920768,5659136,5396992,5134848,4741632,4413952,4151808,3758592,3430912,3168768,2775552,2513408,2185728,1923584,1530368,1268224,940544,547328,285184,23040,23046,23050,23054,23061,23065,23069,23073,23080,23084,23088,23095,23099,23103,23109,23114,23118,23124,23128,22106,21082,19546,18266,17242,15706,14682,13402,11866,10842,9818,8026,7002,5978,4954,3162,2138,1114,131162,393306,655450,1048666,1376346,1638490,2031706,2359386,2621530,2883674,3276890,3604570,3866714,4259930,4522074,4849754,5242970,5505114,5767258,5898326,5898320,5898316,5898311,5898305,5898301,5898297,5898290,5898286,5898282,5898276,5898271,5898267,5898263,5898256,5898252,5898248,5898242 data 6291456,6292480,6294272,6295296,6296576,6298368,6299392,6300672,6301952,6303488,6304768,6306048,6307584,6308864,6310144,6311680,6312960,6314240,6315776,6119424,5857280,5529600,5070848,4808704,4481024,4022272,3760128,3432448,2973696,2711552,2383872,2056192,1662976,1335296,1007616,614400,286720,24576,24582,24587,24591,24598,24603,24607,24612,24619,24623,24628,24635,24639,24644,24651,24655,24660,24667,24671,23904,22880,21088,19808,18784,16992,15712,14688,12896,11616,10592,8800,7520,6496,5216,3424,2400,1120,131168,393312,720992,1179744,1441888,1769568,2228320,2490464,2818144,3080288,3539040,3866720,4128864,4587616,4915296,5177440,5636192,5963872,6226016,6291549,6291542,6291538,6291533,6291526,6291522,6291517,6291510,6291506,6291501,6291494,6291490,6291485,6291481,6291474,6291469,6291465,6291458 data 6750208,6751232,6753280,6754560,6755840,6757632,6758912,6760192,6761472,6763264,6764544,6765824,6767616,6768896,6770176,6771968,6773248,6774528,6776320,6579968,6252288,5924608,5465856,5138176,4810496,4351744,4024064,3696384,3172096,2909952,2582272,2254592,1730304,1468160,1140480,616192,288512,26368,26375,26380,26385,26392,26397,26402,26407,26414,26419,26424,26431,26436,26441,26448,26453,26458,26465,26470,25703,24423,22631,21351,20071,18023,16999,15719,13671,12391,11367,9319,8039,6759,5735,3687,2407,1127,131175,458855,786535,1245287,1572967,1900647,2359399,2687079,3014759,3342439,3801191,4128871,4456551,4915303,5242983,5570663,6029415,6357095,6684775,6750308,6750300,6750296,6750291,6750283,6750278,6750274,6750266,6750261,6750256,6750249,6750244,6750239,6750234,6750227,6750222,6750217,6750210 data 7274496,7275776,7277824,7279104,7280384,7282432,7283712,7284992,7286528,7288320,7289856,7291136,7293184,7294464,7295744,7297792,7299072,7300352,7302400,7040768,6647552,6319872,5795584,5467904,5140224,4615936,4288256,3960576,3436288,3108608,2715392,2387712,1863424,1535744,1208064,683776,356096,28416,28423,28429,28434,28442,28447,28452,28457,28465,28470,28476,28483,28489,28494,28502,28507,28512,28520,28525,27503,25967,24175,22639,21359,19311,18031,16751,14703,13423,12143,10095,8559,7279,5999,3951,2671,1391,131183,458863,852079,1310831,1704047,2031727,2556015,2883695,3211375,3539055,4063343,4391023,4784239,5242991,5636207,5963887,6488175,6815855,7143535,7274603,7274595,7274590,7274584,7274576,7274571,7274566,7274558,7274553,7274548,7274540,7274535,7274529,7274524,7274516,7274511,7274506,7274498 data 7733248,7734528,7736576,7738112,7739392,7741696,7742976,7744512,7745792,7748096,7749376,7750912,7752960,7754496,7755776,7758080,7759360,7760896,7762944,7435776,7108096,6714880,6190592,5797376,5469696,4879872,4552192,4158976,3634688,3241472,2913792,2520576,1996288,1603072,1275392,751104,357888,30208,30216,30221,30227,30235,30241,30246,30252,30260,30266,30271,30280,30285,30291,30299,30305,30310,30319,30324,29046,27766,25462,24182,22646,20598,19062,17782,15734,14198,12662,10614,9334,7798,6262,4214,2934,1398,131190,524406,852086,1441910,1769590,2162806,2687094,3080310,3407990,3801206,4325494,4718710,5046390,5636214,5963894,6357110,6881398,7274614,7602294,7733361,7733353,7733347,7733342,7733334,7733328,7733322,7733314,7733309,7733303,7733295,7733289,7733284,7733278,7733270,7733264,7733259,7733250 data 8126464,8127744,8130048,8131584,8133120,8135424,8136960,8138496,8139776,8142080,8143616,8145152,8147456,8148992,8150528,8152576,8154112,8155648,8157952,7896064,7502848,7109632,6519808,6192128,5798912,5209088,4815872,4422656,3832832,3439616,3111936,2718720,2128896,1735680,1342464,752640,359424,31744,31752,31758,31764,31773,31779,31785,31791,31799,31805,31811,31820,31826,31832,31841,31846,31852,31861,31867,30844,29308,27004,25468,24188,21884,20348,18812,16508,14972,13436,11388,9852,8316,6780,4476,2940,1404,131196,524412,917628,1507452,1900668,2293884,2883708,3276924,3604604,3997820,4587644,4980860,5374076,5963900,6357116,6684796,7274620,7667836,8061052,8126584,8126575,8126569,8126563,8126555,8126549,8126543,8126534,8126528,8126522,8126514,8126508,8126502,8126496,8126487,8126481,8126475,8126466 data 8519680,8521216,8523520,8525056,8526592,8528896,8530688,8532224,8533760,8536064,8537600,8539392,8541696,8543232,8544768,8547072,8548864,8550400,8552704,8290816,7897600,7504384,6849024,6455808,6062592,5472768,5079552,4620800,4030976,3637760,3244544,2851328,2195968,1802752,1409536,819712,426496,33280,33289,33295,33301,33310,33316,33323,33329,33338,33344,33350,33360,33366,33372,33381,33387,33394,33403,33409,32386,30850,28290,26754,25218,22914,21378,19842,17282,15746,14210,11906,10370,8578,7042,4738,3202,1666,196738,589954,983170,1572994,1966210,2359426,3014786,3408002,3801218,4194434,4784258,5243010,5636226,6226050,6619266,7012482,7667842,8061058,8454274,8519806,8519797,8519790,8519784,8519775,8519769,8519763,8519753,8519747,8519741,8519732,8519726,8519720,8519713,8519704,8519698,8519692,8519683 data 8978432,8979968,8982528,8984064,8985856,8988160,8989952,8991488,8993280,8995840,8997376,8999168,9001472,9003264,9004800,9007360,9009152,9010688,9013248,8751360,8292608,7899392,7244032,6785280,6392064,5736704,5343488,4884736,4229376,3836160,3377408,2984192,2328832,1935616,1476864,821504,428288,35072,35081,35088,35094,35104,35110,35117,35123,35133,35140,35146,35156,35162,35169,35179,35185,35192,35201,35208,34185,32393,29833,28297,26505,24201,22409,20873,18313,16521,14985,12425,10889,9097,7561,5001,3209,1673,196745,589961,1048713,1638537,2097289,2490505,3145865,3604617,3997833,4456585,5046409,5505161,5898377,6553737,7012489,7405705,8061065,8454281,8913033,8978565,8978555,8978548,8978542,8978532,8978526,8978519,8978509,8978503,8978496,8978487,8978480,8978474,8978467,8978457,8978451,8978444,8978435 data 9437184,9438720,9441536,9443072,9444864,9447424,9449216,9451008,9452800,9455360,9457152,9458944,9461504,9463296,9465088,9467648,9469440,9471232,9473792,9146368,8753152,8294400,7573504,7180288,6721536,6066176,5607424,5148672,4493312,4034560,3575808,3117056,2461696,2002944,1544192,888832,430080,36864,36874,36881,36887,36898,36904,36911,36918,36928,36935,36942,36952,36959,36966,36976,36983,36990,37000,37007,35728,34192,31376,29584,28048,25232,23696,21904,19344,17552,15760,13200,11408,9616,7824,5264,3472,1680,196752,655504,1114256,1769616,2228368,2621584,3342480,3801232,4194448,4653200,5308560,5767312,6226064,6881424,7340176,7798928,8454288,8913040,9371792,9437323,9437313,9437306,9437299,9437289,9437282,9437276,9437265,9437259,9437252,9437242,9437235,9437228,9437221,9437211,9437204,9437197,9437187 data 9895936,9897728,9900288,9902336,9904128,9906688,9908736,9910528,9912320,9915136,9916928,9918720,9921536,9923328,9925120,9927936,9929728,9931520,9934336,9606912,9148160,8689408,7968512,7509760,7051008,6330112,5871360,5412608,4691712,4232960,3774208,3315456,2594560,2135808,1677056,956160,497408,38656,38666,38673,38681,38691,38698,38706,38713,38723,38731,38738,38748,38756,38763,38774,38781,38788,38799,38806,37527,35735,32919,31127,29335,26519,24727,22935,20119,18327,16535,13719,11927,10135,8343,5527,3735,1943,196759,655511,1114263,1835159,2293911,2752663,3473559,3932311,4391063,4915351,5570711,6029463,6553751,7209111,7733399,8192151,8847511,9371799,9830551,9896082,9896071,9896064,9896057,9896046,9896039,9896032,9896021,9896014,9896007,9895996,9895989,9895982,9895975,9895964,9895957,9895950,9895939 data 10420224,10422016,10424832,10426880,10428672,10431488,10433536,10435328,10437376,10440192,10442240,10444032,10446848,10448896,10450688,10453504,10455552,10457344,10460416,10067712,9543424,9084672,8363776,7839488,7380736,6659840,6135552,5676800,4890368,4431616,3907328,3448576,2727680,2203392,1744640,958208,499456,40704,40715,40722,40730,40741,40748,40756,40763,40775,40782,40790,40801,40808,40816,40827,40834,40842,40853,40861,39327,37279,34463,32671,30623,27807,26015,23967,21151,19103,17311,14495,12447,10655,8607,5791,3743,1951,196767,721055,1179807,1900703,2424991,2883743,3670175,4128927,4653215,5111967,5832863,6357151,6815903,7536799,8061087,8519839,9306271,9765023,10289311,10420377,10420366,10420358,10420351,10420339,10420332,10420325,10420313,10420306,10420298,10420287,10420280,10420272,10420265,10420253,10420246,10420238,10420227 data 10878976,10880768,10883840,10885888,10887936,10890752,10892800,10894848,10896896,10899968,10901760,10903808,10906880,10908928,10910720,10913792,10915840,10917888,10920960,10528256,10003968,9479680,8693248,8168960,7710208,6923776,6399488,5875200,5154304,4630016,4105728,3581440,2795008,2336256,1811968,1025536,501248,42496,42507,42515,42523,42535,42542,42550,42558,42570,42578,42585,42597,42605,42613,42624,42632,42640,42652,42660,41126,39078,36006,33958,31910,29094,27046,24998,21926,20134,18086,15014,12966,10918,9126,6054,4006,1958,196774,721062,1245350,2031782,2556070,3014822,3801254,4325542,4849830,5374118,6095014,6619302,7143590,7930022,8388774,8913062,9699494,10223782,10748070,10879136,10879124,10879116,10879108,10879097,10879089,10879081,10879069,10879061,10879054,10879042,10879034,10879026,10879018,10879007,10878999,10878991,10878979 data 11337728,11339776,11342848,11344896,11346944,11350016,11352064,11354368,11356416,11359488,11361536,11363584,11366656,11368960,11371008,11374080,11376128,11378176,11381248,10923264,10398976,9874688,9088256,8563968,8039680,7187712,6663424,6139136,5352704,4828416,4304128,3714304,2927872,2403584,1879296,1092864,568576,44288,44300,44308,44316,44328,44336,44344,44353,44365,44373,44381,44393,44401,44410,44422,44430,44438,44450,44458,42669,40621,37549,35501,33453,30381,28077,26029,22957,20909,18861,15789,13485,11437,9389,6317,4269,2221,262317,786605,1310893,2097325,2621613,3145901,3997869,4522157,5046445,5570733,6357165,6881453,7405741,8257709,8781997,9306285,10092717,10617005,11141293,11337894,11337882,11337874,11337866,11337854,11337846,11337837,11337825,11337817,11337809,11337797,11337789,11337780,11337772,11337760,11337752,11337744,11337732 data 11796480,11798528,11801856,11803904,11806208,11809280,11811584,11813632,11815936,11819008,11821312,11823360,11826688,11828992,11831040,11834368,11836416,11838720,11841792,11383808,10859520,10269696,9483264,8893440,8369152,7517184,6927360,6403072,5551104,5026816,4436992,3912704,3060736,2536448,1946624,1094656,570368,46080,46092,46101,46109,46122,46130,46139,46147,46160,46168,46177,46190,46198,46207,46219,46228,46236,46249,46257,44468,42420,39092,36788,34740,31412,29364,27060,23988,21684,19636,16308,14260,11956,9908,6580,4276,2228,262324,786612,1376436,2162868,2752692,3276980,4128948,4718772,5243060,5767348,6619316,7209140,7733428,8585396,9109684,9699508,10485940,11075764,11600052,11796653,11796640,11796632,11796623,11796611,11796602,11796594,11796581,11796573,11796564,11796552,11796543,11796535,11796526,11796513,11796505,11796496,11796484 data 12189696,12191744,12195072,12197376,12199680,12203008,12205312,12207616,12209920,12213248,12215552,12217600,12221184,12223232,12225536,12228864,12231168,12233472,12236800,11844096,11254272,10664448,9812480,9222656,8698368,7780864,7256576,6666752,5749248,5224960,4635136,4045312,3193344,2603520,2013696,1161728,571904,47616,47629,47638,47646,47660,47668,47677,47686,47699,47708,47717,47730,47739,47747,47761,47769,47778,47791,47800,46266,43962,40634,38330,36026,32698,30394,28090,24762,22714,20410,17082,14778,12474,10170,6842,4538,2234,262330,852154,1441978,2293946,2883770,3408058,4325562,4849850,5439674,6029498,6881466,7471290,8061114,8913082,9502906,10092730,10944698,11534522,12058810,12189876,12189863,12189854,12189845,12189832,12189823,12189814,12189801,12189792,12189784,12189770,12189762,12189753,12189744,12189731,12189722,12189713,12189700 data 12648448,12650752,12654080,12656384,12658944,12662272,12664576,12667136,12669440,12672768,12675072,12677632,12680960,12683264,12685824,12689152,12691456,12694016,12697344,12304640,11714816,11059456,10207488,9617664,8962304,8110336,7520512,6865152,6013184,5423360,4833536,4178176,3326208,2736384,2081024,1229056,639232,49408,49421,49430,49439,49453,49462,49471,49481,49494,49503,49512,49526,49535,49544,49558,49567,49576,49590,49599,48065,45761,42177,39873,37569,33985,31681,29377,25793,23489,21185,17601,15297,12993,10689,7105,4801,2497,262337,852161,1441985,2359489,2949313,3539137,4456641,5046465,5636289,6226113,7143617,7733441,8323265,9240769,9830593,10420417,11337921,11927745,12517569,12648635,12648621,12648612,12648603,12648589,12648580,12648571,12648557,12648548,12648539,12648525,12648516,12648507,12648498,12648484,12648475,12648466,12648452 data 13107200,13109504,13113088,13115648,13117952,13121536,13124096,13126400,13128960,13132544,13134848,13137408,13140992,13143296,13145856,13149440,13151744,13154304,13157888,12699648,12109824,11454464,10536960,9947136,9291776,8374272,7784448,7129088,6211584,5621760,4966400,4376576,3459072,2803712,2213888,1230848,641024,51200,51214,51223,51233,51247,51256,51266,51275,51289,51299,51308,51322,51332,51341,51356,51365,51374,51389,51398,49608,47304,43720,41160,38856,35272,32712,30408,26824,24264,21960,18120,15816,13512,10952,7368,4808,2504,262344,917704,1507528,2425032,3080392,3670216,4587720,5243080,5832904,6488264,7405768,7995592,8650952,9568456,10223816,10813640,11731144,12386504,12976328,13107393,13107379,13107370,13107360,13107346,13107337,13107327,13107313,13107304,13107294,13107280,13107270,13107261,13107252,13107237,13107228,13107218,13107204 data 13565952,13568256,13572096,13574656,13577216,13580800,13583360,13585920,13588480,13592064,13594624,13597184,13601024,13603328,13605888,13609728,13612288,13614592,13618432,13160192,12504832,11915008,10931968,10276608,9621248,8703744,8048384,7393024,6409984,5820160,5164800,4509440,3526400,2936576,2281216,1298176,642816,52992,53006,53016,53026,53040,53050,53060,53070,53084,53094,53104,53119,53129,53138,53153,53163,53173,53187,53197,51407,48847,45263,42703,40143,36303,33999,31439,27599,25039,22735,18895,16335,13775,11471,7631,5071,2511,262351,917711,1573071,2556111,3145935,3801295,4784335,5439695,6029519,6684879,7667919,8323279,8978639,9896143,10551503,11206863,12124367,12779727,13435087,13566152,13566137,13566128,13566118,13566103,13566093,13566084,13566069,13566059,13566049,13566035,13566025,13566015,13566005,13565991,13565981,13565971,13565956 data 14024704,14027264,14031104,14033664,14036224,14040064,14042624,14045184,14047744,14051584,14054144,14056704,14060544,14063360,14065920,14069760,14072320,14074880,14078720,13555200,12899840,12244480,11261440,10606080,9950720,8902144,8246784,7591424,6608384,5953024,5297664,4642304,3659264,3003904,2348544,1365504,710144,54784,54799,54809,54819,54834,54844,54854,54864,54879,54889,54899,54914,54924,54935,54950,54960,54970,54985,54995,52950,50390,46550,43990,41430,37590,34774,32214,28374,25814,23254,19414,16854,14294,11734,7894,5334,2774,327894,983254,1638614,2621654,3277014,3932374,4915414,5570774,6226134,6881494,7864534,8519894,9175254,10223830,10879190,11534550,12517590,13172950,13828310,14024910,14024895,14024885,14024875,14024860,14024850,14024839,14024824,14024814,14024804,14024789,14024779,14024769,14024759,14024744,14024734,14024724,14024709 data 14483456,14486016,14489856,14492672,14495232,14499328,14501888,14504704,14507264,14511360,14513920,14516736,14520576,14523136,14525952,14530048,14532608,14535168,14539264,14015744,13294848,12639488,11590912,10935552,10280192,9231616,8576256,7855360,6806784,6151424,5496064,4775168,3792128,3071232,2415872,1367296,711936,56576,56591,56602,56612,56628,56638,56648,56659,56674,56685,56695,56711,56721,56731,56747,56757,56768,56783,56794,54749,51933,48093,45277,42717,38621,36061,33245,29405,26845,24029,20189,17373,14813,11997,8157,5341,2781,327901,983261,1704157,2687197,3408093,4063453,5112029,5767389,6422749,7143645,8126685,8847581,9502941,10551517,11206877,11927773,12910813,13631709,14287069,14483669,14483653,14483643,14483632,14483617,14483606,14483596,14483580,14483570,14483560,14483544,14483534,14483523,14483513,14483497,14483487,14483476,14483461 data 14942208,14944768,14948864,14951680,14954496,14958592,14961408,14963968,14966784,14970880,14973696,14976512,14980608,14983168,14985984,14990080,14992896,14995712,14999808,14410752,13755392,13034496,11985920,11265024,10544128,9495552,8840192,8119296,7070720,6349824,5628928,4973568,3924992,3204096,2483200,1434624,713728,58368,58384,58394,58405,58421,58432,58443,58453,58469,58480,58491,58507,58518,58528,58545,58555,58566,58582,58593,56292,53732,49636,46820,44004,39908,37092,34532,30436,27620,24804,20708,17892,15332,12516,8420,5604,2788,327908,1048804,1704164,2752740,3473636,4194532,5243108,5964004,6619364,7340260,8388836,9109732,9830628,10879204,11600100,12255460,13304036,14024932,14745828,14942427,14942411,14942401,14942390,14942374,14942363,14942352,14942336,14942326,14942315,14942299,14942288,14942277,14942267,14942250,14942240,14942229,14942213 data 15335424,15338240,15342336,15345152,15347968,15352320,15355136,15357952,15360768,15365120,15367936,15370752,15374848,15377664,15380480,15384832,15387648,15390464,15394816,14871040,14150144,13429248,12380672,11594240,10873344,9824768,9103872,8382976,7268864,6547968,5827072,5106176,3992064,3271168,2550272,1501696,780800,59904,59920,59931,59942,59959,59970,59981,59992,60009,60020,60031,60047,60058,60069,60086,60097,60108,60125,60136,58090,55274,51178,48106,45290,41194,38378,35562,31210,28394,25578,21226,18410,15594,12778,8682,5866,3050,327914,1048810,1769706,2883818,3604714,4325610,5374186,6160618,6881514,7602410,8650986,9371882,10092778,11206890,11927786,12648682,13762794,14483690,15204586,15335650,15335634,15335623,15335611,15335595,15335584,15335573,15335556,15335545,15335534,15335518,15335506,15335495,15335484,15335468,15335457,15335446,15335429 data 15794176,15796992,15801344,15804160,15807232,15811584,15814400,15817472,15820288,15824640,15827456,15830528,15834880,15837696,15840768,15845120,15847936,15851008,15855360,15331584,14610688,13824256,12710144,11989248,11202816,10088704,9367808,8581376,7467264,6746368,6025472,5239040,4124928,3404032,2617600,1503488,782592,61696,61713,61724,61735,61752,61764,61775,61787,61804,61815,61826,61844,61855,61866,61883,61895,61906,61923,61935,59889,57073,52465,49649,46833,42481,39409,36593,32241,29169,26353,22001,19185,16113,13297,8945,5873,3057,327921,1114353,1835249,2949361,3670257,4456689,5570801,6291697,7078129,7799025,8913137,9699569,10420465,11534577,12255473,13041905,14156017,14876913,15663345,15794409,15794392,15794380,15794369,15794352,15794341,15794329,15794312,15794301,15794289,15794272,15794261,15794250,15794238,15794221,15794210,15794198,15794181 data 16252928,16255744,16260352,16263424,16266240,16270848,16273920,16276736,16279808,16284416,16287232,16290304,16294912,16297728,16300800,16305408,16308224,16311296,16315904,15792128,15005696,14219264,13105152,12318720,11532288,10418176,9631744,8845312,7731200,6944768,6158336,5437440,4257792,3471360,2750464,1570816,784384,63488,63505,63517,63529,63546,63558,63570,63581,63599,63611,63622,63640,63652,63663,63681,63693,63704,63722,63734,61688,58616,54008,51192,48120,43512,40696,37624,33016,30200,27128,22520,19704,16632,13560,9208,6136,3064,327928,1114360,1900792,3014904,3801336,4587768,5701880,6488312,7274744,8061176,9175288,9961720,10748152,11862264,12648696,13435128,14549240,15335672,16122104,16253168,16253150,16253138,16253127,16253109,16253097,16253086,16253068,16253056,16253045,16253027,16253015,16253004,16252992,16252974,16252963,16252951,16252933 data 16711680,16714752,16719104,16722176,16725248,16729856,16732928,16736256,16739072,16743936,16746752,16750080,16754432,16757504,16760832,16765440,16768512,16771584,16776192,16121600,15400704,14614272,13434624,12582656,11861760,10682112,9895680,9109248,7864064,7077632,6291200,5504768,4325120,3538688,2752256,1572608,851712,65280,65298,65310,65321,65340,65351,65363,65375,65393,65406,65417,65436,65447,65459,65477,65489,65502,65519,65531,62975,59903,55295,52223,49151,44543,41471,38399,33791,30975,27647,23295,19967,16895,14079,9215,6399,3071,327935,1179903,1966335,3145983,3932415,4653311,5898495,6684927,7471359,8257791,9371903,10158335,10944767,12189951,12910847,13762815,14876927,15728895,16515327,16711926,16711907,16711895,16711883,16711866,16711854,16711842,16711823,16711811,16711800,16711782,16711770,16711758,16711745,16711728,16711716,16711703,16711686 data 16713479,16716295,16720903,16723719,16726791,16731399,16734215,16737287,16740359,16744711,16747783,16750599,16755207,16758279,16761095,16765703,16768519,16771591,16776199,16187143,15400711,14614279,13500167,12713735,11992839,10813191,10026759,9305863,8126215,7405319,6618887,5832455,4718343,3931911,3145479,2031367,1244935,524039,524056,524068,524079,524097,524109,524120,524132,524149,524161,524173,524190,524202,524214,524231,524243,524254,524272,524284,521983,518911,514559,511487,508415,504063,500991,497919,493567,490495,487679,483071,479999,477183,474111,469759,466687,463615,788479,1574911,2361343,3475455,4261887,5048319,6162431,6948863,7669759,8456191,9635839,10356735,11143167,12257279,13043711,13830143,14944255,15730687,16517119,16713718,16713700,16713689,16713677,16713659,16713648,16713636,16713619,16713607,16713595,16713578,16713566,16713554,16713543,16713525,16713514,16713502,16713484 data 16715278,16718094,16722446,16725262,16728334,16732686,16735502,16738318,16741390,16745742,16748558,16751374,16755726,16758798,16761614,16765966,16768782,16771854,16776206,16187150,15466254,14679822,13565710,12844814,12123918,11009806,10223374,9502478,8388366,7667470,6881038,6160142,5046030,4325134,3538702,2424590,1703694,982798,982815,982826,982837,982854,982866,982877,982888,982905,982917,982928,982945,982956,982968,982985,982996,983007,983024,983036,980735,977919,973567,970495,967679,963327,960511,957439,953087,950271,947455,943103,940031,937215,934399,930047,926975,924159,1249023,2035455,2756351,3870463,4591359,5377791,6491903,7212799,7933695,8720127,9834239,10555135,11276031,12390143,13176575,13897471,15011583,15732479,16518911,16715510,16715493,16715482,16715470,16715453,16715442,16715431,16715414,16715402,16715391,16715374,16715363,16715351,16715340,16715323,16715312,16715300,16715283 data 16717077,16719893,16723989,16726805,16729621,16733973,16736789,16739605,16742421,16746517,16749333,16752149,16756501,16759317,16762133,16766229,16769045,16771861,16776213,16187157,15466261,14745365,13696789,12975893,12254997,11140885,10419989,9699093,8650517,7929621,7208725,6487829,5373717,4652821,3931925,2883349,2162453,1441557,1441573,1441584,1441595,1441612,1441623,1441634,1441645,1441661,1441672,1441683,1441700,1441711,1441722,1441738,1441749,1441760,1441777,1441788,1439487,1436671,1432575,1429759,1426943,1422591,1419775,1416959,1412863,1410047,1407231,1402879,1400063,1397247,1394431,1390335,1387519,1384703,1709567,2430463,3151359,4265471,4986367,5707263,6755839,7476735,8197631,8918527,10032639,10753535,11474431,12523007,13243903,13964799,15078911,15799807,16520703,16717302,16717286,16717275,16717264,16717247,16717236,16717225,16717209,16717198,16717187,16717170,16717159,16717148,16717137,16717121,16717110,16717099,16717082 data 16718876,16721436,16725532,16728348,16731164,16735260,16737820,16740636,16743452,16747548,16750108,16752924,16757020,16759836,16762396,16766492,16769308,16772124,16776220,16187164,15531804,14810908,13762332,13041436,12386076,11337500,10616604,9895708,8847132,8191772,7470876,6749980,5701404,5046044,4325148,3276572,2555676,1900316,1900332,1900342,1900353,1900369,1900380,1900390,1900401,1900417,1900428,1900438,1900454,1900465,1900476,1900492,1900502,1900513,1900529,1900540,1898239,1895679,1891583,1888767,1885951,1881855,1879295,1876479,1872383,1869567,1867007,1862911,1860095,1857279,1854719,1850623,1847807,1844991,2170111,2891007,3546367,4594943,5315839,6036735,7085311,7740671,8461567,9182463,10231039,10886399,11607295,12655871,13376767,14032127,15080703,15801599,16522495,16719094,16719078,16719068,16719057,16719041,16719030,16719020,16719004,16718993,16718982,16718966,16718956,16718945,16718934,16718918,16718908,16718897,16718881 data 16720418,16723234,16727074,16729890,16732450,16736546,16739106,16741666,16744482,16748322,16751138,16753698,16757538,16760354,16762914,16767010,16769570,16772130,16776226,16252706,15531810,14876450,13893410,13172514,12517154,11468578,10813218,10157858,9109282,8453922,7733026,7077666,6029090,5373730,4718370,3669794,3014434,2293538,2293554,2293564,2293575,2293590,2293601,2293611,2293621,2293637,2293647,2293658,2293673,2293683,2293694,2293709,2293720,2293730,2293746,2293756,2291711,2288895,2285055,2282239,2279679,2275839,2273023,2270463,2266367,2263807,2261247,2257151,2254591,2251775,2249215,2245375,2242559,2239999,2630399,3285759,3941119,4989695,5645055,6365951,7348991,8069887,8725247,9380607,10429183,11084543,11739903,12788479,13443839,14164735,15147775,15868671,16524031,16720631,16720615,16720605,16720594,16720579,16720569,16720558,16720543,16720532,16720522,16720507,16720496,16720486,16720475,16720460,16720450,16720439,16720424 data 16722217,16725033,16728873,16731433,16733993,16737833,16740393,16742953,16745513,16749353,16751913,16754473,16758313,16760873,16763433,16767273,16769833,16772393,16776233,16252713,15597353,14941993,13958953,13303593,12648233,11665193,11009833,10354473,9371433,8716073,8060713,7405353,6422313,5766953,5111593,4128553,3473193,2752297,2752313,2752323,2752333,2752348,2752358,2752368,2752378,2752393,2752403,2752413,2752428,2752438,2752448,2752463,2752473,2752483,2752498,2752508,2750463,2747903,2744063,2741503,2738943,2735103,2732543,2729983,2726143,2723583,2721023,2717183,2714623,2712063,2709503,2705663,2703103,2700543,3090943,3746303,4401663,5384703,6040063,6695423,7678463,8333823,8989183,9644543,10627583,11282943,11938303,12921343,13576703,14232063,15215103,15870463,16525823,16722423,16722408,16722398,16722388,16722373,16722363,16722353,16722338,16722328,16722318,16722303,16722293,16722283,16722273,16722258,16722248,16722238,16722223 data 16723759,16726319,16730159,16732719,16735023,16738863,16741423,16743727,16746287,16750127,16752687,16754991,16758831,16761391,16763695,16767535,16770095,16772399,16776239,16252719,15597359,15007535,14024495,13369135,12779311,11796271,11140911,10551087,9568047,8912687,8257327,7667503,6684463,6029103,5439279,4456239,3800879,3145519,3145534,3145544,3145554,3145568,3145578,3145588,3145597,3145612,3145622,3145632,3145646,3145656,3145666,3145680,3145690,3145700,3145714,3145724,3143679,3141119,3137535,3134975,3132415,3128831,3126271,3123711,3120127,3117567,3115007,3111423,3108863,3106303,3103743,3100159,3097599,3095039,3420159,4075519,4730879,5648383,6303743,6959103,7942143,8531967,9187327,9842687,10760191,11415551,12070911,12988415,13643775,14299135,15282175,15871999,16527359,16723959,16723945,16723935,16723925,16723910,16723901,16723891,16723876,16723867,16723857,16723842,16723833,16723823,16723813,16723798,16723789,16723779,16723764 data 16725815,16728119,16731703,16734007,16736567,16740151,16742455,16745015,16747319,16750903,16753463,16755767,16759351,16761911,16764215,16767799,16770359,16772663,16776247,16252727,15662903,15073079,14155575,13500215,12910391,11992887,11337527,10747703,9830199,9174839,8585015,7929655,7012151,6422327,5766967,4849463,4259639,3669815,3669829,3669838,3669847,3669862,3669871,3669880,3669890,3669904,3669913,3669923,3669937,3669946,3669956,3669970,3669979,3669989,3670003,3670012,3667967,3665663,3662079,3659519,3657215,3653631,3651327,3648767,3645183,3642879,3640319,3636735,3634431,3631871,3629567,3625983,3623423,3621119,3880959,4536319,5126143,6043647,6699007,7288831,8206335,8861695,9451519,10041343,10958847,11614207,12204031,13121535,13776895,14366719,15284223,15939583,16529407,16726007,16725993,16725984,16725974,16725960,16725951,16725942,16725927,16725918,16725909,16725895,16725885,16725876,16725866,16725852,16725843,16725833,16725819 data 16727614,16729918,16733246,16735550,16737854,16741438,16743742,16746046,16748350,16751934,16754238,16756542,16760126,16762430,16764734,16768062,16770622,16772926,16776254,16318270,15728446,15138622,14221118,13631294,13041470,12123966,11534142,10944318,10026814,9436990,8847166,8257342,7339838,6750014,6160190,5308222,4718398,4128574,4128587,4128596,4128605,4128619,4128628,4128637,4128646,4128660,4128669,4128678,4128692,4128701,4128710,4128723,4128732,4128742,4128755,4128764,4126975,4124671,4121087,4118783,4116479,4112895,4110591,4108287,4104703,4102399,4100095,4096767,4094463,4091903,4089599,4086271,4083967,4081663,4341503,4931327,5521151,6438655,7028479,7618303,8535807,9125631,9715455,10305279,11157247,11812607,12402431,13254399,13844223,14434047,15351551,15941375,16531199,16727800,16727786,16727777,16727768,16727754,16727745,16727736,16727722,16727713,16727704,16727691,16727682,16727673,16727663,16727650,16727641,16727632,16727618 data 16729413,16731461,16734789,16737093,16739397,16742725,16745029,16747333,16749381,16752709,16755013,16757317,16760645,16762949,16765253,16768581,16770629,16772933,16776261,16318277,15728453,15138629,14286661,13762373,13172549,12320581,11730757,11140933,10288965,9699141,9174853,8585029,7733061,7143237,6553413,5701445,5111621,4587333,4587346,4587354,4587363,4587376,4587385,4587394,4587403,4587416,4587424,4587433,4587446,4587455,4587464,4587477,4587486,4587494,4587508,4587516,4585727,4583423,4580095,4577791,4575743,4572159,4570111,4567807,4564479,4562175,4559871,4556543,4554239,4552191,4549887,4546559,4544255,4541951,4802047,5391871,5916159,6833663,7357951,7947775,8799743,9389567,9979391,10503679,11421183,11945471,12535295,13387263,13977087,14566911,15418879,16008703,16532991,16729592,16729579,16729570,16729561,16729548,16729539,16729531,16729518,16729509,16729500,16729487,16729478,16729469,16729461,16729448,16729439,16729430,16729417 data 16731212,16733260,16736588,16738636,16740684,16744012,16746060,16748364,16750412,16753740,16755788,16758092,16761164,16763468,16765516,16768844,16770892,16773196,16776268,16318284,15793996,15204172,14417740,13827916,13303628,12451660,11927372,11337548,10551116,9961292,9437004,8847180,8060748,7470924,6946636,6094668,5570380,5046092,5046104,5046113,5046121,5046134,5046142,5046150,5046159,5046172,5046180,5046188,5046201,5046209,5046218,5046230,5046239,5046247,5046260,5046268,5044479,5042431,5039103,5037055,5034751,5031679,5029375,5027327,5023999,5021951,5019647,5016575,5014271,5012223,5009919,5006847,5004543,5002495,5262591,5786879,6376703,7163135,7752959,8277247,9129215,9653503,10243327,10767615,11619583,12143871,12668159,13520127,14044415,14634239,15486207,16010495,16534783,16731384,16731372,16731363,16731355,16731342,16731334,16731325,16731313,16731304,16731296,16731283,16731275,16731266,16731258,16731245,16731237,16731228,16731216 data 16732754,16735058,16738130,16740178,16742226,16745298,16747346,16749394,16751442,16754514,16756818,16758866,16761938,16763986,16766034,16769106,16771154,16773202,16776274,16318290,15794002,15269714,14483282,13958994,13434706,12648274,12123986,11599698,10747730,10223442,9699154,9174866,8388434,7864146,7339858,6553426,6029138,5439314,5439327,5439335,5439343,5439355,5439363,5439371,5439379,5439391,5439399,5439408,5439420,5439428,5439436,5439448,5439456,5439464,5439476,5439484,5437695,5435647,5432575,5430527,5428479,5425407,5423359,5421311,5418239,5415935,5413887,5410815,5408767,5406719,5404671,5401599,5399551,5397503,5722879,6247167,6771455,7557887,8082175,8606463,9392895,9917183,10441471,10965759,11817727,12342015,12866303,13652735,14177023,14701311,15487743,16012031,16536319,16732920,16732908,16732900,16732892,16732880,16732872,16732864,16732852,16732844,16732835,16732823,16732815,16732807,16732799,16732787,16732779,16732771,16732759 data 16734553,16736601,16739673,16741721,16743513,16746585,16748633,16750681,16752473,16755545,16757593,16759641,16762457,16764505,16766553,16769369,16771417,16773465,16776537,16383833,15859545,15335257,14614361,14090073,13565785,12779353,12320601,11796313,11009881,10485593,10026841,9502553,8716121,8191833,7733081,6946649,6422361,5898073,5898085,5898093,5898101,5898112,5898120,5898128,5898136,5898147,5898155,5898163,5898174,5898182,5898190,5898202,5898209,5898217,5898229,5898237,5896703,5894655,5891583,5889535,5887743,5884671,5882623,5880831,5877759,5875711,5873663,5870847,5868799,5866751,5864703,5861887,5859839,5857791,6117887,6642175,7166463,7952895,8411647,8935935,9722367,10246655,10705407,11229695,12016127,12474879,12999167,13785599,14309887,14768639,15555071,16079359,16603647,16734713,16734701,16734693,16734685,16734674,16734666,16734658,16734647,16734639,16734631,16734620,16734612,16734604,16734596,16734585,16734577,16734569,16734557 data 16736352,16738400,16741216,16743264,16745056,16747872,16749920,16751712,16753504,16756576,16758368,16760160,16763232,16765024,16766816,16769888,16771680,16773472,16776544,16383840,15859552,15400800,14679904,14155616,13696864,12975968,12451680,11992928,11272032,10747744,10288992,9830240,9043808,8585056,8126304,7339872,6881120,6356832,6356844,6356851,6356859,6356870,6356877,6356885,6356892,6356903,6356911,6356918,6356929,6356937,6356944,6356955,6356963,6356970,6356981,6356989,6355455,6353407,6350591,6348799,6346751,6343935,6342143,6340095,6337279,6335487,6333439,6330623,6328831,6326783,6324991,6322175,6320127,6318335,6578431,7102719,7561471,8282367,8806655,9265407,9986303,10510591,10969343,11493631,12214527,12673279,13197567,13918463,14377215,14901503,15622399,16081151,16605439,16736505,16736494,16736486,16736479,16736468,16736460,16736453,16736442,16736434,16736427,16736416,16736408,16736401,16736393,16736382,16736375,16736367,16736356 data 16738151,16740199,16742759,16744551,16746343,16749159,16750951,16752743,16754535,16757351,16759143,16760935,16763751,16765543,16767335,16770151,16771943,16773735,16776551,16383847,15925095,15466343,14745447,14286695,13827943,13107047,12648295,12189543,11534183,11009895,10551143,10092391,9437031,8912743,8453991,7798631,7339879,6815591,6815602,6815609,6815616,6815627,6815634,6815641,6815648,6815659,6815666,6815673,6815684,6815691,6815698,6815709,6815716,6815723,6815734,6815741,6814207,6812415,6809599,6807807,6806015,6803455,6801407,6799615,6797055,6795263,6793215,6790655,6788863,6787071,6785023,6782463,6780671,6778879,7038975,7497727,7956479,8677375,9136127,9594879,10315775,10774527,11233279,11692031,12412927,12871679,13330431,14051327,14510079,14968831,15689727,16148479,16607231,16738297,16738287,16738279,16738272,16738262,16738255,16738247,16738237,16738230,16738223,16738212,16738205,16738198,16738191,16738180,16738173,16738166,16738155 data 16740207,16741743,16744303,16746095,16747887,16750447,16752239,16754031,16755567,16758383,16759919,16761711,16764271,16766063,16767855,16770415,16772207,16773999,16776559,16383855,15990639,15531887,14876527,14417775,13959023,13303663,12844911,12386159,11730799,11272047,10878831,10420079,9764719,9305967,8847215,8191855,7733103,7339887,7339897,7339903,7339910,7339920,7339927,7339934,7339941,7339951,7339958,7339964,7339975,7339981,7339988,7339998,7340005,7340012,7340022,7340029,7338495,7336959,7334143,7332607,7330815,7328255,7326463,7324671,7322111,7320319,7318527,7315967,7314431,7312639,7310847,7308287,7306495,7304703,7499775,7958527,8351743,9072639,9465855,9924607,10579967,11038719,11497471,11956223,12611583,13070335,13463551,14184447,14577663,15036415,15691775,16150527,16609279,16740345,16740335,16740328,16740322,16740312,16740305,16740298,16740288,16740281,16740274,16740264,16740257,16740251,16740244,16740234,16740227,16740220,16740210 data 16742006,16743542,16746102,16747638,16749430,16751734,16753526,16755062,16756854,16759158,16760950,16762486,16765046,16766582,16768374,16770678,16772470,16774006,16776566,16449398,15990646,15597430,14942070,14548854,14090102,13500278,13041526,12648310,11992950,11599734,11140982,10747766,10092406,9699190,9240438,8585078,8191862,7798646,7798655,7798662,7798668,7798678,7798684,7798691,7798697,7798707,7798713,7798720,7798729,7798736,7798742,7798752,7798758,7798765,7798774,7798781,7797503,7795711,7793407,7791615,7790079,7787519,7785983,7784191,7781631,7780095,7778559,7775999,7774207,7772671,7771135,7768575,7766783,7765247,7960319,8353535,8812287,9402111,9860863,10254079,10909439,11302655,11761407,12154623,12809983,13203199,13661951,14251775,14710527,15103743,15759103,16152319,16611071,16742138,16742128,16742122,16742115,16742105,16742099,16742093,16742083,16742076,16742070,16742060,16742054,16742047,16742041,16742031,16742025,16742018,16742009 data 16743805,16745341,16747645,16749181,16750717,16753021,16754557,16756093,16757885,16760189,16761725,16763261,16765565,16767101,16768637,16771197,16772733,16774269,16776573,16449405,16056189,15662973,15073149,14614397,14221181,13631357,13238141,12844925,12255101,11861885,11403133,11009917,10420093,10026877,9633661,9043837,8650621,8257405,8257414,8257420,8257426,8257435,8257441,8257447,8257453,8257463,8257469,8257475,8257484,8257490,8257496,8257505,8257512,8257518,8257527,8257533,8256255,8254719,8252415,8250623,8249087,8246783,8245247,8243711,8241407,8239871,8238335,8235775,8234239,8232703,8231167,8228863,8227327,8225791,8420863,8814079,9207295,9797119,10190335,10583551,11173375,11632127,12025343,12418559,13008383,13401599,13794815,14384639,14777855,15236607,15826431,16219647,16612863,16743930,16743921,16743915,16743908,16743899,16743893,16743887,16743878,16743872,16743866,16743857,16743850,16743844,16743838,16743829,16743823,16743817,16743808 data 16745090,16746626,16748930,16750466,16752002,16754306,16755586,16757122,16758658,16760962,16762498,16763778,16766082,16767618,16769154,16771458,16772738,16774274,16776578,16449410,16056194,15662978,15138690,14745474,14352258,13762434,13369218,13041538,12451714,12058498,11665282,11272066,10747778,10354562,9961346,9371522,8978306,8585090,8585099,8585105,8585111,8585120,8585126,8585131,8585137,8585146,8585152,8585158,8585166,8585172,8585178,8585187,8585193,8585198,8585207,8585213,8583935,8582399,8580351,8578815,8577279,8574975,8573439,8571903,8569855,8568319,8566783,8564479,8562943,8561663,8560127,8557823,8556287,8554751,8749823,9143039,9536255,10126079,10519295,10912511,11436799,11830015,12223231,12616447,13206271,13533951,13927167,14516991,14910207,15303423,15827711,16220927,16614143,16745210,16745201,16745196,16745190,16745181,16745175,16745169,16745161,16745155,16745149,16745140,16745134,16745128,1674512