Download
/*
 * SICSTUS CLPFD DEMONSTRATION PROGRAM
 * Purpose   : Perfect Squares
 * Author    : Mats Carlsson
 *
 * | ?- squares(id048).
 */
 
:- module(squares, [squares/1]).

:- use_module(library(lists)).
:- use_module(library(clpfd)).

squares(ID) :-
	findall(1, (constraints(ID, Xs, Ys, Sizes),search(cp(0.5),Xs,Ys,Sizes)), L),
	length(L, N),
	data(ID, Nsq, WH, DSizes),
	format('number of solutions = ~d\n', [N]),
	format('placement space = ~dx~d\n', [WH,WH]),
	format('~d squares of size = ~w\n', [Nsq,DSizes]).

search(cp(W), Xs, Ys, Sizes) :-
	by_intervals(Xs, Sizes, W),
	labeling([bisect], Xs),
	by_intervals(Ys, Sizes, W),
	labeling([bisect], Ys).

constraints(ID, Xs, Ys, Sizes) :-
	data(ID, _, Size, Data),
	sort(Data, Rev),
	reverse(Rev, Sizes),
	(   foreach(X,Xs),
	    foreach(Y,Ys),
	    foreach(S,Sizes),
	    foreach(S-[X,Y],L1),
	    foreach(object(I,I,[X,Y]),Objs),
	    foreach(sbox(I,[0,0],[S,S]),Shapes),
	    count(I,1,_),
	    param(Size)
	do  Sd is Size-S+1,
	    X in 1..Sd,
	    Y in 1..Sd
	),
	keysort(L1, L2),
	keyclumped(L2, L3),
	(   foreach(_-L,L3)
	do  (L=[_] -> true ; lex_chain(L, [op(#<)]))
	),
	geost(Objs, Shapes, [cumulative(true),
			     disjunctive(true),
			     longest_hole(true,1000),
			     parconflict(true),
			     visavis_init(true), 
			     dynamic_programming(true)]).

by_intervals([], _, _).
by_intervals([X|Xs], [N|Ns], W) :-
	by_interval(X, N, W),
	by_intervals(Xs, Ns, W).

by_interval(X, _,   _) :-
	integer(X), !.
by_interval(X, Len, W) :-
	fd_min(X, Min),
	fd_max(X, Max),
	Mid is (Min+Max)>>1,
	(   Max-Min < Len*W -> true
	;   X in Min..Mid,
	    by_interval(X, Len, W)
	;   Mid1 is Mid+1,
	    X in Mid1..Max,
	    by_interval(X, Len, W)
	).

:- dynamic data/4.
data(id001,21,112,[2,4,6,7,8,9,11,15,16,17,18,19,24,25,27,29,33,35,37,42,50]).
data(id002,22,110,[2,3,4,6,7,8,12,13,14,15,16,17,18,21,22,23,24,26,27,28,50,60]).
data(id003,22,110,[1,2,3,4,6,8,9,12,14,16,17,18,19,21,22,23,24,26,27,28,50,60]).
data(id004,22,139,[1,2,3,4,7,8,10,17,18,20,21,22,24,27,28,29,30,31,32,38,59,80]).
data(id005,22,147,[1,3,4,5,8,9,17,20,21,23,25,26,29,31,32,40,43,44,47,48,52,55]).
data(id006,22,147,[2,4,8,10,11,12,15,19,21,22,23,25,26,32,34,37,41,43,45,47,55,59]).
data(id007,22,154,[2,5,9,11,16,17,19,21,22,24,26,30,31,33,35,36,41,46,47,50,52,61]).
data(id008,22,172,[1,2,3,4,9,11,13,16,17,18,19,22,24,33,36,38,39,42,44,53,75,97]).
data(id009,22,192,[4,8,9,10,12,14,17,19,26,28,31,35,36,37,41,47,49,57,59,62,71,86]).
data(id010,23,110,[1,2,3,4,5,7,8,10,12,13,14,15,16,19,21,28,29,31,32,37,38,41,44]).
data(id011,23,139,[1,2,7,8,12,13,14,15,16,18,19,20,21,22,24,26,27,28,32,33,38,59,80]).
data(id012,23,140,[1,2,3,4,5,8,10,13,16,19,20,23,27,28,29,31,33,38,42,45,48,53,54]).
data(id013,23,140,[2,3,4,7,8,9,12,15,16,18,22,23,24,26,28,30,33,36,43,44,47,50,60]).
data(id014,23,145,[1,2,3,4,6,8,9,12,15,20,22,24,25,26,27,29,30,31,32,34,36,61,84]).
data(id015,23,180,[2,4,8,10,11,12,15,19,21,22,23,25,26,32,33,34,37,41,43,45,47,88,92]).
data(id016,23,188,[2,4,8,10,11,12,15,19,21,22,23,25,26,32,33,34,37,45,47,49,51,92,96]).
data(id017,23,208,[1,3,4,9,10,11,12,16,17,18,22,23,24,40,41,60,62,65,67,70,71,73,75]).
data(id018,23,215,[1,3,4,9,10,11,12,16,17,18,22,23,24,40,41,60,66,68,70,71,74,76,79]).
data(id019,23,228,[2,7,9,10,15,16,17,18,22,23,25,28,36,39,42,56,57,68,69,72,73,87,99]).
data(id020,23,257,[2,3,9,11,14,15,17,20,22,24,28,29,32,33,49,55,57,60,63,66,79,123,134]).
data(id021,23,332,[1,15,17,24,26,30,31,38,47,48,49,50,53,56,58,68,83,89,91,112,120,123,129]).
data(id022,24,120,[3,4,5,6,8,9,10,12,13,14,15,16,17,19,20,23,25,32,33,34,40,41,46,47]).
data(id023,24,186,[2,3,4,7,8,9,12,15,16,18,22,23,24,26,28,30,33,36,43,46,47,60,90,96]).
data(id024,24,194,[2,3,7,9,10,16,17,18,19,20,23,25,28,34,36,37,42,53,54,61,65,68,69,72]).
data(id025,24,195,[2,4,7,10,11,16,17,18,21,26,27,30,39,41,42,45,47,49,52,53,54,61,63,80]).
data(id026,24,196,[1,2,5,10,11,15,17,18,20,21,24,26,29,31,32,34,36,40,44,47,48,51,91,105]).
data(id027,24,201,[1,3,4,6,9,10,11,12,17,18,20,21,22,23,26,38,40,46,50,52,53,58,98,103]).
data(id028,24,201,[1,4,5,8,9,10,11,15,16,18,19,20,22,24,26,39,42,44,49,52,54,56,93,108]).
data(id029,24,203,[1,2,5,10,11,15,17,18,20,21,24,26,29,31,32,34,36,40,44,48,54,58,98,105]).
data(id030,24,247,[3,5,6,9,12,14,19,23,24,25,28,32,34,36,40,45,46,48,56,62,63,66,111,136]).
data(id031,24,253,[2,4,5,9,13,18,20,23,24,27,28,31,38,40,44,50,61,70,72,77,79,86,88,104]).
data(id032,24,255,[3,5,10,11,16,17,20,22,23,25,26,27,28,32,41,44,52,53,59,63,65,74,118,137]).
data(id033,24,288,[2,7,9,10,15,16,17,18,22,23,25,28,36,39,42,56,57,60,68,72,73,87,129,159]).
data(id034,24,288,[1,5,7,8,9,14,17,20,21,26,30,32,34,36,48,51,54,59,64,69,72,93,123,165]).
data(id035,24,290,[2,3,8,9,11,12,14,17,21,30,31,33,40,42,45,48,59,61,63,65,82,84,124,166]).
data(id036,24,292,[1,2,3,8,12,15,16,17,20,22,24,26,29,33,44,54,57,60,63,67,73,102,117,175]).
data(id037,24,304,[3,5,7,11,12,17,20,22,25,29,35,47,48,55,56,57,69,72,76,92,96,100,116,132]).
data(id038,24,304,[3,4,7,12,16,20,23,24,27,28,30,32,33,36,37,44,53,57,72,76,85,99,129,175]).
data(id039,24,314,[2,4,11,12,16,17,18,19,28,29,40,44,47,59,62,64,65,78,79,96,97,105,113,139]).
data(id040,24,316,[3,9,10,12,13,14,15,23,24,33,36,37,48,52,54,55,57,65,66,78,79,93,144,172]).
data(id041,24,326,[1,6,10,11,14,15,18,24,29,32,43,44,53,56,63,65,71,80,83,101,104,106,119,142]).
data(id042,24,423,[2,9,15,17,27,29,31,32,33,36,47,49,50,60,62,77,105,114,123,127,128,132,168,186]).
data(id043,24,435,[1,2,8,10,13,19,23,33,44,45,56,74,76,78,80,88,93,100,112,131,142,143,150,192]).
data(id044,24,435,[3,5,9,11,12,21,24,27,30,44,45,50,54,55,63,95,101,112,117,123,134,140,178,200]).
data(id045,24,459,[8,9,10,11,16,30,36,38,45,55,57,65,68,84,95,98,100,116,117,126,135,144,180,198]).
data(id046,24,459,[4,6,9,10,17,21,23,25,31,33,36,38,45,50,83,115,117,126,133,135,144,146,180,198]).
data(id047,24,479,[5,6,17,23,24,26,28,29,35,43,44,52,60,68,77,86,130,140,150,155,160,164,174,175]).
data(id048,25,147,[3,4,5,6,8,9,10,12,13,14,15,16,17,19,20,23,25,27,32,33,34,40,41,73,74]).
data(id049,25,208,[1,2,3,4,5,7,8,11,12,17,18,24,26,28,29,30,36,39,44,45,50,59,60,89,119]).
data(id050,25,213,[3,5,6,7,13,16,17,20,21,23,24,25,26,28,31,35,36,47,49,56,58,74,76,81,90]).
data(id051,25,215,[1,4,6,7,11,15,24,26,27,33,37,39,40,41,42,43,45,47,51,55,60,62,63,69,83]).
data(id052,25,216,[1,2,3,4,5,7,8,11,16,17,18,19,25,30,32,33,39,41,45,49,54,59,64,103,113]).
data(id053,25,236,[1,2,4,9,11,12,13,14,15,16,19,24,38,40,44,46,47,48,59,64,65,70,81,85,107]).
data(id054,25,242,[1,3,6,7,9,13,14,16,17,19,23,25,26,28,30,31,47,51,54,57,60,64,67,111,131]).
data(id055,25,244,[1,2,4,5,7,10,15,17,19,20,21,22,26,27,30,37,40,41,45,65,66,68,70,110,134]).
data(id056,25,252,[4,7,10,11,12,13,23,25,29,31,32,34,36,37,38,40,42,44,62,67,68,71,77,108,113]).
data(id057,25,253,[2,4,5,6,9,10,12,14,20,24,27,35,36,37,38,42,43,45,50,54,63,66,70,120,133]).
data(id058,25,260,[1,4,6,7,10,15,24,26,27,28,29,31,33,34,37,38,44,65,70,71,77,78,83,100,112]).
data(id059,25,264,[3,7,8,12,16,18,19,20,22,24,26,31,34,37,38,40,42,53,54,61,64,69,70,130,134]).
data(id060,25,264,[3,8,12,13,16,18,20,21,22,24,26,29,34,38,40,42,43,47,54,59,64,70,71,130,134]).
data(id061,25,264,[1,3,4,6,9,10,11,12,16,17,18,20,21,22,39,42,54,56,61,66,68,69,73,129,135]).
data(id062,25,265,[1,3,4,6,9,10,11,12,16,17,18,20,21,22,39,42,54,56,62,66,68,69,74,130,135]).
data(id063,25,273,[1,4,8,10,11,12,17,19,21,22,27,29,30,33,37,43,52,62,65,86,88,89,91,96,120]).
data(id064,25,273,[1,6,9,14,16,17,18,21,22,23,25,31,32,38,44,46,48,50,54,62,65,68,78,133,140]).
data(id065,25,275,[2,3,7,13,17,24,25,31,33,34,35,37,41,49,51,53,55,60,68,71,74,81,94,100,107]).
data(id066,25,276,[1,5,8,9,11,18,19,21,30,36,41,44,45,46,47,51,53,58,63,69,71,84,87,105,120]).
data(id067,25,280,[5,6,11,17,18,20,21,24,27,28,32,34,41,42,50,53,54,55,68,78,85,88,95,97,117]).
data(id068,25,280,[2,3,7,8,14,18,30,36,37,39,44,50,52,54,56,60,63,64,65,72,75,78,79,96,106]).
data(id069,25,284,[1,2,11,12,14,16,18,19,23,26,29,37,38,39,40,42,59,68,69,77,78,97,106,109,110]).
data(id070,25,286,[1,4,5,7,10,12,15,16,20,23,28,30,32,33,35,37,53,54,64,68,74,79,80,133,153]).
data(id071,25,289,[2,3,5,8,13,14,17,20,21,32,36,41,50,52,60,61,62,68,74,76,83,87,100,102,104]).
data(id072,25,289,[2,3,4,5,7,12,16,17,19,21,23,25,29,31,32,44,57,64,65,68,72,76,84,140,149]).
data(id073,25,290,[1,2,10,11,13,14,15,17,18,28,29,34,36,38,50,56,60,69,77,80,85,91,94,111,119]).
data(id074,25,293,[5,6,11,17,18,20,21,24,27,28,32,34,41,42,50,54,55,66,68,78,85,88,95,110,130]).
data(id075,25,297,[2,7,8,9,10,15,16,17,18,23,25,26,28,36,38,43,53,60,61,68,69,77,99,137,160]).
data(id076,25,308,[1,3,4,7,10,12,13,23,25,34,37,38,39,43,44,45,62,77,79,85,87,108,113,115,116]).
data(id077,25,308,[1,5,6,7,8,9,13,16,19,28,33,36,38,43,45,48,70,71,73,84,86,102,104,120,133]).
data(id078,25,309,[7,8,14,16,23,24,25,26,31,33,34,39,48,56,59,60,62,70,76,82,92,100,101,108,117]).
data(id079,25,311,[2,7,8,9,10,15,16,17,18,23,25,26,28,36,38,43,53,60,61,68,83,91,99,151,160]).
data(id080,25,314,[1,6,7,11,16,22,26,29,32,36,38,44,51,53,64,69,70,73,74,75,85,87,101,116,128]).
data(id081,25,316,[1,3,9,12,21,26,30,33,34,35,38,39,40,41,53,56,59,69,79,85,96,103,111,117,120]).
data(id082,25,317,[1,5,6,7,8,9,16,17,19,32,37,40,42,47,49,52,59,75,81,92,94,110,112,113,126]).
data(id083,25,320,[2,7,8,9,12,14,15,21,23,35,38,44,46,49,53,54,56,63,96,101,103,105,108,112,116]).
data(id084,25,320,[3,8,9,11,17,18,22,25,26,27,29,30,31,33,35,49,51,67,72,73,80,85,95,152,168]).
data(id085,25,320,[1,4,6,7,8,13,14,16,24,28,30,33,34,38,41,42,57,60,69,78,81,90,92,150,170]).
data(id086,25,320,[3,4,6,8,9,14,15,16,24,28,30,31,34,38,39,42,59,60,71,78,79,90,92,150,170]).
data(id087,25,322,[3,4,8,9,10,16,18,20,22,23,24,28,31,38,44,47,64,65,68,76,80,81,97,144,178]).
data(id088,25,322,[3,4,8,10,15,16,18,19,20,22,24,28,35,38,44,53,59,64,68,76,80,85,93,144,178]).
data(id089,25,323,[2,3,4,7,10,13,15,18,23,32,34,35,36,42,46,50,57,60,66,72,78,87,98,159,164]).
data(id090,25,323,[3,8,9,11,17,18,22,25,26,27,29,30,31,33,35,49,51,67,72,73,83,88,95,155,168]).
data(id091,25,323,[2,6,9,11,13,14,18,19,20,23,27,28,29,42,46,48,60,64,72,74,79,82,98,146,177]).
data(id092,25,325,[3,5,6,11,12,13,18,23,25,28,32,37,40,43,45,46,51,79,92,99,103,108,112,114,134]).
data(id093,25,326,[1,4,8,10,12,16,21,22,24,27,28,35,36,37,38,46,49,68,70,75,88,90,93,158,168]).
data(id094,25,327,[2,9,10,12,13,16,19,21,23,26,36,44,46,52,55,61,62,74,84,87,100,103,104,120,140]).
data(id095,25,328,[2,3,4,7,8,10,14,17,26,27,28,36,38,40,42,45,53,58,73,74,79,94,102,152,176]).
data(id096,25,334,[1,4,8,10,12,16,21,22,24,27,28,35,36,37,38,46,49,68,75,78,88,93,98,166,168]).
data(id097,25,336,[2,3,4,7,8,10,14,17,26,27,28,36,38,40,45,50,53,58,73,74,79,94,110,152,184]).
data(id098,25,338,[1,4,8,10,12,16,19,22,24,25,28,36,37,38,39,46,53,68,70,73,94,96,101,164,174]).
data(id099,25,338,[4,5,8,10,12,15,16,21,22,24,28,33,36,38,43,46,57,68,70,77,94,96,97,164,174]).
data(id100,25,340,[1,4,5,6,11,13,16,17,22,24,44,46,50,51,52,53,61,64,66,79,84,85,92,169,171]).
data(id101,25,344,[2,3,8,11,14,17,19,21,23,25,27,36,39,44,48,53,56,71,77,83,86,89,98,169,175]).
data(id102,25,359,[7,8,9,10,14,17,18,23,25,27,29,31,40,41,43,46,69,74,82,85,90,98,102,172,187]).
data(id103,25,361,[2,6,7,8,9,14,20,22,26,27,32,34,36,47,49,56,66,67,74,82,89,98,107,156,205]).
data(id104,25,363,[1,4,6,12,13,20,21,25,26,27,28,32,37,41,45,53,58,64,69,91,97,102,106,155,208]).
data(id105,25,364,[2,3,4,6,8,9,13,14,16,19,23,24,28,29,52,57,64,75,82,91,98,100,109,173,191]).
data(id106,25,367,[1,4,6,12,13,20,21,25,26,27,28,32,37,41,49,53,58,64,69,91,97,102,110,155,212]).
data(id107,25,368,[1,6,15,16,17,18,22,25,31,33,39,42,45,46,47,48,51,69,72,88,91,96,112,160,208]).
data(id108,25,371,[1,2,7,8,20,21,22,24,26,28,30,38,43,46,50,51,64,65,70,90,95,102,109,160,211]).
data(id109,25,373,[3,6,7,8,15,17,22,23,31,32,35,41,43,60,62,68,79,87,104,105,114,120,121,138,148]).
data(id110,25,378,[2,3,10,17,18,20,21,22,24,27,31,38,41,48,51,56,68,78,80,85,87,96,117,165,213]).
data(id111,25,378,[1,2,7,13,15,17,18,25,27,29,30,31,42,43,46,56,61,68,73,93,100,105,112,161,217]).
data(id112,25,380,[4,7,17,18,19,20,21,26,31,33,35,40,45,48,49,60,67,73,79,81,87,107,113,186,194]).
data(id113,25,380,[4,5,6,9,13,15,16,17,22,24,33,38,44,49,50,56,60,67,82,84,95,108,121,177,203]).
data(id114,25,381,[12,13,21,23,25,27,35,36,42,45,54,57,59,60,79,82,84,85,92,95,96,100,110,111,186]).
data(id115,25,384,[1,4,8,9,11,12,19,21,27,32,35,44,45,46,47,51,60,67,84,89,96,108,120,180,204]).
data(id116,25,384,[1,4,8,9,11,12,15,17,19,25,26,31,32,37,44,57,60,81,84,96,99,108,120,180,204]).
data(id117,25,384,[3,5,7,11,12,17,20,22,25,29,35,47,48,55,56,57,69,72,76,80,96,100,116,172,212]).
data(id118,25,385,[1,2,7,13,15,17,18,25,27,29,30,31,43,46,49,56,61,68,73,93,100,105,119,161,224]).
data(id119,25,392,[4,7,8,15,23,26,29,30,31,32,34,43,48,55,56,68,77,88,98,106,116,135,141,151,153]).
data(id120,25,392,[10,12,14,16,19,21,25,27,31,35,39,41,51,52,54,55,73,92,98,115,121,123,129,148,171]).
data(id121,25,392,[1,4,5,8,11,14,16,21,22,24,27,28,30,31,52,64,81,83,96,97,98,99,114,195,197]).
data(id122,25,393,[4,8,16,20,23,24,25,27,29,37,44,45,50,53,64,66,68,69,73,85,91,101,116,186,207]).
data(id123,25,396,[1,4,5,14,16,32,35,36,46,47,48,49,68,69,73,93,94,97,99,104,110,111,125,126,160]).
data(id124,25,396,[1,4,5,8,11,14,16,21,22,24,27,28,30,31,52,64,81,83,98,99,100,101,114,197,199]).
data(id125,25,396,[3,8,9,11,14,16,17,18,31,32,41,45,48,56,60,66,73,75,81,82,98,99,117,180,216]).
data(id126,25,398,[2,6,7,11,15,17,23,28,29,39,44,46,53,56,58,65,68,99,100,119,120,134,144,145,154]).
data(id127,25,400,[3,6,21,23,24,26,29,35,37,40,41,47,53,55,64,76,79,81,99,100,121,122,137,142,179]).
data(id128,25,404,[3,6,7,14,17,20,21,26,28,31,32,39,46,53,54,68,71,80,88,92,100,111,113,199,205]).
data(id129,25,404,[4,7,10,11,12,13,16,18,20,23,25,28,29,32,47,62,70,88,93,96,101,114,127,189,215]).
data(id130,25,408,[2,3,7,13,16,18,20,27,30,33,41,43,46,52,54,57,72,79,84,100,105,108,116,195,213]).
data(id131,25,412,[3,11,12,15,21,26,32,39,43,47,54,60,68,73,83,85,86,87,89,99,114,129,139,144,169]).
data(id132,25,413,[5,7,17,20,34,38,39,48,56,57,59,60,64,65,70,72,75,81,105,106,110,125,148,153,155]).
data(id133,25,416,[2,4,7,11,13,24,25,30,35,37,39,40,44,58,62,65,82,104,112,120,128,135,143,153,169]).
data(id134,25,416,[1,2,3,8,12,15,16,17,20,22,24,26,29,31,64,75,85,88,91,94,98,104,133,179,237]).
data(id135,25,421,[1,2,4,5,7,9,12,16,20,22,23,35,38,48,56,83,94,104,116,118,128,140,150,153,177]).
data(id136,25,421,[5,11,12,17,18,20,23,26,29,36,38,40,44,51,55,59,72,92,97,102,105,107,117,199,222]).
data(id137,25,422,[2,4,7,13,16,18,20,23,28,29,38,43,46,51,59,68,74,79,86,93,100,111,132,179,243]).
data(id138,25,425,[3,4,5,9,10,12,13,14,16,19,20,31,46,48,56,79,102,104,116,126,128,140,142,157,181]).
data(id139,25,441,[5,6,7,16,18,23,24,27,38,39,47,51,52,62,66,72,80,84,92,101,102,118,120,219,222]).
data(id140,25,454,[1,2,11,17,29,34,35,46,48,51,53,55,63,69,79,87,88,91,109,134,136,143,150,161,184]).
data(id141,25,456,[5,7,10,11,13,15,18,19,31,49,50,52,59,60,63,72,77,115,128,129,135,142,148,179,193]).
data(id142,25,465,[6,9,13,14,19,21,24,25,31,32,53,56,64,73,74,82,91,111,125,127,137,139,153,173,201]).
data(id143,25,472,[7,9,13,15,26,34,35,44,47,51,58,61,65,81,87,103,104,115,118,123,128,133,136,148,221]).
data(id144,25,477,[3,5,12,16,19,22,25,26,37,41,49,72,76,77,82,86,87,115,117,135,141,149,167,169,193]).
data(id145,25,492,[2,9,15,17,27,29,31,32,33,36,47,49,50,60,62,69,77,105,114,123,127,128,132,237,255]).
data(id146,25,492,[3,5,9,11,12,21,24,27,30,44,45,50,54,55,57,63,95,101,112,117,123,134,140,235,257]).
data(id147,25,503,[4,15,16,19,22,23,25,27,33,34,50,62,67,87,88,93,100,113,135,143,149,157,167,179,211]).
data(id148,25,506,[1,7,24,26,33,35,40,45,47,51,55,69,87,90,93,96,117,125,134,145,146,147,160,162,199]).
data(id149,25,507,[2,3,7,11,13,15,28,34,43,50,57,64,80,83,86,89,107,115,116,127,149,163,175,183,217]).
data(id150,25,512,[1,7,8,9,10,15,22,32,34,46,51,65,69,71,91,105,109,111,136,139,152,157,173,200,203]).
data(id151,25,512,[1,6,7,8,9,13,17,19,35,45,47,57,62,73,88,93,104,107,128,130,151,163,184,198,221]).
data(id152,25,513,[6,9,10,17,19,24,28,29,37,39,64,65,68,81,98,99,102,115,145,147,153,159,165,189,201]).
data(id153,25,517,[5,6,7,16,20,24,28,33,38,43,63,71,80,83,86,92,98,122,132,148,164,166,173,180,205]).
data(id154,25,524,[9,12,20,21,33,35,37,39,54,55,61,62,87,90,98,101,125,132,135,141,145,159,163,164,220]).
data(id155,25,527,[11,12,13,14,19,30,41,47,50,52,59,68,71,81,94,97,107,132,147,151,155,169,175,183,197]).
data(id156,25,528,[2,9,15,17,27,29,31,32,33,36,47,49,50,60,62,69,77,123,127,128,132,141,150,255,273]).
data(id157,25,529,[9,12,20,21,33,35,37,39,54,55,61,62,87,90,98,101,125,132,140,141,145,159,163,169,225]).
data(id158,25,531,[6,9,10,17,19,24,29,31,39,40,67,68,71,84,101,102,105,118,151,153,159,165,171,195,207]).
data(id159,25,532,[16,18,26,27,33,39,41,50,51,55,69,71,84,87,91,94,132,133,141,143,164,168,169,173,195]).
data(id160,25,534,[11,13,15,17,18,27,38,44,49,52,60,61,68,81,87,94,107,135,149,153,159,171,174,189,210]).
data(id161,25,535,[2,8,26,27,36,41,45,57,62,77,88,95,97,99,101,102,109,114,117,118,141,147,168,192,226]).
data(id162,25,536,[1,8,21,30,31,32,33,41,44,46,49,55,57,61,84,91,113,134,137,139,150,155,176,205,247]).
data(id163,25,536,[3,5,9,11,12,21,24,27,30,44,45,50,54,55,57,63,95,117,123,134,140,145,156,257,279]).
data(id164,25,540,[1,7,8,9,10,14,19,34,36,51,58,69,81,83,97,109,111,115,136,149,152,167,183,208,221]).
data(id165,25,540,[6,13,15,25,28,36,43,47,55,57,58,59,60,65,82,89,91,107,124,127,144,163,183,233,250]).
data(id166,25,540,[8,9,10,11,16,30,36,38,45,55,57,65,68,81,84,95,98,100,116,117,126,135,144,261,279]).
data(id167,25,540,[8,9,10,11,16,30,36,38,45,55,57,65,68,81,84,95,98,100,116,117,126,135,144,261,279]).
data(id168,25,540,[4,6,9,10,17,21,23,25,31,33,36,38,45,50,81,83,115,117,126,133,135,144,146,261,279]).
data(id169,25,540,[4,6,9,10,17,21,23,25,31,33,36,38,45,50,81,83,115,117,126,133,135,144,146,261,279]).
data(id170,25,541,[3,4,11,13,16,17,21,25,26,44,46,64,75,86,87,97,106,109,133,141,165,185,191,215,217]).
data(id171,25,541,[3,5,27,32,33,37,47,50,53,56,57,69,71,78,97,98,109,111,126,144,165,169,183,189,232]).
data(id172,25,544,[1,7,24,26,33,35,40,45,47,51,55,69,87,90,93,96,117,125,134,145,147,184,198,199,200]).
data(id173,25,544,[6,8,20,21,23,41,42,48,59,61,77,80,81,85,90,92,93,102,115,132,139,168,198,207,244]).
data(id174,25,547,[3,5,16,22,26,27,35,47,49,59,67,71,72,85,87,102,103,111,137,144,150,197,200,203,207]).
data(id175,25,549,[4,10,14,24,26,31,34,36,38,40,43,48,59,63,74,89,97,105,117,124,136,152,156,241,308]).
data(id176,25,550,[1,2,5,13,19,20,25,30,39,43,58,59,73,75,76,90,95,103,116,128,130,132,172,262,288]).
data(id177,25,550,[1,11,16,23,24,27,29,36,41,43,44,47,59,70,71,80,99,103,111,116,128,156,167,227,323]).
data(id178,25,551,[3,5,24,25,26,30,35,36,39,40,42,57,68,76,94,109,120,128,152,162,166,175,176,200,223]).
data(id179,25,552,[5,17,18,22,25,27,32,33,39,59,62,87,91,100,102,111,112,135,137,149,165,168,183,201,204]).
data(id180,25,552,[1,3,4,7,8,9,10,15,18,19,21,41,52,54,73,93,95,123,125,136,138,153,168,261,291]).
data(id181,25,556,[6,8,10,13,19,25,32,37,49,54,58,76,84,91,92,100,107,128,145,156,165,185,195,205,206]).
data(id182,25,556,[3,12,13,15,19,23,27,34,35,39,42,45,48,52,53,87,140,145,158,166,171,184,189,201,227]).
data(id183,25,556,[3,12,13,15,19,23,27,34,35,39,42,45,48,52,53,87,140,145,158,166,171,184,189,201,227]).
data(id184,25,556,[1,5,7,8,9,10,12,14,20,27,31,43,47,50,74,93,97,121,125,139,143,153,167,264,292]).
data(id185,25,562,[2,3,5,8,13,19,20,29,33,47,53,54,64,65,76,93,119,123,142,157,161,180,184,221,259]).
data(id186,25,570,[3,9,10,33,36,38,40,42,50,51,60,69,72,75,77,90,113,140,141,151,152,189,200,229,230]).
data(id187,25,575,[4,6,14,16,31,39,63,69,74,81,88,103,107,111,115,120,131,132,133,147,156,159,164,198,218]).
data(id188,25,576,[1,4,9,11,15,19,22,34,36,53,60,76,82,84,104,126,127,128,153,156,165,174,183,219,237]).
data(id189,25,576,[8,9,10,11,16,30,36,38,45,55,57,65,68,81,84,95,98,100,116,135,144,153,162,279,297]).
data(id190,25,576,[4,6,9,10,17,21,23,25,31,33,36,38,45,50,81,83,115,133,135,144,146,153,162,279,297]).
data(id191,25,580,[2,5,7,10,12,13,19,21,22,29,36,40,61,65,74,101,135,139,161,179,183,192,205,209,236]).
data(id192,25,580,[5,6,11,13,16,17,21,25,34,44,54,68,80,88,100,112,120,135,142,145,170,173,195,215,265]).
data(id193,25,580,[11,12,16,17,29,32,39,41,53,55,59,60,68,70,81,84,92,124,125,128,129,156,171,280,300]).
data(id194,25,593,[13,14,15,35,48,51,55,67,73,79,83,91,94,105,109,116,119,124,133,150,171,173,196,217,226]).
data(id195,25,595,[4,13,18,19,22,35,40,48,58,61,62,77,78,82,83,86,118,149,163,168,187,192,202,206,240]).
data(id196,25,601,[7,8,25,34,41,42,46,48,54,55,62,70,71,74,98,103,116,143,168,169,190,192,193,218,240]).
data(id197,25,603,[7,11,12,14,21,25,32,40,52,56,60,67,68,81,91,92,132,144,149,163,177,191,196,235,263]).
data(id198,25,603,[13,23,26,27,35,44,45,49,53,54,57,66,75,99,101,110,122,126,144,158,175,180,189,234,270]).
data(id199,25,607,[6,8,10,13,19,25,32,37,49,54,58,76,84,91,92,100,107,128,156,185,196,205,206,216,246]).
data(id200,25,609,[9,14,15,17,32,45,47,58,67,74,76,79,80,83,97,111,125,126,150,170,186,188,215,224,235]).
data(id201,25,611,[1,10,22,26,32,41,45,54,57,61,62,66,85,86,87,95,97,101,119,132,136,167,176,268,343]).
data(id202,25,614,[15,22,24,31,33,49,53,54,57,60,63,68,74,81,83,104,109,151,155,163,167,217,229,230,234]).
data(id203,25,634,[15,17,24,26,33,43,44,54,57,60,63,73,79,81,88,109,119,160,161,172,173,227,234,235,239]).
data(id204,25,643,[2,9,21,29,38,40,41,42,58,62,67,76,82,83,85,96,104,166,172,186,192,201,207,250,270]).
data(id205,25,644,[7,9,13,18,19,22,31,49,53,61,66,68,71,87,93,94,119,164,178,192,199,206,227,239,253]).
data(id206,25,655,[10,14,15,21,25,26,31,40,51,53,54,57,65,83,84,86,151,152,173,193,194,215,216,246,288]).
data(id207,25,661,[5,7,17,18,23,31,36,38,41,64,73,77,83,84,102,106,111,161,175,196,203,210,238,248,262]).