# 某岛

… : "…アッカリ～ン . .. . " .. .
November 22, 2022

## SPOJ MUSKET. Musketeers

const
nn=100;
type
int=longint;
var
G:array[1..nn,1..nn] of boolean;
D:array[1..nn,1..nn] of boolean;
A:array[1..nn] of int; an:int;
t:int; n,i,j:int;

function c(k:int):int;
begin
exit((k-1) mod n +1);
end;
procedure init;
var i,j:int;
t:char;
begin
fillchar(g,sizeof(g),false);
fillchar(d,sizeof(d),false);
an:=0;
for i:=1 to n do
begin
for j:=1 to n do
begin
if t='1' then g[i,j]:=true;
end;
end;
end;

procedure test(i:int);
var
j,t:int;
begin
for t:=1 to n-1 do
begin
j:=c(i+t);
if d[i,j] and d[j,i] and g[i,j] then begin
inc(an);a[an]:=i;
exit;
end;
end;
end;
procedure print;
var i:Int;
begin
writeln(an);
for i:=1 to an do
writeln(a[i]);
end;
procedure main;
var l,i,j,k,t:int;
begin
for i:=1 to n-1 do
d[i,i+1]:=true;
d[n,1]:=true;
for l:=2 to n-1 do
for i:=1 to n do
begin
j:=c(i+l);
for t:=1 to l-1 do
begin
k:=c(i+t);
if D[i,k] and D[k,j] and (G[i,k] or G[j,k]) then
begin
D[i,j]:=true;
break
end;
end;
end;
end;

procedure patch;
var i,j:int;
begin
end;
begin