I have to complete a capture the flag challenge. I am given a text file named notazipfile.txt containing mostly random characters, as seen at the bottom of the post. I am also given a sha256 hash as shown at the bottom of the post. I have to find a flag in the format flag{thisistheflag}. What I have worked out so far is that there is somehow a zip archive/directory due to both the name of the text file and the first few characters of the text file being PK. which usually indicates a zip file I believe.
Text file contents as a hexdump in hexadecimal:
0000000 P K 003 004 024 \0 \0 \0 \b \0 207 203 - M 005 223
0000010 213 376 \f \v \0 \0 $ 036 \0 \0 023 \0 \0 \0 n o
0000020 t - a - t e x t - f i l e . z i
0000030 p e 231 271 316 325 0 020 205 373 < E 244 024 . b
0000040 E 250 354 & 364 < 004 ; H 254 B P 304 273
0000050 363 235 3 c 233 305 377 275 7 ^ 217 g 037 ; 377 233
0000060 017 317 337 376 | 372 371 363 373 375 371 267 375 307 203 357
0000070 u 177 367 370 345 373 G _ 257 375 311 376 345 371 267 w
0000080 257 277 = | 271 277 374 372 350 371 267 357 _ _ 357 237
0000090 337 354 037 _ ? 376 266 ? 377 364 j 177 361 340 323 353
00000a0 353 327 266 335 375 > 316 363 < 216 373 > 312 q 336 347
00000b0 } 364 263 P ? 357 v 037 255 035 g 277 313 q 037 |
00000c0 ( 275 234 \a 323 o Z T 374 275 356 233 f 275 ) \f
00000d0 334 232 266 335 n i 301 } 2 244 _ 317 d 023 255 j
00000e0 347 Q 217 346 031 364 364 . 374 R 030 j 247 ' 326 r
00000f0 337 | 264 320 \v 004 \0 ( - 021 j b ( " 026 212
0000100 331 031 B ! 265 @ 247 { o h 357 354 a & 274 006
0000110 330 322 016 O 024 277 \f \v 204 031 [ 320 x R 025 j
0000120 k 364 226 * \b m Q 250 306 246 355 340 \t } ,
0000130 022 320 031 S 032 373 263 224 a 276 ^ 300 303 354 [ 8
0000140 332 235 207 ~ D \n 265 242 265 305 x 235 276 273 027 232
0000150 E 202 205 0 226 210 V @ M 246 d z 030 V 234 l
0000160 310 220 272 026 321 4 ~ 327 346 * 225 271 332 355 : 273
0000170 & W @ ) 035 P 353 225 217 x * 232 w _ = 0
0000180 205 v n ~ 230 334 f 245 Z ^ 315 3 , 177 364 004
0000190 321 327 263 243 365 235 ^ 206 201 265 336 < Q 032 0 374
00001a0 035 252 362 357 026 [ 206 326 316 + V U 343 027 375 210
00001b0 \0 211 321 B 9 < 251 4 332 324 $ 241 B 315 234 016
00001c0 F 303 244 264 250 230 T 223 031 223 273 350 e : \f K
00001d0 271 241 305 356 \r ) \b 2 344 # 213 > 202 321 304 \f
00001e0 Q n 6 343 232 264 262 a 260 e T 233 z k T 354
00001f0 034 250 J s 001 = 033 025 021 [ 003 P 024 263 0 004
0000200 335 001 \r } u 323 " Q 206 262 d T 207 276 262 235
0000210 \n 024 237 g R & 226 017 250 266 244 243 4 364 n 246
0000220 264 ) 337 ` 313 224 252 7 034 F 020 036 / 352 250 035
0000230 337 a ? 223 j # 8 O 366 357 260 _ 250 301 273 364
0000240 356 255 % 353 020 300 5 d J 247 351 302 \b 365 221 0
0000250 020 V 210 262 341 017 U f 206 342 302 337 005 J 301 212
0000260 252 e 026 342 9 003 305 O Q 032 b 317 301 X 247
0000270 . f 253 325 # \b 261 344 @ / 317 020 8 244 366 253
0000280 321 247 ! C 247 ] 372 211 L 243 341 1 263 M 003 :
0000290 257 263 u 372 204 { 331 260 212 376 h 365 J ? 265 022
00002a0 8 226 273 325 233 217 004 345 c 300 p 211 214 . 320 l
00002b0 u 211 254 363 222 313 Q z 207 R 204 \t 235 266 b 351
00002c0 A V B e 004 ) 251 v s } 354 H 247 311 026 f
00002d0 Z 230 242 ] 177 206 370 { 353 4 360 017 364 225 ! 265
00002e0 016 037 022 231 006 z 306 257 355 4 6 361 350 245 001 313
00002f0 8 205 x 026 @ 367 262 ? 273 241 255 243 264 ^ 370 301
0000300 f ' u 226 * S 275 * 234 032 320 3 314 327 273 005
0000310 252 326 004 1 @ R 004 312 003 264 Z 335 301 ^ Z |
0000320 006 235 341 250 031 8 316 214 247 336 251 % 275 262 222 036
0000330 z + 016 357 347 U 366 266 357 320 330 T 020 g 273 232
0000340 m 250 \a 235 V X 362 w G ^ 332 F O \b 025 t
0000350 247 020 G M 326 243 p 021 332 w 310 + 265 _ u 357
0000360 327 u ! 024 \f 032 L 333 362 207 216 a 237 347 324
0000370 225 \a 231 037 * 302 h 370 C 256 ` 326 ] d \n 363
0000380 331 376 L r 225 261 \r 235 353 ; V g 224 312 L 022
0000390 m = E E 1 377 R 024 265 " 234 253 202 H u 177
00003a0 V \0 225 k 364 t L 276 # } 244 5 l v 244 220
00003b0 205 304 030 332 254 312 004 300 351 323 1 367 275 302 5 324
00003c0 236 302 D Y 265 265 242 030 025 \n Q 031 A * r T
00003d0 \r _ ( 261 333 034 R x G 214 | 332 ! = 235 275
00003e0 326 g 030 302 216 347 027 224 v 310 200 235 \0 274 > S
00003f0 l \b 244 m 361 L 303 2 \a 226 v Q 372 001 212 345
0000400 327 263 006 245 \r 005 201 333 236 365 \v 8 y @ 037 216
0000410 357 310 / 275 375 021 371 c 207 351 i 9 V 332 3 246
0000420 V 210 305 < 257 V 371 273 250 = 273 . ( = 025 374
0000430 " 224 271 266 ! 005 203 f } 376 036 232 . 345 241
0000440 b 4 365 254 301 367 271 W 200 ! 263 a \b 352 o "
0000450 214 350 = 4 224 202 u f \n ; 5 335 I 253 245 `
0000460 w R 232 224 g ^ 235 277 g W 203 N 370 G 024 350
0000470 351 222 U ( 375 017 231 e 355 T 227 342 351 220 364 214
0000480 V 303 033 d 374 R 364 305 w 277 240 024 T 314 240 "
0000490 227 206 266 222 : e 211 245 377 221 242 251 ; n f )
00004a0 016 ^ 201 212 = 5 020 237 325 326 \r \n l 251 U 277
00004b0 227 316 h 221 * 027 346 262 365 m 304 202 351 T C 302
00004c0 r : 311 024 325 213 y 241 241 371 353 334 i 240 251 310
00004d0 364 S 033 k = 222 331 006 335 263 ; ' ) 025 313 362
00004e0 237 211 312 Z ! Y 017 t 177 235 265 b O > 346 255
00004f0 3 C 2 \v $ 323 266 P O 016 305 H 362 257 231 x
0000500 351 u A 037 x 372 261 k ) 237 ` 305 262 366 324 z
0000510 I 237 201 210 312 002 345 } I . 016 003 271 345 234 202
0000520 300 ( U 314 S x 002 332 344 g g s 370 017 o 321
0000530 303 322 002 321 ; 335 [ 017 003 g ^ 300 006 262 i E
0000540 \a 262 034 030 G 250 002 025 245 247 y 227 300 e 313 |
0000550 203 006 020 273 [ r 370 215 q 237 270 211 277 S 244 `
0000560 F 274 E 035 212 I l j 366 233 214 024 D Q \0 037
0000570 \f \a w 266 240 214 { a R M 365 220 G 233 346 !
0000580 B D & 210 372 342 243 ! S $ 345 264 245 S 232 p
0000590 F 212 R 336 r a 266 264 o 375 e n F T 336 O
00005a0 - 033 207 \0 n 005 } [ 226 324 ~ 364 213 I ` .
00005b0 177 327 9 246 247 335 W 346 024 237 P b N z 5
00005c0 O F * 322 U 271 @ 220 241 < C 242 r 245 242 301
00005d0 262 d 245 275 257 > r ~ U 224 337 272 p 362 322 240
00005e0 001 E 350 274 Z 370 J u 002 t ! X 364 D 261 323
00005f0 037 222 315 \0 264 274 213 - 2 4 1 l \v 262 223
0000600 g 3 301 303 360 022 201 314 G ' 034 246 002 * 223 361
0000610 271 h 2 G 222 325 037 375 356 % k J 213 276 361 A
0000620 210 \n 275 \n @ 247 [ 367 , 212 361 V c 177 346 003
0000630 334 032 9 275 254 i 370 220 250 " 263 w E 251 K 244
0000640 205 J 355 357 324 C 234 372 025 Q 261 004 005 \ 226
0000650 8 301 213 8 [ 253 235 261 217 ; T 350 b c 341 364
0000660 " 365 e 234 246 % 371 ? 323 q 321 4 300 245 A 5
0000670 320 t 206 266 @ 265 024 ^ ) z 016 s 260 366 - 317
0000680 314 264 314 0 345 G 321 243 J 236 > 362 ) 244 370 250
0000690 247 004 k w 034 326 ? 017 376 367 \b 314 233 033 347
00006a0 335 ^ 377 272 t 244 226 Q 016 % W 031 223 375 }
00006b0 036 275 } 326 270 257 300 264 260 021 245 312 026 201 o 304
00006c0 361 l 311 207 230 217 \n t 324 227 320 312 3 ] 370 224
00006d0 276 366 b \ B 206 025 t 373 < 023 242 ? 367 8 Q
00006e0 370 v 242 > 251 315 247 207 260 - 354 ] 247 006 321 375
00006f0 \f 324 212 235 002 300 360 263 b 023 k b 213 J 372 273
0000700 F t 357 L 231 016 303 367 f G 336 330 345 357 R /
0000710 350 312 { : S c 370 \f 310 360 020 264 254 E 346 020
0000720 207 o f 032 " 305 2 @ S { 262 202 344 337 G 022
0000730 210 } 366 l 357 002 023 250 005 i 355 ] 034 177 252 244
0000740 354 270 353 262 022 177 260 357 355 326 M 0 . 351 J y
0000750 | 257 035 h \t \r 213 2 U J + 234 374 236 = #
0000760 274 304 355 304 v 263 J 202 346 335 321 277 343 F 205 344
0000770 224 347 265 V 332 " 004 \f P 342 325 3 237 004 272 364
0000780 S 035 023 330 335 033 \f ; m y 213 * w 336 276 314
0000790 211 \ 025 006 235 225 232 | K 224 212 , \t ; 322 \0
00007a0 252 327 354 q Z \n b 242 261 \t r 334 002 302 + 347
00007b0 i 277 211 330 F 340 363 234 & _ < 305 001 272 333 035
00007c0 254 207 b 274 v 374 006 373 223 361 250 314 w \n 021 356
00007d0 272 302 237 275 214 _ 031 254 224 206 264 Q 345 X 3 016
00007e0 322 276 , 230 375 s ! 346 340 H 004 016 j p m 213
00007f0 221 346 030 212 3 k 327 @ 231 213 362 g 352 313 267 350
0000800 241 361 5 K N C 027 240 254 g \f 263 264 3 322
0000810 253 236 346 003 312 237 227 0 177 " 325 o 203 335 261 245
0000820 m O \r % 375 240 5 203 L 034 8 320 223 i 035 Q
0000830 ` ` 217 226 331 257 D 204 311 302 \n 301 326 027 212 342
0000840 203 312 224 & 2 e T 033 220 l f 035 = c 371 324
0000850 231 331 377 3 226 $ 236 g 370 \f 316 305 301 / 272 244
0000860 } i 354 242 242 [ 357 L 346 236 230 270 343 " 221 233
0000870 234 201 031 335 177 d 177 . 017 366 331 003 257 365 033 031
0000880 222 034 = 313 + 003 5 I R \v a 217 253 371 230 265
0000890 , 301 b U 360 223 336 e 247 266 W v 341 241 233 304
00008a0 360 357 244 372 210 222 212 * N " S 217 177 026 E M
00008b0 371 \0 273 303 276 \ 035 270 p 0 J 263 017 331 \a 003
00008c0 n ^ 227 $ 323 ? 9 ^ 366 037 367 315 242 $ 215 306
00008d0 223 211 & 310 271 236 255 , 324 277 \n = [ : f 213
00008e0 c 243 367 T u 274 247 T d Q N 032 . 241 034 257
00008f0 025 353 255 203 257 035 261 332 327 v x 331 342 314 < 212
0000900 { ; O 025 207 265 342 3 H 334 304 * 5 ; 355 4
0000910 352 @ 215 t 036 300 T 315 ~ 251 342 311 e 032 ~ 324
0000920 265 & 246 + 223 362 M 313 9 247 I 235 343 272 257 256
0000930 222 206 264 361 323 246 = e 311 J 002 f 373 217 Q ]
0000940 202 g 222 017 217 231 207 211 0 376 263 256 230 5 F 215
0000950 347 220 " 022 322 336 326 X 367 001 G & 6 . 035 \t
0000960 272 356 373 3 235 L 337 322 + " \t / 003 ) 276 251
0000970 227 [ w 347 7 256 \r 371 n 207 240 032 K 203 373 351
0000980 260 [ 320 230 220 236 S 4 7 206 347 ~ 276 353 325 035
0000990 345 215 ` 244 242 K 266 $ 344 z R g 320 % - z
00009a0 u 202 213 \v 342 b 227 6 025 2 240 2 213 316 K 363
00009b0 212 343 027 267 362 333 341 367 % 211 335 376 310 w q 322
00009c0 370 367 Z 315 233 366 < ) e " r 254 036 246 032 016
00009d0 2 . # 330 p 202 016 314 ? 256 250 Y 261 0 342 346
00009e0 021 231 314 267 353 n 247 266 x 247 033 ( r W 307 036
00009f0 251 b 313 220 030 027 327 245 261 231 z 022 J 004 214 267
0000a00 u C 242 C 347 ^ 216 377 272 " 031 022 P \f 242 200
0000a10 6 255 b ! 3 332 214 326 343 264 345 ~ 353 < } #
0000a20 v 377 s 211 | _ d 214 243 374 237 C 343 E 233 257
0000a30 177 : $ b g 5 017 242 u f 245 3 1 227 210 375
0000a40 242 333 316 256 - 263 177 ! 307 215 263 213 225 274 252 373
0000a50 231 222 035 n 232 V 377 W 276 336 | V 370 333 M 327
0000a60 213 037 277 031 232 363 ] \v 227 232 323 377 } U ` $
0000a70 330 237 215 277 242 ~ < 326 { 374 U | ) Z 211 l
0000a80 - [ g 251 271 ~ 236 T 262 342 277 226 | 256 U 177
0000a90 m 226 j 370 357 324 027 g 250 177 336 Z \f 027 = 377
0000aa0 l 257 334 356 177 264 374 263 317 ( 351 373 + j 215 @
0000ab0 232 032 261 361 374 313 372 x 031 221 7 343 330 375 \v
0000ac0 177 373 + + / 207 \n 335 377 e 017 + 354 244 261 .
0000ad0 9 Q 246 , 234 367 243 222 003 k l 316 360 g 301 216
0000ae0 026 207 201 245 206 e 250 % d 032 355 x 350 306 373 g
0000af0 | 2 342 030 ] 357 237 376 212 240 ^ 1 \t 032 332 _
0000b00 022 377 C , 340 375 365 n 355 217 C < 317 261 347 "
0000b10 q 355 9 A 377 322 361 221 245 \t 362 _ 335 . \t 313
0000b20 336 326 232 370 313 313 344 6 R 303 037 > 345 252 231 217
0000b30 y 377 036 266 377 ~ q 270 V 315 315 267 337 P K 001
0000b40 002 ? \0 024 \0 \0 \0 \b \0 207 203 - M 005 223 213
0000b50 376 \f \v \0 \0 $ 036 \0 \0 023 \0 $ \0 \0 \0 \0
0000b60 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 n o t - a
0000b70 - t e x t - f i l e . z i p \n \0
0000b80 \0 \0 \0 \0 \0 001 \0 030 \0 w 1 a K 240 K
0000b90 324 001 { K 317 026 237 K 324 001 { K 317 026 237 K
0000ba0 324 001 P K 005 006 \0 \0 \0 \0 001 \0 001 \0 e \0
0000bb0 \0 \0 = \v \0 \0 \0 \0
0000bb8
Sha256 hash that is given: e62391166a9c9fe0eefbc999958f87f2b454f36cadeb2c026b9000bdc9abddf6
I have tried to view the metadata of the text file which did not reveal any useful information. I have also tried to change the extension of the text file to .zip, which results in an invalid file error on windows. I have also tried to extract a zip file from within the text file using the ZipFile library within Python, which results in errors or unmeaningful results.
The file you provided is a perfectly valid zip file that contains a single file, called not-a-text-file.zip
.
I saved it as the file data.zip
The standard Linux unzip
thinks the file is fine
$ unzip -t data.zip
Archive: data.zip
testing: not-a-text-file.zip OK
No errors detected in compressed data of data.zip.
It also extracts fine
$ unzip ../data.zip
Archive: ../data.zip
inflating: not-a-text-file.zip
Below are the contents of not-a-text-file.zip
. All characters are 7-bit printable ascii charactes.
flag{Look at y0u, h4ck3r. A pathet1c cr3ature of me4t and b0ne.}
@;@#+++##@@#'#+@+@#;+'@#'+@:@#::#+;@'#@##@####;'+##++@#@#+###+###.@@@#@,@@@@++@@@###
@@@@@+####@+@,@#@+@###.@#@@###+:+#,#:@@+###@@;;'#@#''@##:++@###,'@@'@@,@#@@@###@#@+#
@#@@++###@##@@@@#+@+'#+,@@:@#@#:'@'#@@#+@@'+@;:+#@#'+@@@++#++@':#@@:@#@;@#+@;#@##+#@
####@+++#@@##@::##+',+@@'@@@#@#;+@'@@+##:#'@@#:+#+#:#@@++@@'@@:'#++#@##:@##@@#@###@#
@@@###+#+@@@#+#@@#+#'+@+#@'#@@+'+##:#;+#'@;'@+''###;#@;##+++#+:'#@#@;@@,@@###@@##@#'
@+@#@@+#'@#@#@###+;#++#####,@@,+#+@.+;@##@,'@++++;#;#+##@@#@@',+@'#,@@@.;###@@#+@#@+
#+@#@@@@##:+@#@#+@@@+:###@@@@,@##,##@'.`#:; ###+@@+;#@+###@@@+:+@+'@#@@'@@#@@@#@#@@@
#@@#@@#@#@+#+.##+@@+,:+@#@'+@#@;####+#:#+#'+##@+#+':+#:#@++#@''#:#@#@@+'@#@#@##@@###
####'@@@@##@#+@#@++#@;+@@@:#@'@+@@:@+#@@##;#+@@++++:'#+######;+'#@#@@@@@#@#@##@#@@+#
#@#+#,@@#@#@++'@##@@@+;+@@@#;'+#::@@#++##@'@;@#+#++:+:@#+:#@+,#@@@@@@''#@####@@#@;+#
@##@#';#@@##:####@###+,+@@#+@@#@++@,#+##+#`#'@##''+:++@@@+#`':;@@+@@@:+##@+##@@:@+##
#@#@@@:###@@;@++@+##@+':###,;''@';#@@#+++@.+;++#';;:'#'++#;+',@@@+@@#@@+#+#@#@##.###
#####@@@#+@@'##'##',@@#+'#@+#@@#:::#,+;#+@'+#+###+;:'####@.;,#@#@+@@#++#+##@@@##+##@
#@##+####+@@#++#'####@##,''@@:+#:,##@@+#+@@''#+;#'`;+@#'+;.:+@@@@+##@#@+#@@@@##+#@@@
@#@@@##++##@#+':####++'#.+:;+##@:+#.@;###'#'#':+#;,;+##':'+#@@@@@@#@+@##@@@+@##@@@@@
@#@@#@#@#+'##@@#+++###@#+#'+,+@@;+@#+.@+#'''';;;#'#;+'+;'+@#@#@@;@@#;@#@@@@###@##@++
@@###@@@@@#@+#@#@@##+@#+##@++'@#;;'#;`.##;:;#;;+.#+;+#++@#@#,@@@#@#@@@@@+@@###`@@#+#
#@@@@@##@#@#@.@#####+##+#+@@''+';;' ' `@+;';:::;':::#@'#;@#@@@@#@@@+#@@'##+####,##@#
#+@@@@@'@@@@+@.@####@'#+#++@#';;;;; ' `;;;:::,,;;;;;'+',##@+@@#@#@:#@#@@+@#@#+@+#+#@
##@+#@@:@@@@##@,#@#;##++##'##:+++.' : ::;:::::+'+:.:#++#+;@@#@@@'+#@@####+##@++##@@
#@@####+@@@#@+@@:#+:+####;#'+:'#'; ' ; ;;'',;., ;...+';#+#;@@#@#+#####+#@##+++###@@#
+##@@###@@@@##+#@;#+@++'@#:'+'+'''+ ; , ::::., ;` `;'::##@:@#@@@@##@@##@@@##+#@@@###
#++#@@###@@@#####@;#+#'++##'''+''++' `;'.,, ;+' `';':,''@;+#@#@###@#@@@###+#@@@#@#@
+@@#+@++##@##'##@@@+#,+#'@'++'++';#;, ,;.., :+ `',;;,::'@+,###@+#@@@@@@####@@####@#
,#@@@+@'#@@@######@@###+;#@;'';'':#: :+;,,`;; ;:'':;:##;;'@+####@@@+@#'+@@@@#@@@@:
@#@@@@#+@@@@@#+#@@+###@'',+@:+;;:#.`: ,;:...,,`:`;.;;'#+;+;@@@+##@##@@+'#;@@@##@@###
##@@@@#@@#@@@@###@@@##@@':`@+','';::,.:,:,:.::,`..'':+'#'+@#+'#@@@@@@'###@@@@@@#@###
@@@@@@#@@@@@#@@@##'+@++#@'::'''`:;,,+ ,:,.,`:: ; '::':'#;@+@,#@@@###++#@@@@@###'@#@@
#@;@@@#@#@@#@@+@@@@#+#+++@+';';:.;.;.`.::.:..,.`:,;;.'+''#;#@@@@@@#+##@@@@@@+;#@@##@
###@@@+@@#@@#@#@##@@####+;#'+,;;,.;;, .:,..:., ,,':`:;:'++#@@@@#@+'#@@@@@@###@#@#@@@
@##;+##@@@@@@@@'@##@+####+;++':;;,`,:;.:,....:',,..:'.''@##@#@+++'#@@@@@@####@@@####
#@@+@#@####@@@@##@@@#@@@@+++#''`:: ,.::.,,..`;..+ ::.:+'+'@#@#@@#@@@@@#####@@@@##+''
@@@###@######@@@@@@@@@###++:+';#`;.:,,,:;;:,,,..'.+,,;+;;@#+@###'@@@@##+##@@@@#+':,,
@#@@+@'@@@@####@@@@#@+######+#''+..;..,,,..,,, ,;.;,;+',+'+@@+#@@@@@'####@@#+';,'+.#
@#+':;'#@###@@##+######@@#+'++'''',::.,,,,,::, ,:;'';+:+;+#+@@#+#@+@@#@@+++;,''+@@+@
;','';:;+:@###@@#@@##+@+###+'#''#;;;:.::,,,:,, ,+,;+;;+++#+#@'+#@#####@+;,;'+#@#@'#@
;++#@#''::+#@@@@@@@@+@+#@++##'+'';':';:,,..,::,;;;;+;+:@+'+#'+##@@##@##;++#@@@###@@@
@:@@@#@#+';,:'#@@@@@@#++#+#''#;':#;'::,:,..,,,':;+';;'++:';++##@@@+#@@::#@@@@@@#;'''
@#'@@@@@#+++#:+;#@@@#@#++##+''';;'@;'',:: ,.,,;+#;.+;#+:''###@@@@@@@@#:;@#@#@@@,,,;'
#@##@@@@@#;+@@@#,@#@@+#+++++#+'+'.#+:+':,`,, :;:''+#++'+#@@@@@@@@#+''.;###@##@+,##@;
;@#,@@@@#@#;##@#+#,+##@+++#+@#;++:;:.';',,::::'+''##+#+#@@@@@#+'';:,,'+@@#@###,##':+
@#@#@@@@@#@#+;@#@##+;;##@##++#'';+':'+#':,::,''+:######@@@@@#;::;:;:;''+#####:#++;+:
@;@#';'''''###;.'++;''''@@@@@@@@@@#;;'+';,:;`++#'#@@@@@@@@@@+''''':;'+'##+'+#++##';@
##.#+;;';;'+++++#';';++#+'+++#+###@+'##+',;'.'#@'@#@++#;''+;+++#@'@@@;#@@#@####+++++
+#+#+######@##++@@@##'+##@''.;`:+@@+'+#+:;:'.'#@##@':`':;@#+''#+##@;@@@@##@;##@@@@@@
#@##@#@#+#@#@@@#;@@#+;;'#'#+;;,:'+#@+#'',:;;;'+@#++';''+@@'+#'+##@,#@@@@@@'@@@@+@@#@
@@'@@+@####+++#@#+'#'':.'##'+#;.@@@@#+'',:''++#+@@####@@@#++'+''@.#@@@@@#'#@@#.#####
@###@#++#@@@@#@###@#+'::,''@:;'+@.+@@@;'`,'@+'+@+ '@@###',';'+'#@+@++'###@+'+ ##+#@@
@##@'#####';++'++@#@#+;:+'',;;#+'#`+@@,',,'#@'++`'':'+#:+++#:'+@@@###@@'++##,@@@@@@@
@@@@#@#;'###@####@#@+#;':''+;#+;;.;.'+,+::'#@+'''#;,:;;';',;''##@@#''+@#@#;###@@@#@@
@@@@#@@@##@;+######@#+':+;,,'',`` ;#@+'+::'@@@#++;;,:. `,,:''#@@#++++++##@@@@@@#@@@
@####@@#@@@#@#@##@+@@@#+:;;,:;;. ,''++'#;:'#@@#';;:,` ```.,,+@@@@++#@#@@@@@@@@@@@@@@
@##'@##@@@@##@@@@@#+@@'''::..,``.,;'+@++::'#@@#';:: `;.`.:;+'##,,,::::;;+@@@@#@@@@@@
:#+####+'@@'+#+##++##@+;''`,,,,, ,:'+++#;:'@@@+;':'::,,,:'+'+##+#@@@@###@@#+@@@@@@##
+###'##+#####+###@#++@#';;;:::..:+:++###':;#@@+''::;.; :;+';##@@@#@@#####@#####@#@@@
@#@@@##@@@@@@@##@@#@@@@##:;',,::;#;++@@#+;+@@@@;'+'+:,:;':+@@@@@@@#@##@@@###;##+@@@@
+@##@@@@@@@@##@@@#@@@@@#++;:;:;;:'''+@##+:;@#@@;'';';;:;;'@@@@@@@##@@@##@@#@#@@@@@@#
#@###@+@@@#@@@@@@@##@@##+++:';.;:';;'@#@',;@@@#'+:'';;':'@#@##@@@@@##@#@##@##@'#@###
@@#@@@@#@@##@@@#''#@@@@##++'':;:;;:#;@@#+;'@@@@#:':';';;#+@@####@#@##@@@@@####@#@@@@
,@.#@##@@@##@#'#@@@@@@@#@#++::.::.;;;#,##'+@@#@#,:::;;:#+#@#@@+@@@@###@@@#@@#@@#####
#@##@@@@#@###@#@@@#@#+#@@#@#+;+;`',#:#'@':;#++@@.':;;#'##@@@@@@#+@#@#+###@@@#@####@#
#@@@#@@+@###@##@#####@@@@@@#++#`;;+':+;#;,,+:'#+,'+;+'+##@@@@@@##+@#@##@###@###+@'@#
@#@@#@#+##@@@@@#@@@@@@@@#@##++:;'++:;@##'::++###`;++#;'#+@####@@##'##@@@########@###
@'##++@#@@@@@##@@@@@@@@@@@@@##',;;::@'@@':,+@@#;':'+++####:@#+@@+##++#####@###@@###+
#@######@@@@@@#@@##@@#@@@#+#@##''';+:':@@@#@@@::'++##@###@@#@@'@#+@##############@#+
###@#++:++''''+####++''+++#@@##''':';''#@@@@@#+:;''##@#@@@@#@+#@##+#++++'''';;;;';':
###++:::::::::;;;';;::;;;;;@@++#''';:,+;@@@+,;:,;++@@@@##@@@#'+#@##++'+++#++'''''+++
#@#','++#######@@@@##++####@@+#@#++#++';;'+;;'##@@@#@+'##@@@@@@+'+#@@###+'##'@@#@@+@
@@+:+@###@##@@@@@@@@#@@@@@@@#++#++@@#@@@@#@@@@@@@@#@';#;;##@@@@@@@#'#@@@@#@####+####
#+,#####@#@@@#@@@@#@#@@#++++;:;##+'#+##@@@@@@@#@#@@#;+#++#:++#@@@@###+@@@#@###@@@###
#+###@@#@@@@##@@@@#@+'+;,;++++###':@#,#'+;@;#'+@@@'##@+@@###:;+#@@#@@##+'##@@###@@@#
##@#@@@@@@##@+#@@#':;+####@@@###@@#@@@., ,,, ;;@#@##@'#@@@@@+;;:++#+@@@@+#+###@@@@@#
@@@#@@@@@@#+#':;''++#@@@@@@@@@#@#'++@@@;. , ,:@;##@@'####@@@#@'++,'+#@@@#@##'#@@###@
@@##@@@@@#+++'###@@@@@@#@@@@@#@@@+@;@@@@'@@##@@#+@@#@@;#@#@@@@##@##''++#@#'':''####@
@@#@@@@@#+;+##@@@@@@@##@@@@@#@@#'##;++####'###+++@;+@#@@'+@@@##@#@@@@#:'';,;;+':;+++
@+@@@@#++'#@@#@@#@@@@##@@#@##@@@'###+++###@+@#+##@+'#@@@@@++@@@#@##@@#++:'+#@@#++#':
@'@@@##'+;+@#@###@@@@#@@@@##@@@'@:#@+@#;####';@@@@#;+#@@##@@+#@#@@#@#@@@#@@@@##@@@#+
#+++''+:####@@#@@@@##@@@@@+@#@#+##+@+@@#.+'+,@@@@@@',##@#@##@#+@@#@#@@#@#@@@@##@@@+#
;;';;+#@##@#@@@@#@@#@@@@##@#@@++;@'@@@@@@+++@@@@@###+++@#@@@@@@+@@#@###+@@@@@@@#@##@
+:++#@###@##@@@@@@@@@@@@#+#@@@#'+@+@@@@@@@#@+@@@@#@@#;##@##@@@@@#@####@@@@##@@@@###@
#+##@@@@####@@@@@@@@#@##@@@#@#+'#@#@@@@@@@@@@@@@@@@##+;#@#+#@@#@###@@@@@@@@@@#@@@@@@
@##@@@#@##@@@##@@@#@@@##@#@#@#:+@#@@@@@@@@@@@@#@@@@#@#+'#@#@@##@@#@@@#@@@@@@@@@@@@@@
#####+@#@@@@@#####@@@#@@@###@+####@@@#@@@#@@@@####@#@##:+@@@@@@@@#@@@@#@@@@@@@@@@@@#
##@@#@####+###++####+@@@@@#@#;+#@@@@@@@@@@@@@@@#+#@@@@@';#@@@#@#@#@@#@@#+#@@#@@@@#@@
##@#####@@@@@@@@@@@@##@#@#@@+#@@@@#@@#@@@@@@@@@@##@+@@@#;+##@@@##@#@####@@##@@#@@#@#
#@#@@#@@####@@#@@##@@#@@#@@#@@#@##@##@@#@@@@@@@@@##@@#@@':+##@@@##@@@@@#@#@@@@#'@@@@
#@#@#@@#@#@#@+;@#@@@@@@@#@#'+##@###@@#@#@##@@@@@@####@@##+'##@@##@#@@@##@@#@@##@@@@@
@#@@@@@@@@#@#@@#@@@@#@@+#####@@@+@@#@@###'@##@@@@#@##@@#@#'+#@@@#@#@@@@@##@@@@@@#@@@
@#@@@###@@@#@@@#@@########:@@@+#@@@@#@@@@@@@@@@@#@@#@@@@@@#:+@@#@@@#@@#@#@#@#@@@'@@@
#@+@@######@##@@@@@###@##'+###@#@@@@#@@@##@@@@@@@###@@@@@@#+##@@@@##@@@@@##@#@@@@@@@