summaryrefslogtreecommitdiff
path: root/set3
diff options
context:
space:
mode:
authorBenedict <benedict@0xb8000.de>2017-02-02 00:32:26 +0100
committerBenedict <benedict@0xb8000.de>2017-02-21 13:00:27 +0100
commit1fd84c7dc70a0a6e6d8651fafa50c51dd697ae77 (patch)
treeaf5de3c7952e071c8e27800c41d9f945fa86c9e7 /set3
parent9dcc7348ad53cab8fd9396699de0177bac6729d5 (diff)
added random stuff which hasn't beend added because yeah
Diffstat (limited to 'set3')
-rw-r--r--set3/task17.c59
-rw-r--r--set3/task17_01
-rw-r--r--set3/task17_11
-rw-r--r--set3/task17_21
-rw-r--r--set3/task17_31
-rw-r--r--set3/task17_41
-rw-r--r--set3/task17_51
-rw-r--r--set3/task17_61
-rw-r--r--set3/task17_71
-rw-r--r--set3/task17_81
-rw-r--r--set3/task17_91
-rw-r--r--set3/task19.c35
-rw-r--r--set3/task19_data/task19_001
-rw-r--r--set3/task19_data/task19_011
-rw-r--r--set3/task19_data/task19_021
-rw-r--r--set3/task19_data/task19_031
-rw-r--r--set3/task19_data/task19_041
-rw-r--r--set3/task19_data/task19_051
-rw-r--r--set3/task19_data/task19_061
-rw-r--r--set3/task19_data/task19_071
-rw-r--r--set3/task19_data/task19_081
-rw-r--r--set3/task19_data/task19_091
-rw-r--r--set3/task19_data/task19_101
-rw-r--r--set3/task19_data/task19_111
-rw-r--r--set3/task19_data/task19_121
-rw-r--r--set3/task19_data/task19_131
-rw-r--r--set3/task19_data/task19_141
-rw-r--r--set3/task19_data/task19_151
-rw-r--r--set3/task19_data/task19_161
-rw-r--r--set3/task19_data/task19_171
-rw-r--r--set3/task19_data/task19_181
-rw-r--r--set3/task19_data/task19_191
-rw-r--r--set3/task19_data/task19_201
-rw-r--r--set3/task19_data/task19_211
-rw-r--r--set3/task19_data/task19_221
-rw-r--r--set3/task19_data/task19_231
-rw-r--r--set3/task19_data/task19_241
-rw-r--r--set3/task19_data/task19_251
-rw-r--r--set3/task19_data/task19_261
-rw-r--r--set3/task19_data/task19_271
-rw-r--r--set3/task19_data/task19_281
-rw-r--r--set3/task19_data/task19_291
-rw-r--r--set3/task19_data/task19_301
-rw-r--r--set3/task19_data/task19_311
-rw-r--r--set3/task19_data/task19_321
-rw-r--r--set3/task19_data/task19_331
-rw-r--r--set3/task19_data/task19_341
-rw-r--r--set3/task19_data/task19_351
-rw-r--r--set3/task19_data/task19_361
-rw-r--r--set3/task19_data/task19_371
-rw-r--r--set3/task19_data/task19_381
-rw-r--r--set3/task19_data/task19_391
-rw-r--r--set3/task19_data/task19_all40
-rw-r--r--set3/task20_data/20.txt60
-rw-r--r--set3/task20_data/task20_001
-rw-r--r--set3/task20_data/task20_011
-rw-r--r--set3/task20_data/task20_021
-rw-r--r--set3/task20_data/task20_031
-rw-r--r--set3/task20_data/task20_041
-rw-r--r--set3/task20_data/task20_051
-rw-r--r--set3/task20_data/task20_061
-rw-r--r--set3/task20_data/task20_071
-rw-r--r--set3/task20_data/task20_081
-rw-r--r--set3/task20_data/task20_091
-rw-r--r--set3/task20_data/task20_101
-rw-r--r--set3/task20_data/task20_111
-rw-r--r--set3/task20_data/task20_121
-rw-r--r--set3/task20_data/task20_131
-rw-r--r--set3/task20_data/task20_141
-rw-r--r--set3/task20_data/task20_151
-rw-r--r--set3/task20_data/task20_161
-rw-r--r--set3/task20_data/task20_171
-rw-r--r--set3/task20_data/task20_181
-rw-r--r--set3/task20_data/task20_191
-rw-r--r--set3/task20_data/task20_201
-rw-r--r--set3/task20_data/task20_211
-rw-r--r--set3/task20_data/task20_221
-rw-r--r--set3/task20_data/task20_231
-rw-r--r--set3/task20_data/task20_241
-rw-r--r--set3/task20_data/task20_251
-rw-r--r--set3/task20_data/task20_261
-rw-r--r--set3/task20_data/task20_271
-rw-r--r--set3/task20_data/task20_281
-rw-r--r--set3/task20_data/task20_291
-rw-r--r--set3/task20_data/task20_301
-rw-r--r--set3/task20_data/task20_311
-rw-r--r--set3/task20_data/task20_321
-rw-r--r--set3/task20_data/task20_331
-rw-r--r--set3/task20_data/task20_341
-rw-r--r--set3/task20_data/task20_351
-rw-r--r--set3/task20_data/task20_361
-rw-r--r--set3/task20_data/task20_371
-rw-r--r--set3/task20_data/task20_381
-rw-r--r--set3/task20_data/task20_391
-rw-r--r--set3/task20_data/task20_401
-rw-r--r--set3/task20_data/task20_411
-rw-r--r--set3/task20_data/task20_421
-rw-r--r--set3/task20_data/task20_431
-rw-r--r--set3/task20_data/task20_441
-rw-r--r--set3/task20_data/task20_451
-rw-r--r--set3/task20_data/task20_461
-rw-r--r--set3/task20_data/task20_471
-rw-r--r--set3/task20_data/task20_481
-rw-r--r--set3/task20_data/task20_491
-rw-r--r--set3/task20_data/task20_501
-rw-r--r--set3/task20_data/task20_511
-rw-r--r--set3/task20_data/task20_521
-rw-r--r--set3/task20_data/task20_531
-rw-r--r--set3/task20_data/task20_541
-rw-r--r--set3/task20_data/task20_551
-rw-r--r--set3/task20_data/task20_561
-rw-r--r--set3/task20_data/task20_571
-rw-r--r--set3/task20_data/task20_581
-rw-r--r--set3/task20_data/task20_591
114 files changed, 304 insertions, 0 deletions
diff --git a/set3/task17.c b/set3/task17.c
new file mode 100644
index 0000000..d2bb7e0
--- /dev/null
+++ b/set3/task17.c
@@ -0,0 +1,59 @@
+#include "../lib/lib.h"
+#include "../lib/lib2.h"
+#include "../lib/lib3.h"
+#include <time.h>
+
+/**
+ * First we try to break the last byte of a block.
+ * Do this by trying every byte
+ *
+ * Good description of the attack:
+ * https://blog.cloudflare.com/padding-oracles-and-the-decline-of-cbc-mode-ciphersuites/
+ */
+
+#define BLOCKSIZE 16
+int main()
+{
+ // intialize
+ srand(time(NULL));
+ generate_random_bytes(key, 16);
+ generate_random_bytes(iv, 16);
+
+ int length = 0, i;
+ char *encrypted = challenge17_encrypt(&length);
+
+ // detecting the length of the padding (need at least two blocks)
+ int nr_blocks = length / BLOCKSIZE;
+ nr_blocks--;
+
+ printf("length: %i, blocks: %i\n", length, nr_blocks);
+
+ char *tmp = malloc(length);
+ char *decrypted = malloc(length);;
+ memset(decrypted, 0xAA, length);
+ // try to break the last byte of the first block
+ char j;
+ int k;
+ for(k=nr_blocks-1;k>=0;k--) {
+ memcpy(tmp, encrypted, length);
+ printf("k is %i\n", k);
+ for(j=1;j<=BLOCKSIZE;j++) {
+ // created the right padding for the last j bytes
+ for(i=1;i<j;i++)
+ tmp[(k*BLOCKSIZE)+BLOCKSIZE-i] = decrypted[((k+1)*BLOCKSIZE)+BLOCKSIZE-i] ^ encrypted[(k*BLOCKSIZE)+BLOCKSIZE-i] ^ j;
+
+ for(i=0;i<256;i++) {
+ // cbc bit flipping
+ tmp[(k*BLOCKSIZE)+BLOCKSIZE-j] = i;
+ // retursn 1 if paddign is valid
+ if(cbc_padding_oracle(&tmp[k*BLOCKSIZE], 2*BLOCKSIZE)) {
+ // 0x01 for the last padding byte, next step it is 0x02
+ decrypted[((k+1)*BLOCKSIZE)+BLOCKSIZE-j] = (char) (i ^ (encrypted[(k*BLOCKSIZE)+BLOCKSIZE-j]) ^ j);
+ printf("got a hit %c\n", decrypted[((k+1)*BLOCKSIZE)+BLOCKSIZE-j+1]);
+ break;
+ }
+ }
+ }
+ }
+ printf("recovered plaintext: %s\n", &decrypted[BLOCKSIZE]);
+}
diff --git a/set3/task17_0 b/set3/task17_0
new file mode 100644
index 0000000..3cde4d1
--- /dev/null
+++ b/set3/task17_0
@@ -0,0 +1 @@
+MDAwMDAwTm93IHRoYXQgdGhlIHBhcnR5IGlzIGp1bXBpbmc=
diff --git a/set3/task17_1 b/set3/task17_1
new file mode 100644
index 0000000..2ba2eaa
--- /dev/null
+++ b/set3/task17_1
@@ -0,0 +1 @@
+MDAwMDAxV2l0aCB0aGUgYmFzcyBraWNrZWQgaW4gYW5kIHRoZSBWZWdhJ3MgYXJlIHB1bXBpbic=
diff --git a/set3/task17_2 b/set3/task17_2
new file mode 100644
index 0000000..0cc5bce
--- /dev/null
+++ b/set3/task17_2
@@ -0,0 +1 @@
+MDAwMDAyUXVpY2sgdG8gdGhlIHBvaW50LCB0byB0aGUgcG9pbnQsIG5vIGZha2luZw==
diff --git a/set3/task17_3 b/set3/task17_3
new file mode 100644
index 0000000..b10f8d4
--- /dev/null
+++ b/set3/task17_3
@@ -0,0 +1 @@
+MDAwMDAzQ29va2luZyBNQydzIGxpa2UgYSBwb3VuZCBvZiBiYWNvbg==
diff --git a/set3/task17_4 b/set3/task17_4
new file mode 100644
index 0000000..4765c7d
--- /dev/null
+++ b/set3/task17_4
@@ -0,0 +1 @@
+MDAwMDA0QnVybmluZyAnZW0sIGlmIHlvdSBhaW4ndCBxdWljayBhbmQgbmltYmxl
diff --git a/set3/task17_5 b/set3/task17_5
new file mode 100644
index 0000000..5b99081
--- /dev/null
+++ b/set3/task17_5
@@ -0,0 +1 @@
+MDAwMDA1SSBnbyBjcmF6eSB3aGVuIEkgaGVhciBhIGN5bWJhbA==
diff --git a/set3/task17_6 b/set3/task17_6
new file mode 100644
index 0000000..1a5e976
--- /dev/null
+++ b/set3/task17_6
@@ -0,0 +1 @@
+MDAwMDA2QW5kIGEgaGlnaCBoYXQgd2l0aCBhIHNvdXBlZCB1cCB0ZW1wbw==
diff --git a/set3/task17_7 b/set3/task17_7
new file mode 100644
index 0000000..41f022f
--- /dev/null
+++ b/set3/task17_7
@@ -0,0 +1 @@
+MDAwMDA3SSdtIG9uIGEgcm9sbCwgaXQncyB0aW1lIHRvIGdvIHNvbG8=
diff --git a/set3/task17_8 b/set3/task17_8
new file mode 100644
index 0000000..adb9041
--- /dev/null
+++ b/set3/task17_8
@@ -0,0 +1 @@
+MDAwMDA4b2xsaW4nIGluIG15IGZpdmUgcG9pbnQgb2g=
diff --git a/set3/task17_9 b/set3/task17_9
new file mode 100644
index 0000000..8dc72a5
--- /dev/null
+++ b/set3/task17_9
@@ -0,0 +1 @@
+MDAwMDA5aXRoIG15IHJhZy10b3AgZG93biBzbyBteSBoYWlyIGNhbiBibG93
diff --git a/set3/task19.c b/set3/task19.c
new file mode 100644
index 0000000..a036f4f
--- /dev/null
+++ b/set3/task19.c
@@ -0,0 +1,35 @@
+#include "../lib/lib.h"
+#include "../lib/lib2.h"
+#include "../lib/lib3.h"
+#include <time.h>
+
+#define CHALLENGE19_FILE_NR 40
+int main()
+{
+ int i;
+ char **file = malloc(sizeof(char *)*CHALLENGE19_FILE_NR);
+ int length_file[CHALLENGE19_FILE_NR];
+ int length[CHALLENGE19_FILE_NR];
+ char **plaintext= malloc(sizeof(char *)*CHALLENGE19_FILE_NR);
+ char **ciphertext= malloc(sizeof(char *)*CHALLENGE19_FILE_NR);
+ char filename[] = "./task19_data/task19_00";
+
+ char nonce[16];
+ generate_random_bytes(key, 16);
+ generate_random_bytes(nonce, 16);
+
+ for(i=0;i<CHALLENGE19_FILE_NR;i++) {
+ filename[strlen(filename)-1] = ((i % 10)+ '0');
+ filename[strlen(filename)-2] = ((i / 10) + '0');
+ length_file[i] = read_base64_file(filename, &file[i]);
+ plaintext[i] = malloc(length_file[i]);
+ length[i] = decode_base64(file[i], plaintext[i]);
+ printf("%s\n", plaintext[i]);
+ ciphertext[i] = malloc(length[i]);
+ aes_ctr(plaintext[i], length[i], ciphertext[i], key, nonce);
+ }
+
+ // let the cracking begin
+
+
+}
diff --git a/set3/task19_data/task19_00 b/set3/task19_data/task19_00
new file mode 100644
index 0000000..ded873a
--- /dev/null
+++ b/set3/task19_data/task19_00
@@ -0,0 +1 @@
+SSBoYXZlIG1ldCB0aGVtIGF0IGNsb3NlIG9mIGRheQ==
diff --git a/set3/task19_data/task19_01 b/set3/task19_data/task19_01
new file mode 100644
index 0000000..2ef0ae1
--- /dev/null
+++ b/set3/task19_data/task19_01
@@ -0,0 +1 @@
+Q29taW5nIHdpdGggdml2aWQgZmFjZXM=
diff --git a/set3/task19_data/task19_02 b/set3/task19_data/task19_02
new file mode 100644
index 0000000..a9b546e
--- /dev/null
+++ b/set3/task19_data/task19_02
@@ -0,0 +1 @@
+RnJvbSBjb3VudGVyIG9yIGRlc2sgYW1vbmcgZ3JleQ==
diff --git a/set3/task19_data/task19_03 b/set3/task19_data/task19_03
new file mode 100644
index 0000000..2ea23fa
--- /dev/null
+++ b/set3/task19_data/task19_03
@@ -0,0 +1 @@
+RWlnaHRlZW50aC1jZW50dXJ5IGhvdXNlcy4=
diff --git a/set3/task19_data/task19_04 b/set3/task19_data/task19_04
new file mode 100644
index 0000000..7ea2a43
--- /dev/null
+++ b/set3/task19_data/task19_04
@@ -0,0 +1 @@
+SSBoYXZlIHBhc3NlZCB3aXRoIGEgbm9kIG9mIHRoZSBoZWFk
diff --git a/set3/task19_data/task19_05 b/set3/task19_data/task19_05
new file mode 100644
index 0000000..ba3f268
--- /dev/null
+++ b/set3/task19_data/task19_05
@@ -0,0 +1 @@
+T3IgcG9saXRlIG1lYW5pbmdsZXNzIHdvcmRzLA==
diff --git a/set3/task19_data/task19_06 b/set3/task19_data/task19_06
new file mode 100644
index 0000000..a5e1a79
--- /dev/null
+++ b/set3/task19_data/task19_06
@@ -0,0 +1 @@
+T3IgaGF2ZSBsaW5nZXJlZCBhd2hpbGUgYW5kIHNhaWQ=
diff --git a/set3/task19_data/task19_07 b/set3/task19_data/task19_07
new file mode 100644
index 0000000..6b43132
--- /dev/null
+++ b/set3/task19_data/task19_07
@@ -0,0 +1 @@
+UG9saXRlIG1lYW5pbmdsZXNzIHdvcmRzLA==
diff --git a/set3/task19_data/task19_08 b/set3/task19_data/task19_08
new file mode 100644
index 0000000..8cc6a9a
--- /dev/null
+++ b/set3/task19_data/task19_08
@@ -0,0 +1 @@
+QW5kIHRob3VnaHQgYmVmb3JlIEkgaGFkIGRvbmU=
diff --git a/set3/task19_data/task19_09 b/set3/task19_data/task19_09
new file mode 100644
index 0000000..b2c7bd8
--- /dev/null
+++ b/set3/task19_data/task19_09
@@ -0,0 +1 @@
+T2YgYSBtb2NraW5nIHRhbGUgb3IgYSBnaWJl
diff --git a/set3/task19_data/task19_10 b/set3/task19_data/task19_10
new file mode 100644
index 0000000..734f4d8
--- /dev/null
+++ b/set3/task19_data/task19_10
@@ -0,0 +1 @@
+VG8gcGxlYXNlIGEgY29tcGFuaW9u
diff --git a/set3/task19_data/task19_11 b/set3/task19_data/task19_11
new file mode 100644
index 0000000..a1f04b4
--- /dev/null
+++ b/set3/task19_data/task19_11
@@ -0,0 +1 @@
+QXJvdW5kIHRoZSBmaXJlIGF0IHRoZSBjbHViLA==
diff --git a/set3/task19_data/task19_12 b/set3/task19_data/task19_12
new file mode 100644
index 0000000..864a764
--- /dev/null
+++ b/set3/task19_data/task19_12
@@ -0,0 +1 @@
+QmVpbmcgY2VydGFpbiB0aGF0IHRoZXkgYW5kIEk=
diff --git a/set3/task19_data/task19_13 b/set3/task19_data/task19_13
new file mode 100644
index 0000000..23a2eb1
--- /dev/null
+++ b/set3/task19_data/task19_13
@@ -0,0 +1 @@
+QnV0IGxpdmVkIHdoZXJlIG1vdGxleSBpcyB3b3JuOg==
diff --git a/set3/task19_data/task19_14 b/set3/task19_data/task19_14
new file mode 100644
index 0000000..5865e2c
--- /dev/null
+++ b/set3/task19_data/task19_14
@@ -0,0 +1 @@
+QWxsIGNoYW5nZWQsIGNoYW5nZWQgdXR0ZXJseTo=
diff --git a/set3/task19_data/task19_15 b/set3/task19_data/task19_15
new file mode 100644
index 0000000..cc8e0a4
--- /dev/null
+++ b/set3/task19_data/task19_15
@@ -0,0 +1 @@
+QSB0ZXJyaWJsZSBiZWF1dHkgaXMgYm9ybi4=
diff --git a/set3/task19_data/task19_16 b/set3/task19_data/task19_16
new file mode 100644
index 0000000..4db1ffe
--- /dev/null
+++ b/set3/task19_data/task19_16
@@ -0,0 +1 @@
+VGhhdCB3b21hbidzIGRheXMgd2VyZSBzcGVudA==
diff --git a/set3/task19_data/task19_17 b/set3/task19_data/task19_17
new file mode 100644
index 0000000..64da3a8
--- /dev/null
+++ b/set3/task19_data/task19_17
@@ -0,0 +1 @@
+SW4gaWdub3JhbnQgZ29vZCB3aWxsLA==
diff --git a/set3/task19_data/task19_18 b/set3/task19_data/task19_18
new file mode 100644
index 0000000..740bb98
--- /dev/null
+++ b/set3/task19_data/task19_18
@@ -0,0 +1 @@
+SGVyIG5pZ2h0cyBpbiBhcmd1bWVudA==
diff --git a/set3/task19_data/task19_19 b/set3/task19_data/task19_19
new file mode 100644
index 0000000..26b01e1
--- /dev/null
+++ b/set3/task19_data/task19_19
@@ -0,0 +1 @@
+VW50aWwgaGVyIHZvaWNlIGdyZXcgc2hyaWxsLg==
diff --git a/set3/task19_data/task19_20 b/set3/task19_data/task19_20
new file mode 100644
index 0000000..15b6e63
--- /dev/null
+++ b/set3/task19_data/task19_20
@@ -0,0 +1 @@
+V2hhdCB2b2ljZSBtb3JlIHN3ZWV0IHRoYW4gaGVycw==
diff --git a/set3/task19_data/task19_21 b/set3/task19_data/task19_21
new file mode 100644
index 0000000..95eb336
--- /dev/null
+++ b/set3/task19_data/task19_21
@@ -0,0 +1 @@
+V2hlbiB5b3VuZyBhbmQgYmVhdXRpZnVsLA==
diff --git a/set3/task19_data/task19_22 b/set3/task19_data/task19_22
new file mode 100644
index 0000000..1fe7f50
--- /dev/null
+++ b/set3/task19_data/task19_22
@@ -0,0 +1 @@
+U2hlIHJvZGUgdG8gaGFycmllcnM/
diff --git a/set3/task19_data/task19_23 b/set3/task19_data/task19_23
new file mode 100644
index 0000000..f6a3b04
--- /dev/null
+++ b/set3/task19_data/task19_23
@@ -0,0 +1 @@
+VGhpcyBtYW4gaGFkIGtlcHQgYSBzY2hvb2w=
diff --git a/set3/task19_data/task19_24 b/set3/task19_data/task19_24
new file mode 100644
index 0000000..cceb1bf
--- /dev/null
+++ b/set3/task19_data/task19_24
@@ -0,0 +1 @@
+QW5kIHJvZGUgb3VyIHdpbmdlZCBob3JzZS4=
diff --git a/set3/task19_data/task19_25 b/set3/task19_data/task19_25
new file mode 100644
index 0000000..157f7f8
--- /dev/null
+++ b/set3/task19_data/task19_25
@@ -0,0 +1 @@
+VGhpcyBvdGhlciBoaXMgaGVscGVyIGFuZCBmcmllbmQ=
diff --git a/set3/task19_data/task19_26 b/set3/task19_data/task19_26
new file mode 100644
index 0000000..ccca06e
--- /dev/null
+++ b/set3/task19_data/task19_26
@@ -0,0 +1 @@
+V2FzIGNvbWluZyBpbnRvIGhpcyBmb3JjZTs=
diff --git a/set3/task19_data/task19_27 b/set3/task19_data/task19_27
new file mode 100644
index 0000000..985b7a6
--- /dev/null
+++ b/set3/task19_data/task19_27
@@ -0,0 +1 @@
+SGUgbWlnaHQgaGF2ZSB3b24gZmFtZSBpbiB0aGUgZW5kLA==
diff --git a/set3/task19_data/task19_28 b/set3/task19_data/task19_28
new file mode 100644
index 0000000..fc8e2d5
--- /dev/null
+++ b/set3/task19_data/task19_28
@@ -0,0 +1 @@
+U28gc2Vuc2l0aXZlIGhpcyBuYXR1cmUgc2VlbWVkLA==
diff --git a/set3/task19_data/task19_29 b/set3/task19_data/task19_29
new file mode 100644
index 0000000..448495a
--- /dev/null
+++ b/set3/task19_data/task19_29
@@ -0,0 +1 @@
+U28gZGFyaW5nIGFuZCBzd2VldCBoaXMgdGhvdWdodC4=
diff --git a/set3/task19_data/task19_30 b/set3/task19_data/task19_30
new file mode 100644
index 0000000..c42a69a
--- /dev/null
+++ b/set3/task19_data/task19_30
@@ -0,0 +1 @@
+VGhpcyBvdGhlciBtYW4gSSBoYWQgZHJlYW1lZA==
diff --git a/set3/task19_data/task19_31 b/set3/task19_data/task19_31
new file mode 100644
index 0000000..5e3e2e7
--- /dev/null
+++ b/set3/task19_data/task19_31
@@ -0,0 +1 @@
+QSBkcnVua2VuLCB2YWluLWdsb3Jpb3VzIGxvdXQu
diff --git a/set3/task19_data/task19_32 b/set3/task19_data/task19_32
new file mode 100644
index 0000000..fa3b3aa
--- /dev/null
+++ b/set3/task19_data/task19_32
@@ -0,0 +1 @@
+SGUgaGFkIGRvbmUgbW9zdCBiaXR0ZXIgd3Jvbmc=
diff --git a/set3/task19_data/task19_33 b/set3/task19_data/task19_33
new file mode 100644
index 0000000..e0777a4
--- /dev/null
+++ b/set3/task19_data/task19_33
@@ -0,0 +1 @@
+VG8gc29tZSB3aG8gYXJlIG5lYXIgbXkgaGVhcnQs
diff --git a/set3/task19_data/task19_34 b/set3/task19_data/task19_34
new file mode 100644
index 0000000..7b63d9e
--- /dev/null
+++ b/set3/task19_data/task19_34
@@ -0,0 +1 @@
+WWV0IEkgbnVtYmVyIGhpbSBpbiB0aGUgc29uZzs=
diff --git a/set3/task19_data/task19_35 b/set3/task19_data/task19_35
new file mode 100644
index 0000000..dafc9ab
--- /dev/null
+++ b/set3/task19_data/task19_35
@@ -0,0 +1 @@
+SGUsIHRvbywgaGFzIHJlc2lnbmVkIGhpcyBwYXJ0
diff --git a/set3/task19_data/task19_36 b/set3/task19_data/task19_36
new file mode 100644
index 0000000..56f63ac
--- /dev/null
+++ b/set3/task19_data/task19_36
@@ -0,0 +1 @@
+SW4gdGhlIGNhc3VhbCBjb21lZHk7
diff --git a/set3/task19_data/task19_37 b/set3/task19_data/task19_37
new file mode 100644
index 0000000..74e011b
--- /dev/null
+++ b/set3/task19_data/task19_37
@@ -0,0 +1 @@
+SGUsIHRvbywgaGFzIGJlZW4gY2hhbmdlZCBpbiBoaXMgdHVybiw=
diff --git a/set3/task19_data/task19_38 b/set3/task19_data/task19_38
new file mode 100644
index 0000000..40e0406
--- /dev/null
+++ b/set3/task19_data/task19_38
@@ -0,0 +1 @@
+VHJhbnNmb3JtZWQgdXR0ZXJseTo=
diff --git a/set3/task19_data/task19_39 b/set3/task19_data/task19_39
new file mode 100644
index 0000000..cc8e0a4
--- /dev/null
+++ b/set3/task19_data/task19_39
@@ -0,0 +1 @@
+QSB0ZXJyaWJsZSBiZWF1dHkgaXMgYm9ybi4=
diff --git a/set3/task19_data/task19_all b/set3/task19_data/task19_all
new file mode 100644
index 0000000..affd17b
--- /dev/null
+++ b/set3/task19_data/task19_all
@@ -0,0 +1,40 @@
+SSBoYXZlIG1ldCB0aGVtIGF0IGNsb3NlIG9mIGRheQ==
+Q29taW5nIHdpdGggdml2aWQgZmFjZXM=
+RnJvbSBjb3VudGVyIG9yIGRlc2sgYW1vbmcgZ3JleQ==
+RWlnaHRlZW50aC1jZW50dXJ5IGhvdXNlcy4=
+SSBoYXZlIHBhc3NlZCB3aXRoIGEgbm9kIG9mIHRoZSBoZWFk
+T3IgcG9saXRlIG1lYW5pbmdsZXNzIHdvcmRzLA==
+T3IgaGF2ZSBsaW5nZXJlZCBhd2hpbGUgYW5kIHNhaWQ=
+UG9saXRlIG1lYW5pbmdsZXNzIHdvcmRzLA==
+QW5kIHRob3VnaHQgYmVmb3JlIEkgaGFkIGRvbmU=
+T2YgYSBtb2NraW5nIHRhbGUgb3IgYSBnaWJl
+VG8gcGxlYXNlIGEgY29tcGFuaW9u
+QXJvdW5kIHRoZSBmaXJlIGF0IHRoZSBjbHViLA==
+QmVpbmcgY2VydGFpbiB0aGF0IHRoZXkgYW5kIEk=
+QnV0IGxpdmVkIHdoZXJlIG1vdGxleSBpcyB3b3JuOg==
+QWxsIGNoYW5nZWQsIGNoYW5nZWQgdXR0ZXJseTo=
+QSB0ZXJyaWJsZSBiZWF1dHkgaXMgYm9ybi4=
+VGhhdCB3b21hbidzIGRheXMgd2VyZSBzcGVudA==
+SW4gaWdub3JhbnQgZ29vZCB3aWxsLA==
+SGVyIG5pZ2h0cyBpbiBhcmd1bWVudA==
+VW50aWwgaGVyIHZvaWNlIGdyZXcgc2hyaWxsLg==
+V2hhdCB2b2ljZSBtb3JlIHN3ZWV0IHRoYW4gaGVycw==
+V2hlbiB5b3VuZyBhbmQgYmVhdXRpZnVsLA==
+U2hlIHJvZGUgdG8gaGFycmllcnM/
+VGhpcyBtYW4gaGFkIGtlcHQgYSBzY2hvb2w=
+QW5kIHJvZGUgb3VyIHdpbmdlZCBob3JzZS4=
+VGhpcyBvdGhlciBoaXMgaGVscGVyIGFuZCBmcmllbmQ=
+V2FzIGNvbWluZyBpbnRvIGhpcyBmb3JjZTs=
+SGUgbWlnaHQgaGF2ZSB3b24gZmFtZSBpbiB0aGUgZW5kLA==
+U28gc2Vuc2l0aXZlIGhpcyBuYXR1cmUgc2VlbWVkLA==
+U28gZGFyaW5nIGFuZCBzd2VldCBoaXMgdGhvdWdodC4=
+VGhpcyBvdGhlciBtYW4gSSBoYWQgZHJlYW1lZA==
+QSBkcnVua2VuLCB2YWluLWdsb3Jpb3VzIGxvdXQu
+SGUgaGFkIGRvbmUgbW9zdCBiaXR0ZXIgd3Jvbmc=
+VG8gc29tZSB3aG8gYXJlIG5lYXIgbXkgaGVhcnQs
+WWV0IEkgbnVtYmVyIGhpbSBpbiB0aGUgc29uZzs=
+SGUsIHRvbywgaGFzIHJlc2lnbmVkIGhpcyBwYXJ0
+SW4gdGhlIGNhc3VhbCBjb21lZHk7
+SGUsIHRvbywgaGFzIGJlZW4gY2hhbmdlZCBpbiBoaXMgdHVybiw=
+VHJhbnNmb3JtZWQgdXR0ZXJseTo=
+QSB0ZXJyaWJsZSBiZWF1dHkgaXMgYm9ybi4=
diff --git a/set3/task20_data/20.txt b/set3/task20_data/20.txt
new file mode 100644
index 0000000..d601f0b
--- /dev/null
+++ b/set3/task20_data/20.txt
@@ -0,0 +1,60 @@
+SSdtIHJhdGVkICJSIi4uLnRoaXMgaXMgYSB3YXJuaW5nLCB5YSBiZXR0ZXIgdm9pZCAvIFBvZXRzIGFyZSBwYXJhbm9pZCwgREoncyBELXN0cm95ZWQ=
+Q3V6IEkgY2FtZSBiYWNrIHRvIGF0dGFjayBvdGhlcnMgaW4gc3BpdGUtIC8gU3RyaWtlIGxpa2UgbGlnaHRuaW4nLCBJdCdzIHF1aXRlIGZyaWdodGVuaW4nIQ==
+QnV0IGRvbid0IGJlIGFmcmFpZCBpbiB0aGUgZGFyaywgaW4gYSBwYXJrIC8gTm90IGEgc2NyZWFtIG9yIGEgY3J5LCBvciBhIGJhcmssIG1vcmUgbGlrZSBhIHNwYXJrOw==
+WWEgdHJlbWJsZSBsaWtlIGEgYWxjb2hvbGljLCBtdXNjbGVzIHRpZ2h0ZW4gdXAgLyBXaGF0J3MgdGhhdCwgbGlnaHRlbiB1cCEgWW91IHNlZSBhIHNpZ2h0IGJ1dA==
+U3VkZGVubHkgeW91IGZlZWwgbGlrZSB5b3VyIGluIGEgaG9ycm9yIGZsaWNrIC8gWW91IGdyYWIgeW91ciBoZWFydCB0aGVuIHdpc2ggZm9yIHRvbW9ycm93IHF1aWNrIQ==
+TXVzaWMncyB0aGUgY2x1ZSwgd2hlbiBJIGNvbWUgeW91ciB3YXJuZWQgLyBBcG9jYWx5cHNlIE5vdywgd2hlbiBJJ20gZG9uZSwgeWEgZ29uZSE=
+SGF2ZW4ndCB5b3UgZXZlciBoZWFyZCBvZiBhIE1DLW11cmRlcmVyPyAvIFRoaXMgaXMgdGhlIGRlYXRoIHBlbmFsdHksYW5kIEknbSBzZXJ2aW4nIGE=
+RGVhdGggd2lzaCwgc28gY29tZSBvbiwgc3RlcCB0byB0aGlzIC8gSHlzdGVyaWNhbCBpZGVhIGZvciBhIGx5cmljYWwgcHJvZmVzc2lvbmlzdCE=
+RnJpZGF5IHRoZSB0aGlydGVlbnRoLCB3YWxraW5nIGRvd24gRWxtIFN0cmVldCAvIFlvdSBjb21lIGluIG15IHJlYWxtIHlhIGdldCBiZWF0IQ==
+VGhpcyBpcyBvZmYgbGltaXRzLCBzbyB5b3VyIHZpc2lvbnMgYXJlIGJsdXJyeSAvIEFsbCB5YSBzZWUgaXMgdGhlIG1ldGVycyBhdCBhIHZvbHVtZQ==
+VGVycm9yIGluIHRoZSBzdHlsZXMsIG5ldmVyIGVycm9yLWZpbGVzIC8gSW5kZWVkIEknbSBrbm93bi15b3VyIGV4aWxlZCE=
+Rm9yIHRob3NlIHRoYXQgb3Bwb3NlIHRvIGJlIGxldmVsIG9yIG5leHQgdG8gdGhpcyAvIEkgYWluJ3QgYSBkZXZpbCBhbmQgdGhpcyBhaW4ndCB0aGUgRXhvcmNpc3Qh
+V29yc2UgdGhhbiBhIG5pZ2h0bWFyZSwgeW91IGRvbid0IGhhdmUgdG8gc2xlZXAgYSB3aW5rIC8gVGhlIHBhaW4ncyBhIG1pZ3JhaW5lIGV2ZXJ5IHRpbWUgeWEgdGhpbms=
+Rmxhc2hiYWNrcyBpbnRlcmZlcmUsIHlhIHN0YXJ0IHRvIGhlYXI6IC8gVGhlIFItQS1LLUktTSBpbiB5b3VyIGVhcjs=
+VGhlbiB0aGUgYmVhdCBpcyBoeXN0ZXJpY2FsIC8gVGhhdCBtYWtlcyBFcmljIGdvIGdldCBhIGF4IGFuZCBjaG9wcyB0aGUgd2Fjaw==
+U29vbiB0aGUgbHlyaWNhbCBmb3JtYXQgaXMgc3VwZXJpb3IgLyBGYWNlcyBvZiBkZWF0aCByZW1haW4=
+TUMncyBkZWNheWluZywgY3V6IHRoZXkgbmV2ZXIgc3RheWVkIC8gVGhlIHNjZW5lIG9mIGEgY3JpbWUgZXZlcnkgbmlnaHQgYXQgdGhlIHNob3c=
+VGhlIGZpZW5kIG9mIGEgcmh5bWUgb24gdGhlIG1pYyB0aGF0IHlvdSBrbm93IC8gSXQncyBvbmx5IG9uZSBjYXBhYmxlLCBicmVha3MtdGhlIHVuYnJlYWthYmxl
+TWVsb2RpZXMtdW5tYWthYmxlLCBwYXR0ZXJuLXVuZXNjYXBhYmxlIC8gQSBob3JuIGlmIHdhbnQgdGhlIHN0eWxlIEkgcG9zc2Vz
+SSBibGVzcyB0aGUgY2hpbGQsIHRoZSBlYXJ0aCwgdGhlIGdvZHMgYW5kIGJvbWIgdGhlIHJlc3QgLyBGb3IgdGhvc2UgdGhhdCBlbnZ5IGEgTUMgaXQgY2FuIGJl
+SGF6YXJkb3VzIHRvIHlvdXIgaGVhbHRoIHNvIGJlIGZyaWVuZGx5IC8gQSBtYXR0ZXIgb2YgbGlmZSBhbmQgZGVhdGgsIGp1c3QgbGlrZSBhIGV0Y2gtYS1za2V0Y2g=
+U2hha2UgJ3RpbGwgeW91ciBjbGVhciwgbWFrZSBpdCBkaXNhcHBlYXIsIG1ha2UgdGhlIG5leHQgLyBBZnRlciB0aGUgY2VyZW1vbnksIGxldCB0aGUgcmh5bWUgcmVzdCBpbiBwZWFjZQ==
+SWYgbm90LCBteSBzb3VsJ2xsIHJlbGVhc2UhIC8gVGhlIHNjZW5lIGlzIHJlY3JlYXRlZCwgcmVpbmNhcm5hdGVkLCB1cGRhdGVkLCBJJ20gZ2xhZCB5b3UgbWFkZSBpdA==
+Q3V6IHlvdXIgYWJvdXQgdG8gc2VlIGEgZGlzYXN0cm91cyBzaWdodCAvIEEgcGVyZm9ybWFuY2UgbmV2ZXIgYWdhaW4gcGVyZm9ybWVkIG9uIGEgbWljOg==
+THlyaWNzIG9mIGZ1cnkhIEEgZmVhcmlmaWVkIGZyZWVzdHlsZSEgLyBUaGUgIlIiIGlzIGluIHRoZSBob3VzZS10b28gbXVjaCB0ZW5zaW9uIQ==
+TWFrZSBzdXJlIHRoZSBzeXN0ZW0ncyBsb3VkIHdoZW4gSSBtZW50aW9uIC8gUGhyYXNlcyB0aGF0J3MgZmVhcnNvbWU=
+WW91IHdhbnQgdG8gaGVhciBzb21lIHNvdW5kcyB0aGF0IG5vdCBvbmx5IHBvdW5kcyBidXQgcGxlYXNlIHlvdXIgZWFyZHJ1bXM7IC8gSSBzaXQgYmFjayBhbmQgb2JzZXJ2ZSB0aGUgd2hvbGUgc2NlbmVyeQ==
+VGhlbiBub25jaGFsYW50bHkgdGVsbCB5b3Ugd2hhdCBpdCBtZWFuIHRvIG1lIC8gU3RyaWN0bHkgYnVzaW5lc3MgSSdtIHF1aWNrbHkgaW4gdGhpcyBtb29k
+QW5kIEkgZG9uJ3QgY2FyZSBpZiB0aGUgd2hvbGUgY3Jvd2QncyBhIHdpdG5lc3MhIC8gSSdtIGEgdGVhciB5b3UgYXBhcnQgYnV0IEknbSBhIHNwYXJlIHlvdSBhIGhlYXJ0
+UHJvZ3JhbSBpbnRvIHRoZSBzcGVlZCBvZiB0aGUgcmh5bWUsIHByZXBhcmUgdG8gc3RhcnQgLyBSaHl0aG0ncyBvdXQgb2YgdGhlIHJhZGl1cywgaW5zYW5lIGFzIHRoZSBjcmF6aWVzdA==
+TXVzaWNhbCBtYWRuZXNzIE1DIGV2ZXIgbWFkZSwgc2VlIGl0J3MgLyBOb3cgYW4gZW1lcmdlbmN5LCBvcGVuLWhlYXJ0IHN1cmdlcnk=
+T3BlbiB5b3VyIG1pbmQsIHlvdSB3aWxsIGZpbmQgZXZlcnkgd29yZCdsbCBiZSAvIEZ1cmllciB0aGFuIGV2ZXIsIEkgcmVtYWluIHRoZSBmdXJ0dXJl
+QmF0dGxlJ3MgdGVtcHRpbmcuLi53aGF0ZXZlciBzdWl0cyB5YSEgLyBGb3Igd29yZHMgdGhlIHNlbnRlbmNlLCB0aGVyZSdzIG5vIHJlc2VtYmxhbmNl
+WW91IHRoaW5rIHlvdSdyZSBydWZmZXIsIHRoZW4gc3VmZmVyIHRoZSBjb25zZXF1ZW5jZXMhIC8gSSdtIG5ldmVyIGR5aW5nLXRlcnJpZnlpbmcgcmVzdWx0cw==
+SSB3YWtlIHlhIHdpdGggaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIHZvbHRzIC8gTWljLXRvLW1vdXRoIHJlc3VzY2l0YXRpb24sIHJoeXRobSB3aXRoIHJhZGlhdGlvbg==
+Tm92b2NhaW4gZWFzZSB0aGUgcGFpbiBpdCBtaWdodCBzYXZlIGhpbSAvIElmIG5vdCwgRXJpYyBCLidzIHRoZSBqdWRnZSwgdGhlIGNyb3dkJ3MgdGhlIGp1cnk=
+WW8gUmFraW0sIHdoYXQncyB1cD8gLyBZbywgSSdtIGRvaW5nIHRoZSBrbm93bGVkZ2UsIEUuLCBtYW4gSSdtIHRyeWluZyB0byBnZXQgcGFpZCBpbiBmdWxs
+V2VsbCwgY2hlY2sgdGhpcyBvdXQsIHNpbmNlIE5vcmJ5IFdhbHRlcnMgaXMgb3VyIGFnZW5jeSwgcmlnaHQ/IC8gVHJ1ZQ==
+S2FyYSBMZXdpcyBpcyBvdXIgYWdlbnQsIHdvcmQgdXAgLyBaYWtpYSBhbmQgNHRoIGFuZCBCcm9hZHdheSBpcyBvdXIgcmVjb3JkIGNvbXBhbnksIGluZGVlZA==
+T2theSwgc28gd2hvIHdlIHJvbGxpbicgd2l0aCB0aGVuPyBXZSByb2xsaW4nIHdpdGggUnVzaCAvIE9mIFJ1c2h0b3duIE1hbmFnZW1lbnQ=
+Q2hlY2sgdGhpcyBvdXQsIHNpbmNlIHdlIHRhbGtpbmcgb3ZlciAvIFRoaXMgZGVmIGJlYXQgcmlnaHQgaGVyZSB0aGF0IEkgcHV0IHRvZ2V0aGVy
+SSB3YW5uYSBoZWFyIHNvbWUgb2YgdGhlbSBkZWYgcmh5bWVzLCB5b3Uga25vdyB3aGF0IEknbSBzYXlpbic/IC8gQW5kIHRvZ2V0aGVyLCB3ZSBjYW4gZ2V0IHBhaWQgaW4gZnVsbA==
+VGhpbmtpbicgb2YgYSBtYXN0ZXIgcGxhbiAvICdDdXogYWluJ3QgbnV0aGluJyBidXQgc3dlYXQgaW5zaWRlIG15IGhhbmQ=
+U28gSSBkaWcgaW50byBteSBwb2NrZXQsIGFsbCBteSBtb25leSBpcyBzcGVudCAvIFNvIEkgZGlnIGRlZXBlciBidXQgc3RpbGwgY29taW4nIHVwIHdpdGggbGludA==
+U28gSSBzdGFydCBteSBtaXNzaW9uLCBsZWF2ZSBteSByZXNpZGVuY2UgLyBUaGlua2luJyBob3cgY291bGQgSSBnZXQgc29tZSBkZWFkIHByZXNpZGVudHM=
+SSBuZWVkIG1vbmV5LCBJIHVzZWQgdG8gYmUgYSBzdGljay11cCBraWQgLyBTbyBJIHRoaW5rIG9mIGFsbCB0aGUgZGV2aW91cyB0aGluZ3MgSSBkaWQ=
+SSB1c2VkIHRvIHJvbGwgdXAsIHRoaXMgaXMgYSBob2xkIHVwLCBhaW4ndCBudXRoaW4nIGZ1bm55IC8gU3RvcCBzbWlsaW5nLCBiZSBzdGlsbCwgZG9uJ3QgbnV0aGluJyBtb3ZlIGJ1dCB0aGUgbW9uZXk=
+QnV0IG5vdyBJIGxlYXJuZWQgdG8gZWFybiAnY3V6IEknbSByaWdodGVvdXMgLyBJIGZlZWwgZ3JlYXQsIHNvIG1heWJlIEkgbWlnaHQganVzdA==
+U2VhcmNoIGZvciBhIG5pbmUgdG8gZml2ZSwgaWYgSSBzdHJpdmUgLyBUaGVuIG1heWJlIEknbGwgc3RheSBhbGl2ZQ==
+U28gSSB3YWxrIHVwIHRoZSBzdHJlZXQgd2hpc3RsaW4nIHRoaXMgLyBGZWVsaW4nIG91dCBvZiBwbGFjZSAnY3V6LCBtYW4sIGRvIEkgbWlzcw==
+QSBwZW4gYW5kIGEgcGFwZXIsIGEgc3RlcmVvLCBhIHRhcGUgb2YgLyBNZSBhbmQgRXJpYyBCLCBhbmQgYSBuaWNlIGJpZyBwbGF0ZSBvZg==
+RmlzaCwgd2hpY2ggaXMgbXkgZmF2b3JpdGUgZGlzaCAvIEJ1dCB3aXRob3V0IG5vIG1vbmV5IGl0J3Mgc3RpbGwgYSB3aXNo
+J0N1eiBJIGRvbid0IGxpa2UgdG8gZHJlYW0gYWJvdXQgZ2V0dGluJyBwYWlkIC8gU28gSSBkaWcgaW50byB0aGUgYm9va3Mgb2YgdGhlIHJoeW1lcyB0aGF0IEkgbWFkZQ==
+U28gbm93IHRvIHRlc3QgdG8gc2VlIGlmIEkgZ290IHB1bGwgLyBIaXQgdGhlIHN0dWRpbywgJ2N1eiBJJ20gcGFpZCBpbiBmdWxs
+UmFraW0sIGNoZWNrIHRoaXMgb3V0LCB5byAvIFlvdSBnbyB0byB5b3VyIGdpcmwgaG91c2UgYW5kIEknbGwgZ28gdG8gbWluZQ==
+J0NhdXNlIG15IGdpcmwgaXMgZGVmaW5pdGVseSBtYWQgLyAnQ2F1c2UgaXQgdG9vayB1cyB0b28gbG9uZyB0byBkbyB0aGlzIGFsYnVt
+WW8sIEkgaGVhciB3aGF0IHlvdSdyZSBzYXlpbmcgLyBTbyBsZXQncyBqdXN0IHB1bXAgdGhlIG11c2ljIHVw
+QW5kIGNvdW50IG91ciBtb25leSAvIFlvLCB3ZWxsIGNoZWNrIHRoaXMgb3V0LCB5byBFbGk=
+VHVybiBkb3duIHRoZSBiYXNzIGRvd24gLyBBbmQgbGV0IHRoZSBiZWF0IGp1c3Qga2VlcCBvbiByb2NraW4n
+QW5kIHdlIG91dHRhIGhlcmUgLyBZbywgd2hhdCBoYXBwZW5lZCB0byBwZWFjZT8gLyBQZWFjZQ==
diff --git a/set3/task20_data/task20_00 b/set3/task20_data/task20_00
new file mode 100644
index 0000000..ac2e746
--- /dev/null
+++ b/set3/task20_data/task20_00
@@ -0,0 +1 @@
+SSdtIHJhdGVkICJSIi4uLnRoaXMgaXMgYSB3YXJuaW5nLCB5YSBiZXR0ZXIgdm9pZCAvIFBvZXRzIGFyZSBwYXJhbm9pZCwgREoncyBELXN0cm95ZWQ=
diff --git a/set3/task20_data/task20_01 b/set3/task20_data/task20_01
new file mode 100644
index 0000000..6943297
--- /dev/null
+++ b/set3/task20_data/task20_01
@@ -0,0 +1 @@
+Q3V6IEkgY2FtZSBiYWNrIHRvIGF0dGFjayBvdGhlcnMgaW4gc3BpdGUtIC8gU3RyaWtlIGxpa2UgbGlnaHRuaW4nLCBJdCdzIHF1aXRlIGZyaWdodGVuaW4nIQ==
diff --git a/set3/task20_data/task20_02 b/set3/task20_data/task20_02
new file mode 100644
index 0000000..14536ba
--- /dev/null
+++ b/set3/task20_data/task20_02
@@ -0,0 +1 @@
+QnV0IGRvbid0IGJlIGFmcmFpZCBpbiB0aGUgZGFyaywgaW4gYSBwYXJrIC8gTm90IGEgc2NyZWFtIG9yIGEgY3J5LCBvciBhIGJhcmssIG1vcmUgbGlrZSBhIHNwYXJrOw==
diff --git a/set3/task20_data/task20_03 b/set3/task20_data/task20_03
new file mode 100644
index 0000000..1a5e846
--- /dev/null
+++ b/set3/task20_data/task20_03
@@ -0,0 +1 @@
+WWEgdHJlbWJsZSBsaWtlIGEgYWxjb2hvbGljLCBtdXNjbGVzIHRpZ2h0ZW4gdXAgLyBXaGF0J3MgdGhhdCwgbGlnaHRlbiB1cCEgWW91IHNlZSBhIHNpZ2h0IGJ1dA==
diff --git a/set3/task20_data/task20_04 b/set3/task20_data/task20_04
new file mode 100644
index 0000000..27afef9
--- /dev/null
+++ b/set3/task20_data/task20_04
@@ -0,0 +1 @@
+U3VkZGVubHkgeW91IGZlZWwgbGlrZSB5b3VyIGluIGEgaG9ycm9yIGZsaWNrIC8gWW91IGdyYWIgeW91ciBoZWFydCB0aGVuIHdpc2ggZm9yIHRvbW9ycm93IHF1aWNrIQ==
diff --git a/set3/task20_data/task20_05 b/set3/task20_data/task20_05
new file mode 100644
index 0000000..ceecbfa
--- /dev/null
+++ b/set3/task20_data/task20_05
@@ -0,0 +1 @@
+TXVzaWMncyB0aGUgY2x1ZSwgd2hlbiBJIGNvbWUgeW91ciB3YXJuZWQgLyBBcG9jYWx5cHNlIE5vdywgd2hlbiBJJ20gZG9uZSwgeWEgZ29uZSE=
diff --git a/set3/task20_data/task20_06 b/set3/task20_data/task20_06
new file mode 100644
index 0000000..d62512b
--- /dev/null
+++ b/set3/task20_data/task20_06
@@ -0,0 +1 @@
+SGF2ZW4ndCB5b3UgZXZlciBoZWFyZCBvZiBhIE1DLW11cmRlcmVyPyAvIFRoaXMgaXMgdGhlIGRlYXRoIHBlbmFsdHksYW5kIEknbSBzZXJ2aW4nIGE=
diff --git a/set3/task20_data/task20_07 b/set3/task20_data/task20_07
new file mode 100644
index 0000000..1b0cdc6
--- /dev/null
+++ b/set3/task20_data/task20_07
@@ -0,0 +1 @@
+RGVhdGggd2lzaCwgc28gY29tZSBvbiwgc3RlcCB0byB0aGlzIC8gSHlzdGVyaWNhbCBpZGVhIGZvciBhIGx5cmljYWwgcHJvZmVzc2lvbmlzdCE=
diff --git a/set3/task20_data/task20_08 b/set3/task20_data/task20_08
new file mode 100644
index 0000000..167d125
--- /dev/null
+++ b/set3/task20_data/task20_08
@@ -0,0 +1 @@
+RnJpZGF5IHRoZSB0aGlydGVlbnRoLCB3YWxraW5nIGRvd24gRWxtIFN0cmVldCAvIFlvdSBjb21lIGluIG15IHJlYWxtIHlhIGdldCBiZWF0IQ==
diff --git a/set3/task20_data/task20_09 b/set3/task20_data/task20_09
new file mode 100644
index 0000000..c572a4c
--- /dev/null
+++ b/set3/task20_data/task20_09
@@ -0,0 +1 @@
+VGhpcyBpcyBvZmYgbGltaXRzLCBzbyB5b3VyIHZpc2lvbnMgYXJlIGJsdXJyeSAvIEFsbCB5YSBzZWUgaXMgdGhlIG1ldGVycyBhdCBhIHZvbHVtZQ==
diff --git a/set3/task20_data/task20_10 b/set3/task20_data/task20_10
new file mode 100644
index 0000000..8e58d06
--- /dev/null
+++ b/set3/task20_data/task20_10
@@ -0,0 +1 @@
+VGVycm9yIGluIHRoZSBzdHlsZXMsIG5ldmVyIGVycm9yLWZpbGVzIC8gSW5kZWVkIEknbSBrbm93bi15b3VyIGV4aWxlZCE=
diff --git a/set3/task20_data/task20_11 b/set3/task20_data/task20_11
new file mode 100644
index 0000000..1b4f6fd
--- /dev/null
+++ b/set3/task20_data/task20_11
@@ -0,0 +1 @@
+Rm9yIHRob3NlIHRoYXQgb3Bwb3NlIHRvIGJlIGxldmVsIG9yIG5leHQgdG8gdGhpcyAvIEkgYWluJ3QgYSBkZXZpbCBhbmQgdGhpcyBhaW4ndCB0aGUgRXhvcmNpc3Qh
diff --git a/set3/task20_data/task20_12 b/set3/task20_data/task20_12
new file mode 100644
index 0000000..699eaf0
--- /dev/null
+++ b/set3/task20_data/task20_12
@@ -0,0 +1 @@
+V29yc2UgdGhhbiBhIG5pZ2h0bWFyZSwgeW91IGRvbid0IGhhdmUgdG8gc2xlZXAgYSB3aW5rIC8gVGhlIHBhaW4ncyBhIG1pZ3JhaW5lIGV2ZXJ5IHRpbWUgeWEgdGhpbms=
diff --git a/set3/task20_data/task20_13 b/set3/task20_data/task20_13
new file mode 100644
index 0000000..f891df2
--- /dev/null
+++ b/set3/task20_data/task20_13
@@ -0,0 +1 @@
+Rmxhc2hiYWNrcyBpbnRlcmZlcmUsIHlhIHN0YXJ0IHRvIGhlYXI6IC8gVGhlIFItQS1LLUktTSBpbiB5b3VyIGVhcjs=
diff --git a/set3/task20_data/task20_14 b/set3/task20_data/task20_14
new file mode 100644
index 0000000..e9280e7
--- /dev/null
+++ b/set3/task20_data/task20_14
@@ -0,0 +1 @@
+VGhlbiB0aGUgYmVhdCBpcyBoeXN0ZXJpY2FsIC8gVGhhdCBtYWtlcyBFcmljIGdvIGdldCBhIGF4IGFuZCBjaG9wcyB0aGUgd2Fjaw==
diff --git a/set3/task20_data/task20_15 b/set3/task20_data/task20_15
new file mode 100644
index 0000000..dc0266b
--- /dev/null
+++ b/set3/task20_data/task20_15
@@ -0,0 +1 @@
+U29vbiB0aGUgbHlyaWNhbCBmb3JtYXQgaXMgc3VwZXJpb3IgLyBGYWNlcyBvZiBkZWF0aCByZW1haW4=
diff --git a/set3/task20_data/task20_16 b/set3/task20_data/task20_16
new file mode 100644
index 0000000..6d45b04
--- /dev/null
+++ b/set3/task20_data/task20_16
@@ -0,0 +1 @@
+TUMncyBkZWNheWluZywgY3V6IHRoZXkgbmV2ZXIgc3RheWVkIC8gVGhlIHNjZW5lIG9mIGEgY3JpbWUgZXZlcnkgbmlnaHQgYXQgdGhlIHNob3c=
diff --git a/set3/task20_data/task20_17 b/set3/task20_data/task20_17
new file mode 100644
index 0000000..6ef9c4e
--- /dev/null
+++ b/set3/task20_data/task20_17
@@ -0,0 +1 @@
+VGhlIGZpZW5kIG9mIGEgcmh5bWUgb24gdGhlIG1pYyB0aGF0IHlvdSBrbm93IC8gSXQncyBvbmx5IG9uZSBjYXBhYmxlLCBicmVha3MtdGhlIHVuYnJlYWthYmxl
diff --git a/set3/task20_data/task20_18 b/set3/task20_data/task20_18
new file mode 100644
index 0000000..0fa105b
--- /dev/null
+++ b/set3/task20_data/task20_18
@@ -0,0 +1 @@
+TWVsb2RpZXMtdW5tYWthYmxlLCBwYXR0ZXJuLXVuZXNjYXBhYmxlIC8gQSBob3JuIGlmIHdhbnQgdGhlIHN0eWxlIEkgcG9zc2Vz
diff --git a/set3/task20_data/task20_19 b/set3/task20_data/task20_19
new file mode 100644
index 0000000..ea62d7a
--- /dev/null
+++ b/set3/task20_data/task20_19
@@ -0,0 +1 @@
+SSBibGVzcyB0aGUgY2hpbGQsIHRoZSBlYXJ0aCwgdGhlIGdvZHMgYW5kIGJvbWIgdGhlIHJlc3QgLyBGb3IgdGhvc2UgdGhhdCBlbnZ5IGEgTUMgaXQgY2FuIGJl
diff --git a/set3/task20_data/task20_20 b/set3/task20_data/task20_20
new file mode 100644
index 0000000..aa92a4d
--- /dev/null
+++ b/set3/task20_data/task20_20
@@ -0,0 +1 @@
+SGF6YXJkb3VzIHRvIHlvdXIgaGVhbHRoIHNvIGJlIGZyaWVuZGx5IC8gQSBtYXR0ZXIgb2YgbGlmZSBhbmQgZGVhdGgsIGp1c3QgbGlrZSBhIGV0Y2gtYS1za2V0Y2g=
diff --git a/set3/task20_data/task20_21 b/set3/task20_data/task20_21
new file mode 100644
index 0000000..3d2f0cd
--- /dev/null
+++ b/set3/task20_data/task20_21
@@ -0,0 +1 @@
+U2hha2UgJ3RpbGwgeW91ciBjbGVhciwgbWFrZSBpdCBkaXNhcHBlYXIsIG1ha2UgdGhlIG5leHQgLyBBZnRlciB0aGUgY2VyZW1vbnksIGxldCB0aGUgcmh5bWUgcmVzdCBpbiBwZWFjZQ==
diff --git a/set3/task20_data/task20_22 b/set3/task20_data/task20_22
new file mode 100644
index 0000000..bb86671
--- /dev/null
+++ b/set3/task20_data/task20_22
@@ -0,0 +1 @@
+SWYgbm90LCBteSBzb3VsJ2xsIHJlbGVhc2UhIC8gVGhlIHNjZW5lIGlzIHJlY3JlYXRlZCwgcmVpbmNhcm5hdGVkLCB1cGRhdGVkLCBJJ20gZ2xhZCB5b3UgbWFkZSBpdA==
diff --git a/set3/task20_data/task20_23 b/set3/task20_data/task20_23
new file mode 100644
index 0000000..82b150e
--- /dev/null
+++ b/set3/task20_data/task20_23
@@ -0,0 +1 @@
+Q3V6IHlvdXIgYWJvdXQgdG8gc2VlIGEgZGlzYXN0cm91cyBzaWdodCAvIEEgcGVyZm9ybWFuY2UgbmV2ZXIgYWdhaW4gcGVyZm9ybWVkIG9uIGEgbWljOg==
diff --git a/set3/task20_data/task20_24 b/set3/task20_data/task20_24
new file mode 100644
index 0000000..e5bde2d
--- /dev/null
+++ b/set3/task20_data/task20_24
@@ -0,0 +1 @@
+THlyaWNzIG9mIGZ1cnkhIEEgZmVhcmlmaWVkIGZyZWVzdHlsZSEgLyBUaGUgIlIiIGlzIGluIHRoZSBob3VzZS10b28gbXVjaCB0ZW5zaW9uIQ==
diff --git a/set3/task20_data/task20_25 b/set3/task20_data/task20_25
new file mode 100644
index 0000000..f2bdd91
--- /dev/null
+++ b/set3/task20_data/task20_25
@@ -0,0 +1 @@
+TWFrZSBzdXJlIHRoZSBzeXN0ZW0ncyBsb3VkIHdoZW4gSSBtZW50aW9uIC8gUGhyYXNlcyB0aGF0J3MgZmVhcnNvbWU=
diff --git a/set3/task20_data/task20_26 b/set3/task20_data/task20_26
new file mode 100644
index 0000000..ddd7843
--- /dev/null
+++ b/set3/task20_data/task20_26
@@ -0,0 +1 @@
+WW91IHdhbnQgdG8gaGVhciBzb21lIHNvdW5kcyB0aGF0IG5vdCBvbmx5IHBvdW5kcyBidXQgcGxlYXNlIHlvdXIgZWFyZHJ1bXM7IC8gSSBzaXQgYmFjayBhbmQgb2JzZXJ2ZSB0aGUgd2hvbGUgc2NlbmVyeQ==
diff --git a/set3/task20_data/task20_27 b/set3/task20_data/task20_27
new file mode 100644
index 0000000..d3c97e1
--- /dev/null
+++ b/set3/task20_data/task20_27
@@ -0,0 +1 @@
+VGhlbiBub25jaGFsYW50bHkgdGVsbCB5b3Ugd2hhdCBpdCBtZWFuIHRvIG1lIC8gU3RyaWN0bHkgYnVzaW5lc3MgSSdtIHF1aWNrbHkgaW4gdGhpcyBtb29k
diff --git a/set3/task20_data/task20_28 b/set3/task20_data/task20_28
new file mode 100644
index 0000000..ee11c9b
--- /dev/null
+++ b/set3/task20_data/task20_28
@@ -0,0 +1 @@
+QW5kIEkgZG9uJ3QgY2FyZSBpZiB0aGUgd2hvbGUgY3Jvd2QncyBhIHdpdG5lc3MhIC8gSSdtIGEgdGVhciB5b3UgYXBhcnQgYnV0IEknbSBhIHNwYXJlIHlvdSBhIGhlYXJ0
diff --git a/set3/task20_data/task20_29 b/set3/task20_data/task20_29
new file mode 100644
index 0000000..6a3d89c
--- /dev/null
+++ b/set3/task20_data/task20_29
@@ -0,0 +1 @@
+UHJvZ3JhbSBpbnRvIHRoZSBzcGVlZCBvZiB0aGUgcmh5bWUsIHByZXBhcmUgdG8gc3RhcnQgLyBSaHl0aG0ncyBvdXQgb2YgdGhlIHJhZGl1cywgaW5zYW5lIGFzIHRoZSBjcmF6aWVzdA==
diff --git a/set3/task20_data/task20_30 b/set3/task20_data/task20_30
new file mode 100644
index 0000000..7a67926
--- /dev/null
+++ b/set3/task20_data/task20_30
@@ -0,0 +1 @@
+TXVzaWNhbCBtYWRuZXNzIE1DIGV2ZXIgbWFkZSwgc2VlIGl0J3MgLyBOb3cgYW4gZW1lcmdlbmN5LCBvcGVuLWhlYXJ0IHN1cmdlcnk=
diff --git a/set3/task20_data/task20_31 b/set3/task20_data/task20_31
new file mode 100644
index 0000000..93dccdb
--- /dev/null
+++ b/set3/task20_data/task20_31
@@ -0,0 +1 @@
+T3BlbiB5b3VyIG1pbmQsIHlvdSB3aWxsIGZpbmQgZXZlcnkgd29yZCdsbCBiZSAvIEZ1cmllciB0aGFuIGV2ZXIsIEkgcmVtYWluIHRoZSBmdXJ0dXJl
diff --git a/set3/task20_data/task20_32 b/set3/task20_data/task20_32
new file mode 100644
index 0000000..bea3372
--- /dev/null
+++ b/set3/task20_data/task20_32
@@ -0,0 +1 @@
+QmF0dGxlJ3MgdGVtcHRpbmcuLi53aGF0ZXZlciBzdWl0cyB5YSEgLyBGb3Igd29yZHMgdGhlIHNlbnRlbmNlLCB0aGVyZSdzIG5vIHJlc2VtYmxhbmNl
diff --git a/set3/task20_data/task20_33 b/set3/task20_data/task20_33
new file mode 100644
index 0000000..923dacb
--- /dev/null
+++ b/set3/task20_data/task20_33
@@ -0,0 +1 @@
+WW91IHRoaW5rIHlvdSdyZSBydWZmZXIsIHRoZW4gc3VmZmVyIHRoZSBjb25zZXF1ZW5jZXMhIC8gSSdtIG5ldmVyIGR5aW5nLXRlcnJpZnlpbmcgcmVzdWx0cw==
diff --git a/set3/task20_data/task20_34 b/set3/task20_data/task20_34
new file mode 100644
index 0000000..400c011
--- /dev/null
+++ b/set3/task20_data/task20_34
@@ -0,0 +1 @@
+SSB3YWtlIHlhIHdpdGggaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIHZvbHRzIC8gTWljLXRvLW1vdXRoIHJlc3VzY2l0YXRpb24sIHJoeXRobSB3aXRoIHJhZGlhdGlvbg==
diff --git a/set3/task20_data/task20_35 b/set3/task20_data/task20_35
new file mode 100644
index 0000000..08387b4
--- /dev/null
+++ b/set3/task20_data/task20_35
@@ -0,0 +1 @@
+Tm92b2NhaW4gZWFzZSB0aGUgcGFpbiBpdCBtaWdodCBzYXZlIGhpbSAvIElmIG5vdCwgRXJpYyBCLidzIHRoZSBqdWRnZSwgdGhlIGNyb3dkJ3MgdGhlIGp1cnk=
diff --git a/set3/task20_data/task20_36 b/set3/task20_data/task20_36
new file mode 100644
index 0000000..1baef68
--- /dev/null
+++ b/set3/task20_data/task20_36
@@ -0,0 +1 @@
+WW8gUmFraW0sIHdoYXQncyB1cD8gLyBZbywgSSdtIGRvaW5nIHRoZSBrbm93bGVkZ2UsIEUuLCBtYW4gSSdtIHRyeWluZyB0byBnZXQgcGFpZCBpbiBmdWxs
diff --git a/set3/task20_data/task20_37 b/set3/task20_data/task20_37
new file mode 100644
index 0000000..f538f91
--- /dev/null
+++ b/set3/task20_data/task20_37
@@ -0,0 +1 @@
+V2VsbCwgY2hlY2sgdGhpcyBvdXQsIHNpbmNlIE5vcmJ5IFdhbHRlcnMgaXMgb3VyIGFnZW5jeSwgcmlnaHQ/IC8gVHJ1ZQ==
diff --git a/set3/task20_data/task20_38 b/set3/task20_data/task20_38
new file mode 100644
index 0000000..c22e18b
--- /dev/null
+++ b/set3/task20_data/task20_38
@@ -0,0 +1 @@
+S2FyYSBMZXdpcyBpcyBvdXIgYWdlbnQsIHdvcmQgdXAgLyBaYWtpYSBhbmQgNHRoIGFuZCBCcm9hZHdheSBpcyBvdXIgcmVjb3JkIGNvbXBhbnksIGluZGVlZA==
diff --git a/set3/task20_data/task20_39 b/set3/task20_data/task20_39
new file mode 100644
index 0000000..baa3a60
--- /dev/null
+++ b/set3/task20_data/task20_39
@@ -0,0 +1 @@
+T2theSwgc28gd2hvIHdlIHJvbGxpbicgd2l0aCB0aGVuPyBXZSByb2xsaW4nIHdpdGggUnVzaCAvIE9mIFJ1c2h0b3duIE1hbmFnZW1lbnQ=
diff --git a/set3/task20_data/task20_40 b/set3/task20_data/task20_40
new file mode 100644
index 0000000..727f26b
--- /dev/null
+++ b/set3/task20_data/task20_40
@@ -0,0 +1 @@
+Q2hlY2sgdGhpcyBvdXQsIHNpbmNlIHdlIHRhbGtpbmcgb3ZlciAvIFRoaXMgZGVmIGJlYXQgcmlnaHQgaGVyZSB0aGF0IEkgcHV0IHRvZ2V0aGVy
diff --git a/set3/task20_data/task20_41 b/set3/task20_data/task20_41
new file mode 100644
index 0000000..dc92f01
--- /dev/null
+++ b/set3/task20_data/task20_41
@@ -0,0 +1 @@
+SSB3YW5uYSBoZWFyIHNvbWUgb2YgdGhlbSBkZWYgcmh5bWVzLCB5b3Uga25vdyB3aGF0IEknbSBzYXlpbic/IC8gQW5kIHRvZ2V0aGVyLCB3ZSBjYW4gZ2V0IHBhaWQgaW4gZnVsbA==
diff --git a/set3/task20_data/task20_42 b/set3/task20_data/task20_42
new file mode 100644
index 0000000..ec235cb
--- /dev/null
+++ b/set3/task20_data/task20_42
@@ -0,0 +1 @@
+VGhpbmtpbicgb2YgYSBtYXN0ZXIgcGxhbiAvICdDdXogYWluJ3QgbnV0aGluJyBidXQgc3dlYXQgaW5zaWRlIG15IGhhbmQ=
diff --git a/set3/task20_data/task20_43 b/set3/task20_data/task20_43
new file mode 100644
index 0000000..1961536
--- /dev/null
+++ b/set3/task20_data/task20_43
@@ -0,0 +1 @@
+U28gSSBkaWcgaW50byBteSBwb2NrZXQsIGFsbCBteSBtb25leSBpcyBzcGVudCAvIFNvIEkgZGlnIGRlZXBlciBidXQgc3RpbGwgY29taW4nIHVwIHdpdGggbGludA==
diff --git a/set3/task20_data/task20_44 b/set3/task20_data/task20_44
new file mode 100644
index 0000000..53fe8f7
--- /dev/null
+++ b/set3/task20_data/task20_44
@@ -0,0 +1 @@
+U28gSSBzdGFydCBteSBtaXNzaW9uLCBsZWF2ZSBteSByZXNpZGVuY2UgLyBUaGlua2luJyBob3cgY291bGQgSSBnZXQgc29tZSBkZWFkIHByZXNpZGVudHM=
diff --git a/set3/task20_data/task20_45 b/set3/task20_data/task20_45
new file mode 100644
index 0000000..feee2f5
--- /dev/null
+++ b/set3/task20_data/task20_45
@@ -0,0 +1 @@
+SSBuZWVkIG1vbmV5LCBJIHVzZWQgdG8gYmUgYSBzdGljay11cCBraWQgLyBTbyBJIHRoaW5rIG9mIGFsbCB0aGUgZGV2aW91cyB0aGluZ3MgSSBkaWQ=
diff --git a/set3/task20_data/task20_46 b/set3/task20_data/task20_46
new file mode 100644
index 0000000..3674e29
--- /dev/null
+++ b/set3/task20_data/task20_46
@@ -0,0 +1 @@
+SSB1c2VkIHRvIHJvbGwgdXAsIHRoaXMgaXMgYSBob2xkIHVwLCBhaW4ndCBudXRoaW4nIGZ1bm55IC8gU3RvcCBzbWlsaW5nLCBiZSBzdGlsbCwgZG9uJ3QgbnV0aGluJyBtb3ZlIGJ1dCB0aGUgbW9uZXk=
diff --git a/set3/task20_data/task20_47 b/set3/task20_data/task20_47
new file mode 100644
index 0000000..767b9e4
--- /dev/null
+++ b/set3/task20_data/task20_47
@@ -0,0 +1 @@
+QnV0IG5vdyBJIGxlYXJuZWQgdG8gZWFybiAnY3V6IEknbSByaWdodGVvdXMgLyBJIGZlZWwgZ3JlYXQsIHNvIG1heWJlIEkgbWlnaHQganVzdA==
diff --git a/set3/task20_data/task20_48 b/set3/task20_data/task20_48
new file mode 100644
index 0000000..085376b
--- /dev/null
+++ b/set3/task20_data/task20_48
@@ -0,0 +1 @@
+U2VhcmNoIGZvciBhIG5pbmUgdG8gZml2ZSwgaWYgSSBzdHJpdmUgLyBUaGVuIG1heWJlIEknbGwgc3RheSBhbGl2ZQ==
diff --git a/set3/task20_data/task20_49 b/set3/task20_data/task20_49
new file mode 100644
index 0000000..d555793
--- /dev/null
+++ b/set3/task20_data/task20_49
@@ -0,0 +1 @@
+U28gSSB3YWxrIHVwIHRoZSBzdHJlZXQgd2hpc3RsaW4nIHRoaXMgLyBGZWVsaW4nIG91dCBvZiBwbGFjZSAnY3V6LCBtYW4sIGRvIEkgbWlzcw==
diff --git a/set3/task20_data/task20_50 b/set3/task20_data/task20_50
new file mode 100644
index 0000000..ab56c37
--- /dev/null
+++ b/set3/task20_data/task20_50
@@ -0,0 +1 @@
+QSBwZW4gYW5kIGEgcGFwZXIsIGEgc3RlcmVvLCBhIHRhcGUgb2YgLyBNZSBhbmQgRXJpYyBCLCBhbmQgYSBuaWNlIGJpZyBwbGF0ZSBvZg==
diff --git a/set3/task20_data/task20_51 b/set3/task20_data/task20_51
new file mode 100644
index 0000000..a16af8d
--- /dev/null
+++ b/set3/task20_data/task20_51
@@ -0,0 +1 @@
+RmlzaCwgd2hpY2ggaXMgbXkgZmF2b3JpdGUgZGlzaCAvIEJ1dCB3aXRob3V0IG5vIG1vbmV5IGl0J3Mgc3RpbGwgYSB3aXNo
diff --git a/set3/task20_data/task20_52 b/set3/task20_data/task20_52
new file mode 100644
index 0000000..716e574
--- /dev/null
+++ b/set3/task20_data/task20_52
@@ -0,0 +1 @@
+J0N1eiBJIGRvbid0IGxpa2UgdG8gZHJlYW0gYWJvdXQgZ2V0dGluJyBwYWlkIC8gU28gSSBkaWcgaW50byB0aGUgYm9va3Mgb2YgdGhlIHJoeW1lcyB0aGF0IEkgbWFkZQ==
diff --git a/set3/task20_data/task20_53 b/set3/task20_data/task20_53
new file mode 100644
index 0000000..297a7dd
--- /dev/null
+++ b/set3/task20_data/task20_53
@@ -0,0 +1 @@
+U28gbm93IHRvIHRlc3QgdG8gc2VlIGlmIEkgZ290IHB1bGwgLyBIaXQgdGhlIHN0dWRpbywgJ2N1eiBJJ20gcGFpZCBpbiBmdWxs
diff --git a/set3/task20_data/task20_54 b/set3/task20_data/task20_54
new file mode 100644
index 0000000..1e7e995
--- /dev/null
+++ b/set3/task20_data/task20_54
@@ -0,0 +1 @@
+UmFraW0sIGNoZWNrIHRoaXMgb3V0LCB5byAvIFlvdSBnbyB0byB5b3VyIGdpcmwgaG91c2UgYW5kIEknbGwgZ28gdG8gbWluZQ==
diff --git a/set3/task20_data/task20_55 b/set3/task20_data/task20_55
new file mode 100644
index 0000000..c943c24
--- /dev/null
+++ b/set3/task20_data/task20_55
@@ -0,0 +1 @@
+J0NhdXNlIG15IGdpcmwgaXMgZGVmaW5pdGVseSBtYWQgLyAnQ2F1c2UgaXQgdG9vayB1cyB0b28gbG9uZyB0byBkbyB0aGlzIGFsYnVt
diff --git a/set3/task20_data/task20_56 b/set3/task20_data/task20_56
new file mode 100644
index 0000000..95796f5
--- /dev/null
+++ b/set3/task20_data/task20_56
@@ -0,0 +1 @@
+WW8sIEkgaGVhciB3aGF0IHlvdSdyZSBzYXlpbmcgLyBTbyBsZXQncyBqdXN0IHB1bXAgdGhlIG11c2ljIHVw
diff --git a/set3/task20_data/task20_57 b/set3/task20_data/task20_57
new file mode 100644
index 0000000..a456bfd
--- /dev/null
+++ b/set3/task20_data/task20_57
@@ -0,0 +1 @@
+QW5kIGNvdW50IG91ciBtb25leSAvIFlvLCB3ZWxsIGNoZWNrIHRoaXMgb3V0LCB5byBFbGk=
diff --git a/set3/task20_data/task20_58 b/set3/task20_data/task20_58
new file mode 100644
index 0000000..cfa083a
--- /dev/null
+++ b/set3/task20_data/task20_58
@@ -0,0 +1 @@
+VHVybiBkb3duIHRoZSBiYXNzIGRvd24gLyBBbmQgbGV0IHRoZSBiZWF0IGp1c3Qga2VlcCBvbiByb2NraW4n
diff --git a/set3/task20_data/task20_59 b/set3/task20_data/task20_59
new file mode 100644
index 0000000..9e6988d
--- /dev/null
+++ b/set3/task20_data/task20_59
@@ -0,0 +1 @@
+QW5kIHdlIG91dHRhIGhlcmUgLyBZbywgd2hhdCBoYXBwZW5lZCB0byBwZWFjZT8gLyBQZWFjZQ==