aboutsummaryrefslogtreecommitdiff
path: root/advent-of-code/2022/03
diff options
context:
space:
mode:
Diffstat (limited to 'advent-of-code/2022/03')
-rw-r--r--advent-of-code/2022/03/1.c50
-rw-r--r--advent-of-code/2022/03/2.c47
-rw-r--r--advent-of-code/2022/03/input301
3 files changed, 0 insertions, 398 deletions
diff --git a/advent-of-code/2022/03/1.c b/advent-of-code/2022/03/1.c
deleted file mode 100644
index 447fb78..0000000
--- a/advent-of-code/2022/03/1.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#define BUFSZ 1024
-
-char buf[BUFSZ + 1] = {0};
-
-int table[53] = {0};
-
-int decode(char c) {
- if (c >= 'A' && c <= 'Z') {
- return 26 + c - 'A' + 1;
- }
- if (c >='a' && c <= 'z') {
- return c - 'a' + 1;
- }
- return -1;
-}
-
-int findcommon(char *buf, int len) {
- memset(table, 0, 53 * sizeof(int));
- len = len / 2;
- for (int i = 0; i < len; i++) {
- int code = decode(buf[i]);
- if (table[code] == 0) {
- table[code] = 1;
- }
- }
- for (int i = 0; i < len; i++) {
- int code = decode(buf[i + len]);
- if (table[code] == 1) return code;
- }
- return 0;
-}
-
-int main() {
- FILE *fp = fopen("input", "r");
- int sum = 0;
- if (fp == NULL) return -1;
- while (fgets(buf, BUFSZ, fp)) {
- if (strlen(buf) <= 1) continue;
- int len = strlen(buf) - 1;
- assert((len % 2 == 0) && "len error");
- int common = findcommon(buf, len);
- sum += common;
- }
- printf("%d\n", sum);
-}
diff --git a/advent-of-code/2022/03/2.c b/advent-of-code/2022/03/2.c
deleted file mode 100644
index f91ea46..0000000
--- a/advent-of-code/2022/03/2.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#define BUFSZ 1024
-
-char buf[BUFSZ + 1] = {0};
-
-int table[53] = {0};
-
-int decode(char c) {
- if (c >= 'A' && c <= 'Z') {
- return 26 + c - 'A' + 1;
- }
- if (c >='a' && c <= 'z') {
- return c - 'a' + 1;
- }
- return -1;
-}
-
-int process(char *buf, int len, int n) {
- if (n == 1) memset(table, 0, 53 * sizeof(int));
- for (int i = 0; i < len; i++) {
- int code = decode(buf[i]);
- if (table[code] == n - 1) {
- if (n == 3) return code;
- table[code] = n;
- }
- }
- return 0;
-}
-
-
-int main() {
- FILE *fp = fopen("input", "r");
- int sum = 0;
- if (fp == NULL) return -1;
- int line = 0;
- while (fgets(buf, BUFSZ, fp)) {
- if (strlen(buf) <= 1) continue;
- int len = strlen(buf) - 1;
- sum += process(buf, len, line % 3 + 1);
- line++;
- }
- printf("%d\n", sum);
-}
diff --git a/advent-of-code/2022/03/input b/advent-of-code/2022/03/input
deleted file mode 100644
index 167796a..0000000
--- a/advent-of-code/2022/03/input
+++ /dev/null
@@ -1,301 +0,0 @@
-gvNbShZZgQfWdQhdPQmggLTFLwmwjFqjVVgM
-CsJnHllcsnnnnJrGRnRwPPLVmFLHLBjFFVHmPT
-JlnCtctJnJDcJlDCRpPrSSQWfphzWZfbZSvfNfbS
-WjvRSdSQjvpjWzNlnZlNZqCCMzZZ
-nJtJsbctPBPwLNcDZNNGLClC
-tsFJHBgJwgJbnvSHHWVWHhVhpQ
-zRzPhCCSHVZzfGHZ
-qBsWBpqBwBcvqqWgdfZrprdggPHHVZ
-WWmvwvBbnWmnwvWcbmWWnqNCRSDRRSSjjSDbPJbRjClLhC
-rQrznfHHhrHzllzlzTGcJgtJ
-jhhjjSZVPWVZvSFtTttLTglgFtvm
-dqSCqVWdbDSSVqbVVSqhNdrnpnCnfsnnwfnsRpMpBMrf
-rTnvrSSHvHtnDQVDtfmW
-ZjCglhcCJschpZbZgbtGmRtbGmwtQtbmtN
-FFZCghFJhlslFpjcdFTPLHHmrqTMTdzBLHLH
-WzDfrDwwDCCDMnfDHHJjTHTtNdngdHtQ
-FmScGPPPPmpspchbGHtRsjdJJJWJWNttgH
-bvhFlVhPchPvqWLwqLWqvq
-RcchVlCCvmhDRjNJJJjbjllZlJ
-wPwFGFMPfpdtqbpwFFfGPQZTWTZjtzQWTBBQJzZjZZ
-fbwPqqMPwdgvmDVDhmRCgR
-SSQggtQVQQgQGmGVthVnWDGjCBLLzdDNCCjDGWCW
-RcHcHbFqbPMZRFTvHFFFlcZZBNBtNjjLLjDdjLjDqWCpNLpj
-sPPclZcsZtMPfVsnnwwVJhmQ
-jlrwpVPjMwfzZfhfwddH
-DbQBGgBJPPBBHfPZ
-ggGSQTnTgQGbSRQRPrNlsjVjMrpmMLnrrW
-MzNNbMSrZNSSvGWWznwGQlTG
-ZCFCJHqJFjqTTqngPwPG
-LCJLJCCFtfjsJCMbZSMSbbcDdBfd
-LCdjljfJJBfLDCCdJqGqsGGtmBsWtbGmSS
-gpgchRcPgRRQNZcpNhgNPzzmGrmrGwtSSswqrSGbbTzt
-QgQvNppRPQcggZNccchvNZgCjlnsDLDflDdfjLfMDVsMLv
-jfSfTWfwTJffQQNwTCHnGGGgHbgqGFvF
-LmspctdsLDlBLPmFFgqbqFFbqlnSRS
-PSZZsctsDDtdBmzBLBSmpJjMzWwjVfwJVMrNfwrfzf
-zFZqbRNRHNHhqHFqzNnzzqDQVFMggMgDpmJMTgpVTQFJ
-SwLVsSWBfStDGMfDTDGGGT
-vlCBVsSvCRrHRjCqrn
-ndGVddlVdrcGlGcljdVGjCgfffPCCLfCMvqWvPnqgn
-FNtRZBDDSNSNStDhFRNQtLgCMTCBqvLMMTfJqBLPLP
-bwQwZhSDFhZbFSNccwzwHmHHjHMwsd
-BrSDgqrgWzWDwJBzMDWBLjpmVLFfFPLVJjVVPLFV
-cNnRlvNRvQTcnZwmfQGPmfVFPP
-dsCNllvTdnntTlTsHcdCRtNRBDWBDWDrWBhDBqMBDqbzWwCr
-stLcchcTwRcsVTtftVVthchqmmCCFvWmmgSgQFCwGvWSFCrr
-PljDbZbzjllHdQNWHMFGrMMHMFrmmM
-njjjzbPdqRcRQQns
-BTBLwzmqWNbpzqNzLppLBnhZJcJSHThhnnJZHHSQnr
-RfQgDjgsjVfRFDdvddtvhhhJCnrSnMZCcMSCSJ
-QRtjtRQQlzlqqzzzBW
-FnzllplJMntnzptLFzsjTVSQcSjSjQFFmdQQ
-wgwrBrwGHPGBqHrDcpmjddSQTmTGVmmG
-DBhhNBrCrMvNvzptpN
-LgSbLLRJQSzLCgJRJhWCCzRBdZdcMfcHsMdFFjfPjsCHBc
-nrVTnmrrrlnGGmrlVwVZPFHmdsZHBmjMcdjfcZ
-wrnTlNpvVVrqFrtnwGqwwrTpSgSQQLbQRzQSQRJbQpDbQz
-pgvmcpVcpwJppwgwvMWfHbRGRHDBJbWGfGGb
-hQqFqQNhqdCPNhTQCCFbbjmBHBbBRjGHBDBGFj
-TtdCCNlPCmssnqgvzzvvtVrgzzrc
-JltddTSgtLLvgvdldgvWPZPPSjWMjCfWNjNWPG
-FrwpbwhbmfjGRpGPNM
-cmBrBcBnmFBQqcFbscBhQfttznJgzlLLDlnglzLLlg
-mDhRsDzWZzGhhhWpZwzwGdfbFsfFTQTLcNFfFrNvvcbT
-ngMHjjgVgqHnPlnqtnClMHbfCJFbcLFFJFLbrQNbFQcQ
-SlqHqVVqPnBHSHHljlMndBdZQphRhdGpzWmWWwBh
-hVNhcfbSSNMfjjMlqRCqpdzpRJdnhl
-sBHPPwQwttBBssLCHzDBlDDmRmpJdqJJJd
-sHHwtsHTWwtZPHtZbbVSgMbGCNjNvN
-SgMtSMVChFBHBFdCwhdqPcPsbRVQqsblDbRmlc
-jlrLWfvWvzWWzmcQcqcNbmNDjR
-JpLznrnfGrrfnWWzTpfvzvdHHCgSBwdlTMhCTMFhBBwg
-fptnFPLsttddDdRhQShQzC
-BqGHGlqmmGmlJmNmqlbbCzSCQHDzSjHhfSShjfVh
-fbrrMqGGBlNMGNqrqglmrLZwFcwgFwsPcscctpWLgn
-TCMMTtWBqCMMMWWMSWhNFhlNBNlNHwNDsvhw
-frfdrbZJrVLdZLbnJcrmvhlhHshlgsZsHwwghZ
-fLRVvcvRVpfbcfVVJTqpWCCSqCCTTtjjPj
-vRCGzdTtvdBCTzCdmVsQjnVttngthgnQHs
-rLNZlrwrjrFLMsggsQpsQngqMq
-NfjZWcbffDrLZfNLbDczvmcTvvGCmCBBmSdP
-DSqdzrHgJtSHMgvmnNGdcmCnvssN
-ZwQLlVlRVVWZFZhbJZVjRJscvBGcpssLpBcnGpBsmpBs
-TwwjjQJTjlhwMfTDgMrfgtqg
-HhvVhgddvdvqTqVqHQgjgmCPWGrcWsGWPcvlsWrWmC
-lbJBBFbMlJFRCmsRmRPtCtwm
-FMLLpDLnFpFJbDfLnZZSzhqHVdVQjgSdlQTZ
-mvBrszzsrrrGsBDvBvszDRQDhjCwWdLhJdCjjWZdqqdZdW
-gMlfFVccTGMGPMSCdcLLdqhjLJWWdZ
-VfggggPVltVSlSlHfgFtTpfRGmRrrrvQpQsrGmnvnQbzmz
-HjtMgWbHBtbtcggVcHwMwcdzpZFGzGZFpvFFZZWnnpFG
-RNNrfmSrSSzdGBzFfJFq
-mNsSrrTPPRshmsBClRClPmSccVgQVHjHwtHwTMbTVwMHgg
-pZmmLpQLDJBCPCssJTsCTc
-SwlLwWvSwNSSSMSMfWLvvVdPFzjfTscdjcCsjzCPddFc
-vbVMqGbLSVMhDQnRRQnBqH
-lNmNwlmlbhhfFNgpJLnHfTHfTdnTML
-BGvCwVGVPSDWDMMJTHZMpndH
-rVcBrPSPCwWqPwGCBCSrqlNNQFhsQhtlhhhgNQtb
-HqZCQRQgWjpmZHRHqQjttGGJQNQtwQGGGbGrJz
-SlddfFVMLncbJJMzMzzMwD
-ndSznsdVHsqgpZvH
-sNStMtNtDztrvrRGPRRRRrNzqcchgJJLqnBScBcJThJggJBT
-QCWWZbCbCVjVbFVFbVwbnhqLqhghBLwwTqJJcpgTBL
-ZlHjfHHFWFjCdbHlQFnfdnZFMzPzrrlMrtrrGRMsDPrGvGPz
-NnDHhNNldhNTdHllpptCRtftzmGBGmVRVGRH
-wgZgZJLBwqgLSWrBvZVVzmffWzRmGsGmmssm
-bgqPBBLbPbrrZBjjlpjccjDdDchFTNlc
-WRWNNRWNfLZtsmtSWrtLmWgTcMcPrpMTcVMMPPBBqjcg
-QJJDFbpnpJdlcwcgBTqlgPwc
-GJFHJGhHnpWWShpsRS
-DHDZvDQWdHJMHlJf
-RhhnGLnBtGrnLjwwJTTMTdQccllSMQ
-rmFrrBGQLQFLjbFnBhQLhrRGCPVDWzgmpsWvWWDzppWpzCvC
-bsrJrWgWJvQRqbbRDNGGZDlwNfNfwS
-ttCHThhhcBVpTBcdhdpfNGDSQLwDLfDGfQllCG
-jFjzcFhzQTTjHFvJsrPPnnFgPb
-SZggDgNLGCQzSgRsljscPvPPbHsBNc
-TtFfTpMthzhFFTpdMMJPfjPPWjBbHbjPlPPBjj
-dpdttMMTJttzMFhqFwGLgGRSrrQGSZrwRrDQ
-JsJntWmghjgJTpfgFCczlztzrDZDtDzC
-QddBBdBSPPPHBSVHVHvNdPVRClvlcclCDLCLFRFrrDLcZc
-NVwBVSNlSBNHngnngsJWhwWh
-hQVWJGWJlJQDGJHQWHpVWJVHmfPGPcjfdLdLSrcCmfjPjCPm
-wgwnRwMvNvBvFZMngNvFZCjdSSfcbPLjCbcdCbSf
-wgnRvMMvjMsTwngTgnnDVDWJDplHWhlhQWlWDT
-WGswWFGsBFwHvjnbnnJjbG
-gLDrSrPpLfmmDqqbbJZsjvmvRv
-DTldTpTsDLgSsLpfPTslVdVVdNWVzcNwtWdWhzVt
-sttWrhWZsLVtJVZrWhgbCPQQbDNVCHglnnlN
-vvRRRMqpmTjwFqmfjFjmBMwNbCwQNgHgDnbNnHQHQCDg
-THpvmBGfzWGzSzzS
-nmZwwfPmNggwgPgNmdvPPhTRHTHBJTsvSP
-WDccMzVQzGWcrllLdsGTvTsJJBLTdL
-pWtzQrzDlrCpcQztlzCCCpCVFFFwtgmfbjmbqwZjZfmFwfdw
-bmMNNMVSRWBWCSmVRdMRmMnvZZscvvszGcnZClpcGsvZ
-gfLfDDtDgjgDtWTjFQjHsvvpZqqplfvvcllcnnvG
-TFPjDtWPNPwBBBNB
-QcTCHcTwdpQgcWzWwvMPRzSGwW
-sDNjfhVmnlVffmLNfLbMPPDbqGtMSRWtDMtP
-fZjJJshhhLNnrCJScHSccTQQ
-qfhBhLLjvMqWWBWjsQGrdrGzpszpGrqd
-JTSDHFtlTDbHTcFcDbTHzmrNRdRRbNzrmRRnRpnQ
-PHcltTgJDlplgptScCfCgWMVfvfZvhMMBV
-rttDPglHZZDDDPHgZtgWBswdsTfpfdplLqfsFfFdfd
-cRVvpcmpmRSCGGCcMQmQFqNNqdVdqTbLwNbdFfFs
-zhGjRhSvcMtnrpZjHZBg
-STNrrzVdTJwsBggwFgBN
-WbtMWJJpwpDsLBfP
-cbvncCCmWtCGMcZHVVSlJVQrzvzVqQ
-MtPVBHVbBBTwbvWgRgvF
-LhZjZpnnMRwWfhSh
-LQcQCLCCCcnmnqZpcrpnrjQlsBMHddtMGGzrJHPPsHsNPPJz
-NbZtmZDmNNDBHBhDNtNGcvpmgLmmFrvprgrFGv
-djMjffMdqnVVTdMfTPnQSFScFFVSLLFrvccvcllL
-PPdPwMQwTMWDwBDZLHZN
-DqpJFdhtmdSwpqSncljHsnfjqlbzlc
-rQVZLGMWPCNrCGMwNVMcbzsVgfHHgfncfscssH
-NBCrPLwMTrrMBLQLwCFhpFBDFdFFtdvDFvpD
-QRwGBdGwqRTBMWRMMzBqQHHhngspPFFbHbzgbhZLLP
-rCNmDjvrCFpvLZsgPb
-lDrmpcfCtVDtCjlfNfQQqVdJBQWRVVRMMMJQ
-zcgjlRcJCFtlnTvppn
-BLSHDMVPVPHVHwFwMhTvgnFZMh
-DsLSDdmPVNVdGgrzCCdbjc
-tjjRbNQtvJVVsvqsvdTsGqBp
-wlFLPZPzzzrzwZPmZfZPlrmpLDCpWDWCSTCpppDDBssdWG
-rwwcFFghFmgTcNRJNnnNJtHV
-RLhbzMhccqLzdjghdFddNWPN
-DmsTZfvrfJLPPWwrdFgw
-LsmDtQDfLLGbGQbSzcpM
-qwhmmHlHmlwChcCWlpPCBzjPVdBzLsdLBVsT
-DnJDMqRDsPsjRVQR
-tSGSnNNSbrJJGfDSSfbchpvptFwmpcvlHqZlcF
-rdQdBRPrQBBnfdBbzLLgLgmbzSLCPW
-TcRTcFDTcjvswMWzzgLSzwwSLJbL
-MNTRMNGTsFMMqqqcMDTTnfpBhQhNpHZBZHBfrptQ
-ZZFwcQGwRGLTGLTl
-rJtMrqBVvhBCnlCn
-WWWMttbqqzfPWqWJVzmDQwFQlwZwjQfjgFcZ
-RhgmdBbLLmRvhGZwhZZJDwGq
-ldPpTtTPtVPpfTGzJQFGFqJsFG
-MPpCnrlCVfPtrPVtntllnbdHSbnBvvgdgHgnWvSv
-nbnfjQbQZBqBvjQdVFGHhsQhsFsFzGpD
-RSJSTTcCVTTMlSNcSTRRwTccpwDFDDzFhHhtwppssFGGpsDp
-clcTNJlLMgrcgRvBjfWVfWfBrrZn
-LHQdpQLQDRcDBQccVQpnNRhllzMtRqzRztTNnt
-mrvZPZvZvZbPSFJrSrggFvrJzbhlzttTlNtqtsMtTntntdqq
-GPfJPJwfZFrmFvrPmgHHQLQWdHQBwWWCHVVC
-TvTTLfflhZmwZLvtJmhdFhMpnWrpnbJcWMnpHzMrzbcn
-VqRRNGCBjRmqPGqDzbHMcMccWnzngHnP
-jNqNBjsDsDRCNVsmBRNQNRSSSddhZvLhddZhvhwvLTZwhSfT
-vjpJvpgpNwjDWvvJLhFLLhNRTmPTRPRF
-HHbHVrMHMmqzHlGmtGqMtdLCLQthQQPCSPTSFLLPRT
-bZZzbHszMrqzGmrHMBzbHbqJjffcDgwWjDJpnjjcscwgnw
-fBHDMNhhHMrBDBrfQqfwwvvLvfjLZZ
-lmppmGJgPPpddJVdnwsQjLttqtjZTpcsvT
-RndRmlGWJgdRnWQJQgWdQPlFFbhhbFbHbHMhhBbRDRFrrS
-tVhwlMdMWlhlZMZMlzWrtRpBNpLPpmnmCPQBLppPPPBz
-GvGTsgjcTLRQHmTQ
-gGRGbfbgbcSbbcRggvfcwlZVhVMfltddVtrlZdhW
-PwjPHwWssqrHqCqprpCPjwrrQnnDbdnQnGQHnbZbGQZbBQdD
-WvNtLhfLndnBNbJJ
-fvhvvWfTmtzTmjpsVVqsPzMjjq
-GjHMMTMfZbnqHnJNCN
-rlpQpthdlQbnlJqRzqVL
-spphwcpBvcvdvFTqPDFfwwPZTG
-mQfqmtpfBHJCHdlMDB
-cbbPPsZqjqcSvVsCrDllsrdzrzzD
-TSbVTvShqnVjPTPbggSPbNFQWGtfNLtFfWgGmGgGWR
-HJtwgJJwJrcjRRjRnwhVdrVbmGhPmNNrGhdV
-fWFvTDssTDMCBCWsvszWWMCQhZhLLNvNNbhVGGZdRZRdmhmd
-zCTBzWzDDCDCfFCRqCJHcJJctjJSgHpqHqJg
-dgnwgbcwVGbgDWnQbjdgDnBRBBNNqRLBNMLFRMRlqNsc
-fTZHmTmzJMmSSCZChZvZTHRlBNBFqtqftlqssqNqftts
-JTHJvhzCHpmPCSSTzPpPzJHgQVdQQjQdQwjgdpgdDMGgQM
-qPGmWLJWBRRdvqvvNq
-TnZHsTZsZsZZbDtbrNrdnDft
-SShhQQZCHQCSTVlllVVQCjQWNJGFWpWgFpmmVmNgLgFpGw
-TsSmttWMVstNfbMfBcpnFchFwFwZNrrwFp
-DWWCGlHWdhddwpcrjh
-gQvPqglRCHCHCPCPCJbbtSVVWtTVVJvTbs
-ddHSZQHDStZStLtsdDpbCbBPcjGGCqCMBGdNPb
-hWhvmglVznzglgzvzfznwfnfscswPjbMBMjNGBMPGMcjcPwP
-sJWsJfVflWsnhrltrZLFDDRRFTSSLT
-qqCqLNjnPPLZPjqnDjLNgnNrcGwtgddGrhprBJhhJtBGJG
-lTMDsDHmlRRbQQbVfMHFmMBJhwcTddrcpBBGdGGJcJdB
-lHFfQFssFFFMQRVWQVlssLnDSLLPvZZPqWCLWSqjvS
-pJPZRpQtpPQpGPqWbqlWTdLVLJbT
-nnnjCwgrgcCFBfnggBCsMTVbVsWVWdCTTdbb
-cfhcnwnrcggrncrwcjBDcGHmNPRRGRZZQRRdDZzmzH
-NqTrrzLpTNdLLJBBcBGGZGpFHB
-sWbgfHSfSgVgZcmGtStZwBFG
-VjQjjPjhbbfsCbbDQCgsDrRhzMdlNzHTRdRhqdNTrq
-GlqfPdvdBqPgfqDgFMsMVDppbsNJNpMs
-WnmmWCTCjZnmzRjTZRRnFBMNpbZZpFJMSFSNFSbS
-TRRrnLBmzjttRRCmTRjjwLlvdhQvdrhqqlGdPqGggPlQ
-McjMPgPgGPHJWjhPNgPqQbpQSfqffnWVnnnpnZ
-BwwDmBTLRBBLzBTBTvtVqlfpqfbQqpqZbnQFlt
-rDsDBsmvRTBRzCTZsTmCsCrLPgNcPHNhPccNHHrjMNrgdNdP
-GqmLFDrcglvQGZwwzj
-nlHbSNBhhslJfsBfvdZHdCvRzdCzppzR
-JWShMfWMMthSJBBthJsgtcTTcFqcTrmTLrrTlr
-CsBsShBWsBWhvFJWCSsJpbTZdTbdBRgHffRlHHHBgH
-tqmnwwwDmVwfzZblzTRqzQ
-DGtDjGMcntMGnnGhhjJJJsCpFRRSJJ
-GQVVcGgFGcSFvfcFfJVnQmdbTwMLwTTnbnQMws
-ZqZrDWDtNPPHRNPzGCdndLLMLwMWhwbmLddn
-DRqRHCHlCtDrqtNqDplfpvGFjVjvBSFFcj
-zfSfdGPdMVHHdcMThhpwqqrwrqJhcF
-vlDNTWDDWWnngNQZtgwLrJZqLFZLFJpFJjJJ
-NCtWmnvBmDnWQVTmTGSRmmRTPz
-LLvppVLDsppGMGCLCCwNmJMNrNHrNmNNmHFjrh
-lZZfvfgRPZQWNNmlWlFNHl
-nnRtndRbcPttvTpswLTs
-trtzWfszNPlhPlgrWglhZjSLDBvTfSDTmSvmLvfS
-QMdVVGBQMTJDvSjdHJ
-nBppGVVnQQgzgPsPzzhp
-fVQzVrQVtVzHwjtMTjcTCjFgcDCGCd
-JslDPWLbLbZlJBMgBTBPdcFTFd
-JNJmZsDLnLDWmsVqSrHqnHqQwQSq
-mLMZRMRmZLmHLLjNshrrJjRsNNsj
-PnqnBVBPcpWrWfWzDhDsHW
-qpBQgcQncqpBcVgtclHqcSMTLZZQvLLZdLdwCmLMSd
-PZgMwZMjPgBCWgZFgmBGSTtwcccztTzbnGDcNT
-vJLlvvlfdsVVslVHrrpLfRlDcSScmbSnnRGDnbDTSbSSDt
-fvVHdLfLQljmmqqMQPhQ
-DZRstNGrDWGRMlzLHLMpNSpp
-bPgCrCvgnrCPgwplbMSjfHzHfj
-CgnFnBVrFFVmdVggmPPVTTcZBGhRqGtcZqqJhGRGssWs
-WrrCGrDlWhBBZtHB
-ggdcnQpcPRSpzfvJBTfPJvtP
-gSNnSBFnSMBNjpMssDmCrrGmCLqq
-szZGZGGwNdVtpwvbzptzVBQQLFclTJQFlHJNcFBRRJ
-CTrqSfWThWDjJCcLQRRRFLlQ
-rggqfMqPWnDqnVbZvTtPZpssVw
-GJHqPPcJnhthNHnL
-rzzlVDVTQDzSSdsSlzpBspssLhmZNjhZWjjffWBLZhgBmnjt
-TSTQTsnTbDsMvCGwcFvbJR
-PPjtzdnCnSjSthPjWJgJWjgMNBsNrT
-bZHfLLhvhpbfvLhHfQbqpNJTWWNsqNTrTNrgWN
-ZFbZZFvlRvZwhQwLDSdGnmCGmnlmdznD
-RFRRhzzsRsszRlhbrhgBcbTfHgBT
-pJtNmSgwZNtSJLgSqHcbBDDTHPfrSqTc
-ZNWdpNCJtLZpQJLLpmLtZNFGjVgFnsngRGllVsjjCnvs
-sJVRJmmmwwlmzcszMzjRjJVzspCZBsZTTFpTTZvSZTFBFbtZ
-GhNDgNWnGGqDvFSCZvbtFpvg
-fWrCNNffGnhWdrPhWjwjzRlJmcjRcPzlmV
-FdncmqmgcZztLWFvFFvjWLlT
-RsMMJVpfhJVsDVMfJpvlTWTvhjQSQvCbLCSC
-jDBjRrsVfNJgzdZrZwtmZt
-THDDQLZTGQQLQDSSTBCZSZHfFrvvlVRRlPVFfVrvqnvnnH
-VbWWcgbNpjgPrRvrNfqnzv
-swggwpJWwsWscJsDSLTJTmSVZJTBDZ
-wGsznPGGBHdzHhtHDD
-WMVSWqVmrSBMpvWVMFtdClhDtqDDHhdtQt
-RgWVRcmgnPPnjJBg
-BmfPBHBFswLLjQQnLCnzzW
-SRdvvRSGrdlRSvTgRrMVCjVWCZzMnVZhWzTj
-vlSRJrRJvbGGrSSJgWvlScptFmwbmfHHBfsNFmBbfsFm
-