Taddeus Kroes před 3 roky
rodič
revize
570cf4f4d8
2 změnil soubory, kde provedl 321 přidání a 0 odebrání
  1. 21 0
      2022/03_rucksacks.py
  2. 300 0
      2022/input/3

+ 21 - 0
2022/03_rucksacks.py

@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+import sys
+
+def prio(item):
+    return (ord(item) - ord('a') + 1) % 58
+
+def split(pack):
+    return pack[:len(pack) // 2], pack[len(pack) // 2:]
+
+def group(packs):
+    cur = []
+    for pack in packs:
+        cur.append(pack)
+        if len(cur) == 3:
+            yield cur
+            cur = []
+
+packs = [line.rstrip() for line in sys.stdin]
+print(sum(prio(next(i for i in a if i in b)) for a, b in map(split, packs)))
+print(sum(prio(next(i for i in a if i in b and i in c))
+          for a, b, c in group(packs)))

+ 300 - 0
2022/input/3

@@ -0,0 +1,300 @@
+jVTBgVbgJQVrTLRRsLvRzWcZvnDs
+dhtmhfdfNlNNldfqmPCflqGbNZDHsDWcRzvczWsczZNzHz
+tmwwwCCfbJSMbwMb
+hsrZZhHlhrHmPPbMbDFDQdnQgLfMFDdDQQ
+GpBtwtqrcCcjgnLgqfgDDgRn
+cJwVwpCpGJctJtBcCrSCGrVJhlsbvSvTvbmHmmsWmHslmsHm
+gCtWJvmfmGGwVVMhJw
+nzRSpZbSVFFRDFSDzcplddqplqMhQMclMp
+zFLszzRTDnZnbTZTRZsVNgCjrvfvgtvNmtfvLW
+glRQRpQQtQtGtQws
+TnmbLqvBFRFFLPBFnPbvRBhshTtHWhwzdwtHdsdzWhws
+qmCLPNmCFnLBnmPPqVbFLRrJjVggDgJjlZVVDjDlDD
+vRRgpWvPQFdTFDDNQs
+bqtCmltmlbwqLVLZqwtmLBBTMcGBddTTBgFNGcZGMD
+bbtmJmjlVlwblwwbwzbbvrrznvzShgRhRvhfWrWn
+ZMhThfNcpbbMNNjsHpmpsRqsPmRs
+wQjDgggQDPqqDlsD
+SCwSzvLVCSVtQVgLnrccfdGdTdZfcZMtjJhG
+wNnNmNHnNPPwwPGCrLSZZvdVVZvBtMMvdm
+WQzlhzjzbBtMMlBrMl
+szbgWhJjTTcsWTqgzsqcsGHfwNcwfwnHHrCGCPPGwr
+CNsbpFCMSrmDhQHNNGmH
+fQPPPcqvljQzjVDDgRBhGGqDgqqD
+ZctlcVzcfltQtnrndbQMCM
+NQjQjQvZvZjcvrrrNjgTQgBQwTJsJswJlbGstqqtmGhmwhqw
+PWpHRzRnPHHSCnPFwlqhbtqGZClJqGqG
+ZzVpMpWPHnVzzpWzDRzSZrcdDQdrQNrcQgQfjcNfjf
+BSZMtdtZBzMFvhCbBJDbhDDC
+qcqVVmccrmVcjrlHqTrjDJRPQhWvPWWfPvblffDf
+cHTrbGwpmGwVjdFMnzpLznMztd
+DGDGGbNgTgJQQLMRMMTNVzvPsPbdsfPVsdVVZfPf
+lcCmmlpwwnwSjCHtFpCpHzCrZsVrBZZzdvDfVrsfZd
+lSHwnjpFmppHqppttttcFmnhMLGNRLhTMDqJLQNLLQNLhJ
+WqWfDWBjBjLbfcbbqGbWqQsrFFztsppMFCzgCJzJCrFpCM
+VRlhdHZTZVRRmZwlmFrJwFpMMDDrrrtJwg
+PPVddvvDZmRmHvndTHmLcbcjSjLQBGWGGQWSqP
+HHvgvwHMPMwHwmcRfJNFchFGNNCm
+BsTDsjzBCCBJGffN
+jznSnSdqzqnQTbdDljQjQSMHWWvvgWvtZlrWpPfWwtPr
+DJCJJCNjCDRfDfDRhDnNhfjFPgbGbddBTjFdTFTPbgGSdF
+cmMcMVqBZVcwsGFgGqgWdFqb
+vcZVzwmHVcrtrwMMvvmBHwNNCDpQRfhLhrNJNfJDDDRC
+VWSSScsncpDRdnsWsVncVzTwMMMHtMTrLTLMMVHM
+fjJvQqBCQNhfQlZZnqmFHLFMTFTzwzLzrHMB
+CqfjjQZJPjjvpRppDPgbnSnP
+tLnjNwjRWttdCwRLsfGzfzPbzbWbQQPT
+cvvBvlBrFrlTffsbfTqZ
+vmrFpsrvFMMMNwhtDwhN
+wzgRNqwtgzMWtqGwCssBBSBZnSRsrQQS
+bbjLTmpjpHcpVncVdmffPCDrjZDSDsZffDQC
+pbVFncvvbpbbHJJHVdvqMGMJNwWlNlJMwqzlNM
+TdszlzFsRQqFdRzqwwQGlFsGmmSBBdmdVVmgSZdSPZBBBmSD
+HMCCMbJHJJLHSmSvZLBcSDBP
+NWbhPjfrbbNfWCPjhNnGsNzsqpQszTQGRwGQzR
+ppQpTNCPBTlNBVmNQTNrrrrtqsrWbGrVFWqhZb
+DMvDHnjRvMDLghhhgbqZWbqFSS
+vWvMRRJDLMnHLJjDwWnnndcllNTzBmClQBpBBzQQzCBzCJ
+VsNZfPMnrCnlCnWtbvBbvwtTbZwT
+JhJQdQhmRHDRdLmHJhljhphgGwtttmcvbwwTWtvtbGBttc
+jqLpjSLDHlhnffCMzsqCPP
+JzJdLRmmzJwrLLwLJwLTWwBrMrpHlFnScVVqccrBHSlc
+tvQDQhjhvbqFqFSpjHSV
+QbgZtsgfbNNQbgbsbQRfmWRJwJGWWTPRwqzR
+MwvDgpwszSpSJPsssMccTQfTDfTQRTljfRfT
+PmGbWhbVtZWPTqRrcTrrjTrt
+NbZbWHBmVGmLbZVBVNLPsMBzwSSzMJMCsCzvnvSp
+cTpgTnpzbZlJHTZm
+jRrLVtqtvtrjqsHZhvpmBfJHmhhp
+FqDsFLCwCVRDqwgNQcQMwnncnMpg
+sCCtssdZdZJmMbNJDmtmJzLSrcGfHGLTHDHnGLrHTSSn
+gQwRRWqwqgpggFWPjPpFnSTSnHNfLLQrccrLGHLL
+qqlpqhjFwPgPwvvRgFlPdslZCzMZtVdtVdVMtJlN
+BWVmPtRVRRWDNtZBVQzCfdscmfjcfdfzzSfz
+MhgJLbGggHbqpGgpgJbrFJdjwsCChCzllzCdjDSszCCD
+grpDLFrbgpJnqJrHGFHGqMHBBPRWQTPWZBQVTQWnPNVvBt
+gJfggdmHDgfJJWzCcbqvcqcmTG
+hLZlRBZNlBlrpprzrWqvtHvvGtbvHT
+sNLRjHZLNVnZZVLppnhNsMFJSjFPPQMjwgMPPfDMfS
+mDDzHfrPBvJRJhpBRg
+SsTSTwJwcbCtwssGFVWppgZRbLpLRNhpLhbLvg
+ttVCGjTGrfJJMfjD
+ffhcsTjnfqHLqvZSHvHB
+CsgmPVmstsQVpRbHBvFbHBDMvZLZGB
+ppgpmmRVpVPwPrrrTNlcrwrlWs
+NDtssPNBjQtCtCcT
+ZZqncfqhZqhJZFTJTllCGVljSl
+ndrWbfZwWhngwbqbZnMZcwWhDmmLDmzvHPvzNLdmzsvBBHHP
+FQtptwMppSFQRRQfSfvTrTJJJTrvLjMMJbgJ
+CcDqWBWzbldcchDGCWBCBhdGrvhnrsrjjsJvLvghrjjnnjsJ
+GDBldPDGqPGWVBBcwHFmSmbpSpNRwHFV
+CwHwCFwtCmdCDflHDpwFnnvzhhNJhJNzmhzhhNMM
+sTbZssPqScTrqSWSShdMvgMRRzdRRQ
+brBrsWPTrdrWsPcBcTcGqDLDDHjFfDClwLLBfFlFlw
+lNptNFWpbVMjlBgQgvdNBRQLrd
+TsDCDfSCQqqQQqDq
+TwTmwPPPzZSCccScJwpWZHljtbWMFFQVHpnj
+fhFmwbrgnCcSnwtS
+vZVVZvQZVPZsMnNSccMHPN
+ddzvQJvQzBzWRTJzdRVSWGqbRbgmfbFFbmbgmpmlff
+wdslVdQtdlBVHDrHBcBc
+TJWvpncCcJzCWcRfWvJRRpfZHBDZZHmDZPBjZHjZrSfb
+TRJFvvWpTRRWCpCgGtgtGQdlcNtsGlwg
+rCHvRLJtCjpbRCLpptHMVCQgGlMndVlQGNcCMc
+zZfzSmsfSsMzMccQMVcN
+ssSmPmSmhwVhZBZsTBRJrtRjtbDvjvrTHLtJ
+wswRCNHHhsrWFsGfGWFBGb
+lLtngDPLgLJPttgWzQWlbCfBlmBFCW
+DcDnVpcnnJPngjjcdpRhwNZSCZNdNdvr
+NWNzWpfMRHfwsRNznPdjtdjJtPVPHVdJ
+CSLTZBrGbSmClvBVdGzFVVcFdjjjnV
+SrZhZbTvmmbbLvwQzMhsfhqqWwQR
+vvZqwFBZvzZzrqltPsQstrGGpMcbbR
+bhJdjJJmTRQMTMMPPM
+mCmgLbdVVVLhVnJmLgJhBWZFDlqFvwZDlZBnBvWB
+sMrcmQcHHsLLrSHZhvdCddvtJJFl
+jzjjWplWpPRPDzPzfRGjqvdJqqqCtqdqDvdDqtwC
+pPNWVpGGVVffPlnSMnMsTmgsQVLr
+zGMMRbpGmqqqNRmmzbNfbzPRPlvThCTrHPnrHSVPlTHR
+LSjjwgsjtTjhPhHhvC
+dJZtJwFgtBLDZZbmNMGzMMqS
+ZrnstppPWccnsFWpnZnRdjRtjbCtSSRjjjLLbG
+JgBQPJvPgHHJvmmzwGGLdjHGSjShGHqdHL
+wTJvPzmTJvzJQBfwNmTmlPsrVfnVFpcMVZprDpFrsrVc
+ssGCtltsSdJJtQjPdvHvfbfvqLHqZtBfVb
+pzRwwDwDTgzbqVTVvHqVWB
+grzHnRpmFpDMnmzFhplJCjlsPdGJSjsFCdFs
+CTGBBGCBlSTTSsnTMrQbNrBMtpVzNddWHWzVpHVtdHmwhphm
+JqPZgMRFFvFZvDZMDFcFFfDchdtdPWpzpWhtHWwwhVzWpddW
+ZfLZMcgqRDjgjcLccDRDLsbbrSBBlQGQBCTrCBnT
+VjVGVqSqFLFVSqCjFJSsbfPprHbCCRRPccRWPW
+wwnQmtwlvNmpZRsPsWWNbZ
+DBhhhznhddldnvjMqJMTqDMGPSjF
+TTJbsJPPBDsBVbJJGJBGWLfmWzgmDmzmLqmmLddQ
+jHwVZZjwFZlzLzWZLMdLqM
+HHHhjHplrHSpcCSvjlsNPbNRbRnVTrRsNNNJ
+NzMMLZtwRmbwFnVDhnqD
+SlsJsSdSJdNJnFphVHFjph
+vlrsTlGPTgvvSBScGcBvfzmmLLCtMWNZRBQMzftf
+tRFLmZZRLrtRvtvvrvvGgvtLNfwzMzNwgdznMpwwpnMpqHdz
+hcsBsWTcQJhjbHMncNwzMqnzwl
+VWSWWTJhWBVDTJsTVWQWTVVbZtCPSvrrGSLCRFRGtRZLPmmq
+hbdFhdShGsFSGBlQhNhQMLLLlLJCvLLDtVJDLlwtwD
+WcqWsmcWrmqcmtDHJjVHrJCjjt
+WPWcnggssmzqzzzgfzZnWRqqdGpSNFdMSFdBMSFZhSFBZZhh
+GNFNtRQMGjDjwfgDZjmz
+bqDsPWWbsqVsdvvBJvBfmgfLLzSwzLcmzmfB
+WPWrrVrrVJhVWJDVsqnPdRQllRQRNhQGMlFQFMplGl
+mChChmSQGSGJrjPHCpPFtwgsFZjtFVZfgVwtdV
+MBMqvDWMlTbzlRWzllDzblZfsrgdZffgrtwrswZfdZTd
+DlcMvBbBMnqMDqcRqDBMWvLmCGrGLSJhnLHCCHHnPmSQ
+tscfGqftGfDnnppJGDGCZLbzMVMwPPhsblzbjzzMMz
+TWPTWWmHTmFRSBSvgBPwwwlVzhMdwblhbVjRLL
+TTQNNWWgHWQHPBWTNPWNcqJtGCnfqfpQZJCZpQZn
+CqzCGDQJCzzftfRqRzzMdvFpFpccdZFvFMtMbd
+rNHwmHVmswsHVsPTLnbFSTbZZpFcpvSZZgpg
+vPLhLLwHLhVVNVvQhBqDCBfhDzCffG
+WsBbBbsWNhsPsCNssRWLPLpmLDDQHlJlnlzFnDDnzF
+gcGfqggMqfjjGwrdDZzQFmpJQzZlFDMF
+qdwqvjdTrwfvvBCPtpVvtR
+RQdbbRHtHRvqZtwVcmwVwV
+WnLNnqFDlDWzzNLLrjClwCZCGZcglGCccZ
+LnTFfWBpffrfrhBqdsSBqhBJHb
+sqsgJpDMrNQgGsFMsPCfjCPChPWjqSWSjh
+RBnRnZVcwZllLwbwwLbZVLclhpjRttSdtjPhjWShWdphjCPd
+HwHwVVwVnBVBmmGppNFzrrsgJJ
+WpmDFlQlzmmgMMLMLQVTvTTSwNbmTVwTtHHw
+jrhPDnDnnZfjPTNtHSVTcjccwt
+CJqPfGnhGZCBfnPJCrBCqdLqMlQqDLlLRgLQFFRW
+vZVvDZsvhDZhZvzgVcgVqPqmwWMqcw
+bdTbdBBFQcdCdcGmcP
+bmjQpHfbpzDJRjNhJZ
+twRrwjFptprQjjjtQRdWCmNJTlNSCmZQcNlmlSST
+VVDzMWDnDHMzLZDNNJSqqCJZZD
+HHhhsfVHGbnwgjfrgdpgWj
+GmszZGMrLmnmsfGVRcVlwtwccc
+SSCgbNqSTgCCJMHCJtlVcwVbVljlclVfwf
+HTCgHSgHQThMqWQQSgDnvBdsFDvrzdZsLdmLZZ
+PRlMlBPPctVBlstzVLhsdwCqCdCNDjSDdWmMqdNw
+fZrQQHFffgGFprSJSgvZrfnqjmWdnndCNGWmWDwNNDCG
+rTvvpJZZrfpFSbQQvrrsssLRVPPtlRtRPThzTR
+FqgHFFMRTRjRFRpRRjFtNdCtJCMnNNdrdMLdrQ
+VhWSmwGwWVbGbvlwwlLZJLZSdJZtNCtnTSCJ
+BmWwWWzhvVfwWhmhwlmvwlRqHpscHRTpTDRFfTsjDPjD
+MJMgGqMFLPGgWVjpcmjZTpmZjZpJ
+hdSzzlCtzNdtWSdndttflBmjpBRmvvpjnjcvBjmvHj
+zdhCrfztrDSzfWzdChrhlhgPPPGDgqFFLGGFVVqqPVQw
+ZQZNQRZzFdCCgfLcCGDfScjDcG
+vsmwVHTmTfGcSHjcDS
+tMsmMVlSWWzdWNnQNJ
+GPRcQnwwQWwFFnrnnldSqzMfSCdfdldrJf
+LpTsjmZTsBZjpmzhLLMdSJJSMhCC
+ZsZBssBsDpDmmVBjCmDZHgnVNWvPQPNPGvNQncQPcRWn
+pznzpzlGFrvGHGrnnMvDmBMfgfTmsBsTTghDsg
+LJtWVCWLCNPcSbdcShWBgBThgTfjzwfhhz
+VZZCdLCVNNCVbCLzFnRqGqlHprQZHRqr
+dFTsQPdMFsMnWFPdSnwBltftttvlflNN
+VLZhZLqghCgzqgrLrcgVgbCvtDDtwpqNpDtlBRflDwNqDpNw
+cLmVhVcgbZrVhrhCLhczhQdJHTmPJJTjvTJsPFWFTW
+SSwNPNHldNJSngHqBssQvBfccB
+mMppmDprWpFGRGWmWrDrtGzQfcvvQZBBzzczqRQgRqRT
+WtFtFvhvpLphNJJVSCbSNP
+chpGMMzcwSSGnQFRQQFWcFWn
+sgddTfjLqsWrRtLvQnJr
+CsmlZgssbRdMhzCHDGpGGG
+vHBrTzpMPTHMtbBRRJGtDsNB
+QJWWVwnCZmQlWQWlLWCCmmLwRgtDdDbgngqtRdRGbDNDGtGq
+LwmWQLJcWmwPrpvpjjrcjT
+fcsWnWzhWcWgcbfbvtbHTRvpvHttmLtR
+lNSjwjrDFjlFhlZlQTpLHvSHptvTSRtLmJ
+NwjwrQDwFCZBCfWzqhqqzc
+fgNJNRcvvWRfWRrZFldlwlFwfFllflDH
+spQshQhpqhJsLpnQVLqBqlFwddHSdBFFjSFmwlFmwl
+hppLsqPVLnpnzJPtqtPPJTCgNcrcNbrrGNcgRNrzcZbG
+PWFdgDGCFPGhMtQqHBrpJqqW
+nlllLNmnVNNLllVbVRLRsQMqqpccQQJcJtqcJcnBrc
+NmvZLsNrbZNjNZVNGvdFFfwdDhPFdDzC
+LpZpwgLsLSzDdjVGpS
+bWBlHqqBhNJWNbJQFzGtCtDtGGjNGDgtGC
+RBRbJggbWRRmhWqTcnnfnmZMTTsTcP
+JJgzvfzpdzzJjJhgdfhvqfdScNsLwwGsrRbwRLbcbVrVRp
+WDFBTTDtHTntltnCnnntCDwGlGGbSwNVSssrbwGVsVLs
+nCHMDtCWWTCCHmmPDnZQgvfQgZNJJdvdMZQg
+lFDgvlsGvvZGDsFZWgGvWrPqnmwwtqmMVSWrSqMM
+hRpJhLQHhdTTVPmVSrqwtHmV
+ctJJJfjLpjglZDGCGljF
+CnnVMbhVRbQQZjBP
+rlfsLFLtmLSJscttFfsdjZwZNNwBPWRjRNZBZBfQ
+tFrmDFlDtmcltFvqVzDqQzGvCVCG
+JzzJzVrmzJpCCmTFmjZS
+HtDDtggWssqWfDgwDWvsfDBBchZjSnGGpCFjSFZjpGjFShZg
+sbvbvfbbDblWtrNVNRzRlJPCzM
+nlFnFWsWhrctWVdJPDPTnTNJPJQJ
+fHqvHSqRqSHjBmqvmqqHCtJSTZGdMQJDPQDPPMdNTMZN
+jzqmbtRRztmbLHcFpgWVsFphpcLV
+PHZFZFVZZfHgpwjFtmgjtq
+rpTrTNzzNdrTJwgMwqCBJzJz
+vsTWbvccRcdRbrRnRRbRrcvVpGlGHZPspSVhSPPQGGZVHV
+HWnDDjfPFccDPhfchnMMVWGzzpvGszCCGWWV
+JNBtBTQJNwJQjTpRVRMvpLsQzsRR
+JltNSrBjmrHfdPHnDlHg
+ldCJHlZFspjzHMnp
+zvcLQBQcQvhBwmcDppqbNpjMLnLDDn
+BvcmQhWWRzPJJzWWWg
+ggSTPZBwTPTPSTRwZPBnwPMLdVvBqzsqLzqqtVzqtzBszN
+QRmhQhffCQhJcDfmpChQWJmJNNtzvqtLdvNsGtLqNGzvWqvG
+HQFCDhDFCCQJQmZTZwTSSwrZnRFS
+QbFlsMbgPWPlJWzsJsJZntvnvZtctHBfZvBZlD
+VTqpTqmSrhVLqrpjNppgntfBgfjddHffZBdtcB
+VCwpqqqNVgNVgMJJwbsWWGMGFR
+GCwRjQlsCQrPrGMQPsRvpdvgnjgmVVmSStptgJ
+DzNcZNHZZhzzHhDzDTLWhDzSdJSSpnnVSTSvJJmgvSdmmn
+pfLNDppNWHqDWfWbzcHPRslCGbwRCPwQrGQPCF
+hVLnDgCmbhltrmDlhbhVmcgFBWdSBSZZBFPwBLBPfWdPWZ
+TNTjJNpjqGMTRRsTTCZddfWwFHFWHSSJSFPS
+CGQqvQRTNzTpQsDtmcrgDQllhnQl
+SWrtcHWjcWrPcwWrBwSPffnJNsqfMNCNqNfJFfSq
+QLQvhBpbbvdvTdvpTdGDbDQqqqslsNMJlMMCqMfQnlfC
+gThhpmDLbzBmGLptrmRZcwHWHZjVrW
+gQvzQRvSSbvvJvQgfRrfbSpGqBPGwqwVjPBBwwjpRmjB
+TcNHHVVtNsDHcMcdMBjqpBnGnwlGTwlPBl
+MHsMDHFMdDtZddZdFdFrhhgbFFVvffrzzffrrS
+QSFmrDSSQrqlfmDDHPRTdrrTPRbsTPTsNN
+wBcclhhgwgMhWLLtVMgVvzRTNNjvbszzTdjNdsRbjp
+nJgVMtBhwLBctmQHQlnCGqmQZZ
+sggtjzzggfGmPbCMvRCMvTmT
+RDqqhdQdDlcDpqVlLbSbZFSTTPllbCMv
+hqpQWRhhdncDQcBsrwzjnfgtgGfgHs
+MTrzlgMNQNggrrrPlzQDPCsFRfscTfFVhVftRsFFsScS
+nWWHZHhZWJjjwjLjwbLbwHGSFppVfFVcGcFLfFSVttpf
+jWhZZBhqBbwvZvBjZNNQrQQQzPMlzzglPB
+jLVhJZQjwFCLRjQhPRZFLDzrGDHpDGsGqztGHststC
+SBNlNmWnfvdLmlnvfNSbzrDTTzprdqrDpGqqpHrG
+bNmSBnBmcfMmcmnlfcnNSnLhZPVVJhwjZRJPwjZMPjMZ
+VpzBDgGTGVNNpSGzppMdTQwcvFdFMQdcdFwc
+ZDsqfRftWtllmlWbLLtjFFMwMrjCcwfvMFvwcC
+PHbDLHZtZJSJPpVgnV
+bRvTdswLLSTvwswSbDhsDTvFmmGRVmJGZJnRcGGfFVJcqn
+MWllQMllWHrjWPNplrllQMPZJmnnVmqJcNmVFFnJNFqVGC
+PgpQrQjjzQWHzpBdvtwhwdSShBZTsT
+MhTwjMTsTRFStjmSMqqppBrHpDrzHtPqbD
+dllNcZWgldLvcsvvvvgvWddlHffqBHBBfPzbbqBpPHrpHNbq
+VddvgWWdCZhnhsCSSCGT
+LPjqHnDNqqHNllqLpqPCZCGRCssGdGrGFrPrgr
+WVBztWTQSQMBQrGgRwwwCGgtwg
+QJMTgvbTTWSzWWvSbVJTzJllJlHHhLpNqpHqjNjNHpjq
+PCHCbPPPHPlTThBhjGTTNhMNTh
+FrmfLqdqgfmfttqtWqfrqdhshchDBshDllDBcGDhGDWs
+mqgdpvFmmdLdqqQCPHZZblvwZQZl
+bQGqmngwwgSNrBWJWdHZmjfZWB
+FlpRLCptFLMlLPRLlCCcCCMpjJZJHShWdWvBHHdcZdBWZvSv
+FRPCDTTtFptVTnQnrGbwbS
+LsdmnDMTLbzsbNtqcb
+lJjCnHSvQRRwQQjRRHQbgWbqctNJPbcWrcPPgc
+RhGSQGwBvvGShnGlHClwjmfpmfdmVmfFDBLDDZpmMf
+ppDnPmwvNDjTjjcssT
+qqfRHzdCPHWfhHHtTjjbbLLGZr
+MhzqWdJCzqJWSJnpnpvvPSPP
+NGWdQgDDHGJgQLznzzsJFFzvzB
+twRCpZVjVWqVSqVwwjtZfrrfntfvznBssBncfLrc
+jRRwCqwCZhlhZRpSZpjSqWwqmDMQdMmHPQQMHGdlHdTldNGd