Đề thi chính thức môn Tin học Kỳ thi HSG tỉnh Thanh Hóa năm 20182019. Chương trình giải các bài toán trong đề viết bằng NLT Pascal. Bộ test chấm chi tiết, chỉ cần tải về chấm bằng chương trình chấm điểm tự động Themis là biết kết quả
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO
THANH HOÁ
ĐỀ CHÍNH THỨC
KỲ THI HỌC SINH GIỎI CẤP TỈNH
Năm học: 2018-2019
Môn thi: Tin học - Lớp 11 THPT
Thời gian: 180 phút (không kể thời gian giao đề)
Ngày thi: 21/03/2019
Đề này có 05 câu, gồm 02 trang
Tổng quan bài thi:
Tên bài File chương trình File dữ liệu vào File kết quả Bài 1 Tổng số hoàn hảo BAI1.* BAI1.INP BAI1.OUT
Dữ liệu vào là đúng đắn, không cần phải kiểm tra Trong các file dữ liệu vào/ra, nếu dữ liệu trên cùng một dòng thì được cách nhau bởi ít nhất 1 dấu cách Dấu (*) trong tên file chương trình biểu thị đuôi file tùy thuộc vào NNLT sử dụng ('pas' đối với NNLT PASCAL, ‘c’ đối với NNLT C, )
Bài 1 (6 điểm): Tổng số hoàn hảo
Số hoàn hảo là số có tổng các ước số trừ nó bằng chính nó
Yêu cầu: Tính tổng các số hoàn hảo nhỏ hơn hoặc bằng N
Dữ liệu vào: Đọc từ tệp BAI1.INP - số nguyên N (1≤ N ≤ 105)
Dữ liệu ra: Ghi ra tệp BAI1.OUT kết quả tìm được
Ví dụ:
BAI1.INP BAI1.OUT
(có 2 số hoàn hảo nhỏ hơn hoặc bằng 30 là 6 và 28; 6+28=34)
Bài 2 (5 điểm): Cặp số nguyên
Bài toán tìm ước chung lớn nhất và tìm bội chung nhỏ nhất là hai bài toán cơ bản Nhưng hôm nay thầy giáo cho cả lớp biết L là ước chung lớn nhất và G là bội chung nhỏ nhất của 2 số nguyên dương
Yêu cầu: Tìm 2 số nguyên dương a và b có tổng nhỏ nhất sao cho ước chung lớn nhất
của a và b bằng L, bội chung nhỏ nhất của a và b bằng G
Dữ liệu vào: Đọc từ tệp BAI2.INP gồm 2 số L, G (1≤ L<G ≤ 106)
Dữ liệu ra: Ghi ra tệp BAI2.OUT là 2 số a và b tìm được (a≤b)
Ví dụ:
BAI2.INP BAI2.OUT
4 60 12 20
Số báo danh
………
…
Trang 2Bài 3 (4 điểm): Đếm xâu con
Cho xâu S bao gồm các chữ cái ‘A’ ’Z’ và các chữ số ‘0’ ’9’
Yêu cầu: Đếm số xâu con trong xâu S có số lượng chữ cái nhiều hơn số lượng chữ số
(xâu con của xâu S là một dãy kí tự liên tiếp trong xâu S)
Dữ liệu vào: Đọc từ tệp BAI3.INP gồm xâu S có độ dài ≤104
Dữ liệu ra: Ghi ra tệp BAI3.OUT kết quả tìm được
Ví dụ:
Bài 4 (3 điểm): Giai thừa
Cho trước số tự nhiên N
Yêu cầu: Tìm số tự nhiên K nhỏ nhất sao cho K! có đúng N chữ số
Dữ liệu vào: Đọc từ tệp BAI4.INP gồm một dòng chứa số tự nhiên N (1≤ N≤ 104)
Dữ liệu ra: Ghi ra tệp BAI4.OUT kết quả tìm được Nếu không có số K nào thoả mãn
yêu cầu đề ra thì ghi -1
Ví dụ:
BAI4.INP BAI4.OUT
Bài 5 (2 điểm): Dãy con
Cho dãy số tự nhiên A gồm N phần tử a1, a2, …., aN và số nguyên dương K Dãy con ai, ai+1, …, aj (1≤i≤j≤N) là dãy được tạo từ các phần tử liên tiếp của dãy A, bắt đầu
từ phần tử thứ i và kết thúc ở phần tử thứ j
Yêu cầu: Tìm số lượng dãy con của dãy A có ít nhất K phần tử bằng nhau
Dữ liệu vào: Đọc từ tệp BAI5.INP
• Dòng đầu tiên chứa 2 số nguyên dương N, K (1≤ K≤N≤4x105)
• Dòng thứ 2 chứa N số tự nhiên a1, a2, …., aN (ai≤108)
Dữ liệu ra: Ghi ra tệp BAI5.OUT số lượng dãy con tìm được
Ví dụ:
BAI5.INP BAI5.OUT
4 2
1 2 1 2
3
- Hết -
Giám thị coi thi không giải thích gì thêm
Trang 3CHƯƠNG TRÌNH
Bài 1 (6 điểm): Tổng số hoàn hảo
const fi='BAI1.INP';
fo='BAI1.OUT';
var f:text;
s,i,n:longint;
{===============================}
function shh(n:longint):boolean;
var s,i:longint;
begin s:=0;
for i:=1 to trunc(sqrt(n)) do
if n mod i=0 then s:=s+i+ n div i;
if i=sqrt(n) then
s:=s-i;
s:=s-n;
shh:=s=n;
end;
{===============================}
BEGIN assign(f,fi);
reset(f);
read(f,n);
close(f);
s:=0;
for i:=2 to n do
if shh(i) then s:=s+i;
assign(f,fo);
rewrite(f);
write(f,s);
close(f);
END
Có 12 Test, mỗi test đúng được 0.5 điểm
Trang 4Bài 2 (5 điểm): Cặp số nguyên
Giả sử
A=L*K1
B=L*k2
Do L là ước chung lớn nhất của A và B nên ước chung lớn nhất của K1 và K2 bằng 1
Vì G là bội chung nhỏ nhất của A và B nên ta có:
2
* 1
*
* 2
*
* 1
*
K K L L
L K L K
L
B
A
Do G chia hết cho L nên ta có K1*K2=G div L
const fi='BAI2.INP';
fo='BAI2.OUT';
var f:text;
L,G,a,b,k1,k2,m,min:longint;
{================================}
Function UCLN(a,b:longint):longint;
begin
while (a>0) and (b>0) do
if a>b then
a:=a mod b
else
b:=b mod a;
UCLN:=a+b;
end;
{===============================}
begin
assign(f,fi);
reset(f);
readln(f,L,G);
close(f);
m:=G div L;
min:=L+G;
for k1:=1 to trunc(sqrt(m)) do
if m mod k1=0 then
begin
k2:=m div k1;
if UCLN(k1,k2)=1 then
begin
a:=k1*L;
b:=k2*L;
if min>a+b then
min:=a+b;
end;
end;
assign(f,fo);
rewrite(f);
write(f,a,' ',b);
close(f);
end
Trang 5Có 10 Test, mỗi test đúng được 0.5 điểm
Bài 3 (4 điểm): Đếm xâu con
Gọi a[i] là số chữ cái in hoa từ kí tự thứ 1 đến kí tự thứ i
Gọi b[i] là số chữ số từ kí tự 1 đến kí tự thứ i
Khi đó đoạn kí tự từ s[i] đến s[j] có số chữ cái in hoa nhiều hơn số chữ số nếu a[j]-a[i-1]>b[j]-b[i-1]
const fi='BAI3.INP';
fo='BAI3.OUT';
var f:text;
s:ansistring;
n,i,j,d:longint;
a,b:array[0 10000] of longint;
begin
assign(f,fi);
reset(f);
readln(f,s);
close(f);
n:=length(s);
a[0]:=0;
for i:=1 to n do
if (s[i]>='A') and (s[i]<='Z') then
a[i]:=a[i-1]+1
else
a[i]:=a[i-1];
b[0]:=0;
for i:=1 to n do
if (s[i]>='0') and (s[i]<='9') then
b[i]:=b[i-1]+1
else
b[i]:=b[i-1];
d:=0;
for i:=1 to n do
for j:=i to n do
if a[j]-a[i-1]>b[j]-b[i-1] then
inc(d);
assign(f,fo);
rewrite(f);
write(f,d);
close(f);
end
Trang 6Có 16 Test, đúng mỗi Test được 0.25 điểm (từ test 11 đến test 16 dữ liệu nhiều nên tôi chỉ đính kèm)
05 U7MR2BAYMCEOSQ7B3EQYSLRNB6D86AE9PNBANZ5QUW0TU6 1026
06 1PMM9CD42Y0U0JZR73QXHUMUD4L96KATNPQ51DZIG25MNIIK388X
FY1RJ3RL31GTP4HQ
2185
07 4HE1ZSUUI6ALPXNWH7IKPWE5KBP8L72LRQXIORLHK3O59DDWZ9S
ORBI89H5FCV58RWDPEO42RRDQQ0ZBGQ5WSXV2W
3891
08 9C4WIHU1HPC8B1Q4TC3N2ECDB4UC9V4F6RKE3C0LIK7DTQD5GA5C
PTJ5MO18M143YJ4FIMX7HHY1S6XECQ9H1XRD46FKCL
4249
09 ZJAZ1B9Q64FQG15PYD9C58L11C72652WUYN5NBSHK2HG6BN5A0ASR
FMPA13DPDSEWR08ZK563YRQN1XWQJYHSVIC0Z9NO3K7JI9818SH1F
C01XGG43YS0FEXWZ7K
6966
10 XEVYSCZE08XN0QBO5I84KJJ5S6W23HSD3OGI4F5QFJCYXBIG5R6SUO
QQC26IWVE8KNM0PDKO5Y5OIK1KR1NVKWW93QYOV0086YVNFN6
Y5F74VKMWU82SMT8C4U0SYAL39OVV2171DRD7HZNDWHROZ4ROJ
TB858173IM0MWYF9MS1M3G1LYEX4LI6JOCZ719T0FT5B8DX082LKR
RWZ4KF16RXJEB2DMEXT9W1GL40N5WK5PVMWYUBRZCNAAX404L
FEAG3KBEK15L7PMI921Q5O9MXACSSEB5Z51JHCYGGUABZE1FOCN
ER5JC5JYW4P14EWQB75CG1XEV418T9QJFJD71BQETX22O25T5FXX5O
PHT0W21AO6JELDJ1ZWJBGOGZ0TG617H83JF8HMPJRWVK21K7A6E60
F8D0BIX0YBKBF0YC2F49CII1R3B169EOOQ9G48PRK0X24YYRTL3Y24J
R1X1U11OHV52E3F4YKUVCSEXH7Z0K2PU0KWCUT7NNZG4FFDO8R5
P73AWM5M05V1REL1LLE2N8ORTB9815A1K3G6545F46RS6TTN0PI91V
ME69K70YZG52MLMK56I3SV4CHNXIWYXU1077K27PDOOAUCD7O36
L7Q0KRT1A3K035LJVL90TG0YL3QMV555418G0X0K8ZX5P7GVINLHU
3HDEF424UG4S98YCHQ4YIWERE4UF5Z7XG0VLX6KRR7ZU51806DJV0
EK7WKCF5V077SSIK0G878GTN48VXZA9JZVEA8ZX26SJP8N1GT5TXV
MD8XFB84A7XAN56OQWU7PZFBGJ29RVCDQDM9TK93L12HBBR3AQ
CSONZ6AINDX837V3N60QJ87I0TS54DIYO50SE8QO987RQIEF1X4IJV87
40NLYU7RHCE4DZ4FA61B82JDCQ620LIJB85VAVQMUH2ZOK9UI7GI8
LC2U6Q8Q5WL8QJZQYCW1VR6S9KI205VRYSYR090XKJD5IDPCFYT75
GS5TY5VA5BD7VFQVU9KW8LM3RR4I5L7XM63LBX0MKCU1TC0P4H5
GPBWREB7TQ36K1H3ZTGJBHZH3QSOU03H80D6CTPP4PNKSQA9A8L
KJUC0O1H58BF9XV6B22G6DFQM1FM3K218SKNPTJTO92PJS2VWUTK3
778R2B57Y9C09DNG22KJHWWV5LCC6L66GX8PLVVO1RCKG5O13MH
04YQS2HZSR0MVGR2K97R5FDI8QKCPI8B3AZVQLA876VATD8NKQ91
6UIH70D0ALOE802XI748K4W79TXK1HOIWOUOFIK250QKOFQW7SISS
638R9O3VTXCSN0FTJ6J22P0ZX8OBE4N52L6OJ3KTSLMDS3IY6LNCOX
O5ARWJU79MTD0AY8F0E810HQT7LTBGREUWXL8ODCBRA0D7SVLG
1992405
Trang 7W4SJS83780HDTLURYEJ4PZ3UHK5WCOS3T6E510A0UJRJSJ2U4EWHH
41CNSU03W1RMYKC56Y3Y4SY9F9FOU96SBZ1ST8KVZ18S28Z9J4BJNT
D86LZV8QUQVWSBJLQ9DJFGVH6AVJPQ953OV3CR0FNOCUTT354XL
A0HZIUQ08GER89C6U11D3HQ3AKM4C2K5Y0RSBERUQC00S4G6FS6J
WC2MNIHLCZAVRULG0NN2CD2KIVX38URC903671K50NH9ZZMHV95
F796RZI54XKBZZ7V1WJN0Z6C6M4JPH8M3R4SJ2Y18DNT7C2BYXY8D
DK88L22Z3IDZDH2T7RH1G1BEM8B3DG9TPLFZ8JNWHYOZSZ64LJN62
GN50PS7YSLIWWVY02893KVS0D2WBQNDA2UKK0UU1H505BKBF3W
18O0HY21RDM1T3KN8L515D3T3FDD3GUK9WOFREFZ3DQNU571NX10
NCFUTE2LR81RGNJPUFD3C48R9ZFUF578H6E25G90PJEDRLTQ0K85AP
KOWQGZUQ8ST3XHMB
(Các test còn lại dữ liêu vào dài nên tôi chỉ để trong tệp đính kèm)
Bài 4 (3 điểm): Giai thừa
Nhận xét: Nếu ta lấy số x chia cho 10 là ta đã bỏ được 1 chữ số của x
const fi='BAI4.INP';
fo='BAI4.OUT';
var f:text;
n,k,d:longint;
x:real;
{=============================}
BEGIN
assign(f,fi);
reset(f);
readln(f,n);
close(f);
k:=1;
d:=1;
x:=1;
while d<n do
begin
inc(k);
x:=x*k;
while x>=10 do
begin
x:=x/10;
inc(d);
end;
end;
assign(f,fo);
rewrite(f);
if d=n then
write(f,k)
else
write(f,-1);
close(f);
END
Có 12 Test, đúng mỗi Test được 0.25 điểm
Trang 802 4 7
Bài 5 (2 điểm): Dãy con
Bài này ta dùng kĩ thuật duyệt 2 điểm kết hợp với đếm phân phối để làm
const fi='BAI5.INP';
fo='BAI5.OUT';
var f:text;
a:array[1 400000] of longint;
d:array[1 100000000] of longint;
k,n,i,j,sl:int64;
begin
assign(f,fi);
reset(f);
readln(f,n,k);
i:=0;
while i<n do
begin
inc(i);
read(f,a[i]);
end;
close(f);
i:=1;
j:=1;
sl:=0;
inc(d[a[1]]);
while i<=n-k+1 do
if d[a[j]]=k then
begin
sl:=sl+n-j+1;
dec(d[a[i]]);
inc(i);
end
else
if j<n then
begin
inc(j);
inc(d[a[j]]);
end
else
break;
assign(f,fo);
rewrite(f);
write(f,sl);
close(f);
Trang 9end
Có 8 Test, đúng mỗi Test được 0.25 điểm (từ test 4 đến test 8 dữ liệu vào nhiều nên tôi chỉ đính kèm)
01 10 3
1 3 5 3 4 3 1 3 1 5
16
02 3564 5
13 5 7 1 4 13 3 22 13 13 21 30 17 13 24 1 5 9 26 10 13 18 14
19 2 27 12 9 25 25 6 1 29 23 27 27 10 8 8 29 21 8 20 28 10
10 14 29 8 19 21 1 7 24 4 30 23 8 5 29 4 3 22 19 13 5 17 30
18 18 6 27 17 22 25 20 28 3 12 12 25 3 28 23 2 16 14 3 17 9
13 13 27 3 21 27 29 24 5 29 11 2 14 28 30 13 16 24 20 12 5
23 29 9 18 24 23 7 29 12 16 28 23 19 19 11 13 25 22 29 22
12 28 30 8 22 13 14 13 24 19 19 1 13 25 1 16 14 3 5 9 29 6
25 11 19 24 28 13 11 19 9 21 14 27 2 19 22 16 22 19 30 15
19 6 12 25 26 8 28 11 19 1 29 8 2 21 27 21 22 1 15 10 7 18
11 5 18 24 30 15 7 4 7 14 12 14 4 26 12 1 22 1 20 20 7 12 22
11 24 7 14 5 24 12 13 13 8 7 9 9 3 28 6 7 24 8 6 2 29 26 30
30 28 6 13 9 2 21 8 20 5 20 4 9 24 3 18 6 29 13 17 21 27 10
24 23 8 21 5 25 20 11 23 15 14 9 12 6 19 18 18 25 17 17 13
23 2 9 29 24 15 23 21 23 29 5 24 28 2 5 1 2 27 15 3 13 13 5
27 26 8 26 5 7 8 26 8 13 26 22 10 6 15 23 17 25 25 16 17 16
27 30 29 24 12 3 30 21 6 22 26 7 4 24 29 22 13 17 11 14 17
4 12 11 6 9 13 8 22 5 7 1 18 9 13 1 22 11 22 15 19 22 20 21
16 1 24 11 5 5 16 23 10 14 4 19 1 30 13 22 5 1 22 9 24 1 13
10 12 29 17 2 27 5 5 28 15 3 29 21 16 2 1 13 27 27 8 15 21 5
21 11 29 29 25 10 6 27 10 22 22 2 26 12 6 7 7 25 17 3 12 30
29 19 17 11 29 2 28 6 19 13 25 27 12 30 14 2 2 30 16 13 23
1 13 22 20 10 26 12 14 3 20 16 23 4 7 4 15 28 16 10 13 30 6
11 12 27 28 28 7 17 7 2 26 21 24 1 15 16 2 9 29 7 17 10 12
15 5 11 24 20 7 7 17 24 7 7 10 5 11 24 27 2 26 14 16 27 2 18
18 8 13 7 4 30 10 10 25 19 26 29 18 16 25 30 4 25 21 30 30
2 11 25 29 6 20 9 17 28 20 11 13 26 26 4 26 6 23 5 3 28 23 7
15 9 26 27 18 27 24 2 15 7 10 11 14 11 14 29 30 22 3 1 21 6
20 10 27 27 1 23 4 5 15 23 27 26 14 6 28 22 18 10 22 5 10 1
19 10 13 25 5 7 19 26 29 19 1 21 24 23 19 15 11 25 17 29 10
3 29 26 29 22 10 8 9 20 16 30 3 12 2 15 28 26 30 20 18 9 7
20 16 10 1 22 4 25 5 19 11 28 29 22 2 25 6 16 15 11 26 24
25 20 8 25 16 7 28 22 19 28 9 14 19 23 15 29 1 12 16 19 25
22 20 2 8 13 26 25 14 2 10 22 10 12 13 2 13 29 5 23 27 26
20 16 3 5 13 24 18 8 8 6 15 13 19 2 1 4 25 14 10 4 2 15 1 26
15 9 19 11 27 15 21 21 19 18 25 12 27 8 20 18 18 5 21 16 18
27 1 9 3 28 9 9 26 8 24 8 26 23 30 17 2 10 30 11 4 15 1 14 7
30 6 26 5 6 2 14 11 9 22 3 29 14 17 19 21 18 29 14 10 7 9 12
6188745
Trang 1028 4 10 18 27 19 5 18 21 4 13 1 28 10 5 2 28 15 16 27 27 20
23 14 13 29 6 3 7 25 16 15 4 25 1 28 15 25 5 14 12 23 24 6
13 15 3 3 1 1 5 29 21 29 16 4 24 30 23 29 15 8 7 15 14 16 9
13 7 7 19 21 9 7 18 5 1 25 6 15 26 15 23 4 29 24 2 16 20 20
26 19 5 9 4 29 5 17 18 6 7 24 24 22 24 25 21 20 11 27 5 19
29 12 13 18 10 10 25 7 21 5 6 25 26 29 29 18 1 5 17 23 23
17 14 24 1 18 15 20 24 7 4 20 2 13 15 17 6 10 9 20 11 11 21
21 20 7 18 15 19 4 25 6 19 18 13 30 1 7 21 17 9 17 7 1 3 15
7 12 27 22 7 1 6 30 3 13 5 11 11 8 30 27 29 27 28 23 8 2 3
15 5 16 18 13 2 10 4 24 23 1 25 14 18 27 21 3 18 26 4 27 26
30 3 16 3 10 3 16 11 29 4 12 9 13 17 5 3 27 24 22 1 4 30 27
6 1 17 1 24 5 6 10 25 18 27 27 23 25 14 10 5 23 23 29 5 16
27 8 19 18 13 4 14 20 20 21 18 5 9 18 24 28 23 26 11 1 24
17 17 30 7 26 3 30 6 28 4 17 18 15 1 12 18 1 28 28 12 10 7
24 24 8 18 30 2 24 13 27 7 20 16 11 15 27 26 27 2 28 24 18
15 12 5 16 18 9 4 9 30 20 5 20 21 28 16 11 9 14 24 17 19 25
2 23 27 20 11 28 11 1 18 30 26 25 26 8 27 13 3 20 10 16 29
29 2 7 5 16 17 22 20 30 18 19 4 20 8 10 23 14 14 19 15 20
27 10 25 5 22 9 9 1 4 11 6 25 12 19 28 10 10 3 6 3 23 22 8 2
4 1 6 30 2 4 7 20 23 1 15 18 25 2 26 26 8 22 25 15 5 15 8 20
26 25 8 16 21 24 23 3 1 25 14 5 22 12 6 1 10 9 19 16 11 24
21 20 15 24 14 22 16 24 9 7 23 21 25 26 20 23 21 11 9 6 26
6 8 1 4 15 14 10 13 2 4 6 28 25 22 28 20 11 11 13 3 16 3 4
25 4 5 28 14 7 11 7 26 15 21 3 13 13 8 20 21 19 29 24 2 1 18
20 19 24 24 21 20 11 6 11 13 6 27 22 20 22 9 17 5 15 20 24
29 10 5 23 18 28 25 22 14 12 4 12 17 5 1 27 20 7 17 24 9 26
1 30 7 15 23 19 21 19 19 14 20 23 8 23 4 8 20 6 17 13 27 21
19 26 9 11 28 23 17 23 13 1 29 9 5 2 19 29 3 6 19 21 24 3 10
21 15 26 21 27 4 4 24 18 12 21 22 11 26 16 20 18 21 30 6 17
9 23 8 19 30 16 24 13 13 2 3 15 16 30 18 4 17 7 15 9 13 28 3
16 12 8 16 9 28 26 1 2 30 28 2 3 3 23 5 4 18 21 19 11 15 24
14 18 8 1 7 7 19 6 15 13 13 8 10 13 16 10 15 24 4 18 21 15
23 27 28 23 12 15 24 3 6 4 17 30 2 25 15 15 10 14 23 21 19
25 17 30 6 18 11 26 16 15 3 14 3 6 24 26 7 10 20 10 17 19
14 14 7 8 13 2 19 7 25 7 6 27 14 3 23 22 19 7 6 30 18 6 4 10
6 11 22 16 10 13 10 9 26 26 25 20 19 3 15 14 11 26 19 27 14
15 3 30 18 26 1 7 20 16 19 6 20 5 21 7 11 26 25 19 9 3 27 4
10 23 22 22 29 22 19 1 6 11 17 19 3 6 10 21 21 1 14 26 25
23 14 9 29 28 8 4 16 10 7 20 26 25 6 21 28 9 20 20 17 21 12
30 25 13 12 13 8 22 12 13 2 25 13 11 27 5 23 8 29 4 10 5 29
19 2 6 1 6 25 3 25 30 21 25 15 26 16 11 18 25 29 14 6 24 29
29 6 3 6 18 10 14 8 1 24 15 27 9 18 3 27 12 18 16 10 25 26
27 15 21 17 20 27 9 25 27 25 12 3 19 3 16 21 9 15 2 6 21 28
22 25 15 24 21 22 23 27 16 1 10 21 17 3 22 26 14 22 3 15 3
28 5 1 12 6 5 21 19 24 19 25 26 23 11 4 28 22 24 17 10 12
Trang 1127 25 16 14 8 1 14 20 1 28 20 22 18 16 19 23 12 28 28 10 2
1 12 17 21 19 8 30 13 19 5 20 22 4 1 7 22 13 18 24 22 14 22
17 8 6 13 5 15 14 22 23 24 11 5 19 27 25 20 16 14 2 25 22
11 11 25 24 4 8 11 21 26 1 8 20 11 12 28 7 6 1 1 23 14 25 15
11 22 13 20 22 4 13 14 20 26 20 11 2 21 5 9 29 22 17 18 3
22 20 23 5 25 12 19 13 26 13 7 10 11 24 21 7 22 20 23 10 19
2 13 26 12 18 25 14 14 24 21 13 19 11 13 24 29 15 16 13 9
30 25 13 19 5 23 4 4 20 16 21 2 1 28 12 25 6 17 11 18 8 27 1
28 23 27 26 13 3 1 25 11 29 19 6 17 22 27 29 15 29 10 13 20
21 21 1 17 20 17 24 10 15 6 23 2 27 9 30 3 18 9 12 10 2 28 6
13 23 11 21 7 15 6 11 18 3 5 18 25 15 18 10 12 29 26 19 13
21 28 8 7 19 11 14 1 24 23 12 14 9 23 29 20 8 23 30 11 20
23 8 14 20 4 29 22 2 5 28 4 16 21 13 6 27 26 29 15 23 5 9 25
22 13 7 19 9 2 25 14 1 29 25 1 10 5 4 24 25 26 4 15 10 14 22
27 9 22 11 20 23 19 28 17 8 23 13 6 3 19 26 3 19 28 18 29
25 27 27 7 17 14 16 15 10 4 24 27 20 29 8 18 6 21 29 24 29
3 10 30 17 19 5 1 30 10 24 17 2 1 13 13 8 6 10 26 12 9 17 22
26 21 2 25 14 19 18 7 3 25 1 6 29 30 9 29 7 4 6 22 15 10 18
1 28 14 21 11 13 19 15 29 19 26 4 10 13 9 22 22 14 12 12 29
12 11 2 2 1 9 9 18 23 20 8 4 16 20 10 17 24 9 7 29 16 24 20
10 15 19 27 23 15 21 15 5 15 25 16 7 26 25 21 5 14 1 15 6
13 14 8 4 29 25 30 15 18 4 28 28 7 6 29 15 26 22 5 17 9 21 7
22 2 14 28 19 24 16 1 25 14 8 9 20 5 5 19 6 6 12 23 2 26 9
12 1 15 11 1 11 14 19 12 2 25 15 4 13 22 9 17 14 20 9 28 5
23 2 30 29 23 27 24 14 9 17 24 10 23 11 20 5 30 15 4 8 19
17 22 9 30 22 26 22 23 2 6 19 11 14 27 25 16 23 16 30 14 18
14 9 27 5 17 25 9 20 19 21 25 29 16 26 16 14 24 6 5 3 20 10
16 8 13 4 19 19 20 11 20 23 12 27 27 19 20 17 18 16 11 25 8
1 19 12 4 2 1 12 24 2 13 14 7 14 18 26 4 17 3 28 14 13 3 18
28 1 8 6 27 10 23 26 4 18 14 15 29 13 24 5 4 1 7 14 28 24 27
19 5 18 9 11 1 16 4 23 1 9 17 7 8 8 13 25 17 6 26 19 18 21
19 27 19 7 20 27 17 7 30 12 28 27 28 6 26 30 24 4 1 8 4 3 25
8 16 4 26 13 10 10 11 1 24 14 15 1 1 5 25 9 10 9 6 18 5 26
15 14 15 1 12 21 26 3 4 17 27 7 13 19 28 24 27 11 30 28 18
17 7 4 17 7 30 21 24 1 21 17 6 12 14 21 23 14 30 29 9 23 18
29 25 20 23 17 22 14 7 26 10 24 8 2 27 23 1 7 8 30 6 19 11 1
27 10 2 6 8 6 10 6 20 11 20 19 14 14 4 7 9 17 19 3 4 29 23
23 10 27 4 20 9 24 16 22 3 10 10 13 30 29 11 12 13 21 18 5
5 26 28 17 29 1 29 14 22 23 20 5 20 23 6 22 23 17 21 6 29 1
27 15 6 20 1 18 21 28 8 27 4 24 18 12 10 27 19 15 12 27 6 7
2 17 19 25 2 2 4 2 22 28 11 10 22 3 27 10 30 8 6 13 4 19 22
29 29 26 28 28 6 11 25 22 18 10 9 24 1 24 30 9 13 1 8 4 3 12
17 7 1 15 8 29 7 16 11 12 25 28 4 27 27 14 23 25 6 16 4 1 2
25 4 13 20 15 19 21 6 8 17 29 20 16 6 11 26 17 21 18 10 16
23 13 12 12 6 14 5 24 25 13 7 14 11 16 15 23 6 10 19 3 19