From 64d43727d6b7c9446cee75de56c1464a2251f5c6 Mon Sep 17 00:00:00 2001 From: Dendy Date: Fri, 2 Dec 2022 15:31:23 +0100 Subject: [PATCH] Day 2 --- 2/1.zig | 61 ++ 2/2.zig | 61 ++ 2/input.asc | 2500 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2622 insertions(+) create mode 100644 2/1.zig create mode 100644 2/2.zig create mode 100644 2/input.asc diff --git a/2/1.zig b/2/1.zig new file mode 100644 index 0000000..811e0e1 --- /dev/null +++ b/2/1.zig @@ -0,0 +1,61 @@ +const std = @import("std"); + +pub fn main() void { + const input = @embedFile("input.asc"); + var iter = std.mem.split(u8, input, "\n"); + + var totalPoints: usize = 0; + + while (iter.next()) |round| { + // Not a valid round. Not necessary, but just in case + if (round.len < 3) continue; + if (round[0] < 'A' or round[0] > 'C') continue; + if (round[2] < 'X' or round[2] > 'Z') continue; + + // Convert letters to numbers + const them = round[0] - 'A'; + const me = round[2] - 'X'; + + // Points per shape chosen is easy. + // {0,1,2} + 1 == {1,2,3} + // which is what we want. + const shapePoints = me+1; + + // Now this is a bit more complex. + // We notice that 'them - me' gives: + // + // tie = 0; + // die = both -2 or 1; + // win = both -1 or 2; + // + // If we wrap the results (adding 3 before because + // we can't have negatives) 'result = (result+3)%3' + // we get + // + // tie = 0; -> 3 points + // die = 1; -> 0 points + // win = 2; -> 6 points + // + // Ideally we would want {0,1,2} to be {0,3,6}, not + // {3,0,6}. If we adjust it to '(result+4)%3' we get: + // + // win = 0; -> 6 points + // tie = 1; -> 3 points + // die = 2; -> 0 points + // + // That's closer but not ideal. If we invert the + // numbers then we do get there '2-(result+4)%3': + // + // die = 0; -> 0 points + // tie = 1; -> 3 points + // win = 2; -> 6 points + // + // Now we multiply by three so '(2-(result+4)%3)*3' + // and boom, points per result per match. + const resultPoints = (2-((4 + them) - me)%3)*3; + + totalPoints += resultPoints + shapePoints; + } + + std.debug.print("{}\n", .{totalPoints}); +} diff --git a/2/2.zig b/2/2.zig new file mode 100644 index 0000000..82efbf9 --- /dev/null +++ b/2/2.zig @@ -0,0 +1,61 @@ +const std = @import("std"); + +pub fn main() void { + const input = @embedFile("input.asc"); + var iter = std.mem.split(u8, input, "\n"); + + var totalPoints: usize = 0; + + while (iter.next()) |round| { + // Not a valid round. Not necessary, but just in case + if (round.len < 3) continue; + if (round[0] < 'A' or round[0] > 'C') continue; + if (round[2] < 'X' or round[2] > 'Z') continue; + + // Convert letters to numbers + const them = round[0] - 'A'; + const result = round[2] - 'X'; + + // Now the points per result is easy + // {0,1,2} * 3 == {0,3,6} + // which is what we want. + const resultPoints = result * 3; + + // Now this is a bit more complex. + // We need some kind of operation that + // returns us this: + // + // them (0,1,2) + // die(0) {2,0,1} {3,1,2} + // tie(1) {0,1,2} -+1-> {1,2,3} + // win(2) {1,2,0} {2,3,1} + // + // ex.: if they do rock (0) + // and I die (0) + // I have to choose scissors (2) + // which gives me 3 points (2+1) + // + // We notice that 'them + result' gives: + // + // them (0,1,2) + // die(0) {0,1,2} + // tie(1) {1,2,3} + // win(2) {2,3,4} + // + // If we wrap the results with '(them + result)%3' + // and then shift it by adding before wrapping + // '(them + result + 2)%3': + // + // them (0,1,2) + // die(0) {0,1,2} {2,0,1} + // tie(1) {1,2,0} -+2-> {0,1,2} + // win(2) {2,0,1} {1,2,0} + // + // Now it's just a matter of adding one to that + const shapePoints = ((them + result + 2)%3) + 1; + + totalPoints += resultPoints + shapePoints; + } + + std.debug.print("{}\n", .{totalPoints}); +} diff --git a/2/input.asc b/2/input.asc new file mode 100644 index 0000000..44ee23a --- /dev/null +++ b/2/input.asc @@ -0,0 +1,2500 @@ +B X +A Z +A Y +B X +C Z +B Y +B X +C X +A Y +B Y +B Y +C Y +B Y +C Y +B X +A Z +C Y +B Z +C X +A Y +B Y +B Y +B Y +B Y +B X +B Y +C Y +B Y +B Y +B Y +A Y +B X +A Y +A Y +B X +B Z +B Y +C Y +A Y +A Z +C Y +A Z +C Z +C Y +B Z +C X +A Z +C Y +B X +B X +C Z +C Y +B Y +A X +C Z +B Y +B X +A Z +B Z +C Y +C Z +B X +B Y +B Y +C Y +B Y +B Y +C Y +B Z +A Y +B Y +C Y +B Y +B Y +B Y +C Y +B X +C X +C Y +B X +B X +C X +B Y +C Z +B Y +B Y +B Y +C Y +B X +A Z +C Y +A Z +B X +B X +A Y +C X +B Z +B Y +B X +C X +C X +B X +A Z +A Y +A Z +B X +B X +B Y +C Y +C Z +B Y +A Y +C Y +A Z +A X +A Y +B X +B Y +C Y +B Y +B Z +C X +B Y +B Z +C Y +C Y +C Z +B Y +C Y +B Y +C Y +A Z +A Z +A Z +B Y +B Y +C Z +B Y +C Y +B X +B X +A Y +B X +B X +C Y +C Z +B Y +A Z +A Y +C Y +B X +C Z +C Y +B Y +B Y +A Z +B Y +B Y +B X +B Z +A Z +C Y +A Z +C Z +B Y +B Y +A X +B X +A Z +B Y +C Z +A Y +B Y +A Z +C X +C Y +B Y +B Y +B Y +C Z +B X +C Z +B Y +C Y +C Y +B Y +C Y +C Z +B Y +C Z +B Y +B Y +B Y +A Y +A Y +B X +C Z +B Y +B Z +C Y +B Z +C Y +B Y +B X +B Y +C Y +C Z +B Y +A Y +B X +C Z +C Y +B X +B Y +B Y +C Z +C Z +A Z +B X +B X +C Z +B Y +B Y +B Y +B Y +A Y +B Y +B Y +B X +B Z +A Y +B X +C Y +B Y +B X +B Y +B Y +C Y +A Y +A Y +A Z +B Y +B Y +C Y +C Y +C Y +A Z +B Z +B Z +B Z +B Y +B X +B X +B Y +B Y +A Z +B Y +C Y +B X +B X +B Y +B X +A Z +C Y +C Y +C Y +C X +A Z +B Y +A Z +B X +B X +B Y +C Y +B X +C Y +A X +B Y +A Y +B Y +A X +A X +A Z +B X +B Y +B X +B X +A Z +B X +B X +C Y +C Y +B Y +B Z +B Y +A Y +B Z +C Z +C Y +B Z +B Y +B X +C Z +B Y +B Y +B Y +C X +A Z +B Y +B Y +A X +C Z +B Y +C X +B Y +B Z +B Z +A Z +C Y +B Y +B Y +C Y +B Y +B Y +C Y +B Y +C Y +A Z +C Y +B Z +C Z +B Z +C Y +B X +C Y +B X +B Y +B Y +C Y +C Y +C Z +B X +B Y +B Z +B Y +B X +B Y +B Y +B Y +A Y +C Y +C Y +A Y +B Y +A Y +B Y +C X +B Z +B Y +C Y +A Z +C Y +C X +B Y +B Y +B Y +B X +C Z +C X +B Y +B Y +A Z +A X +B Y +B X +C Y +B X +B Y +B X +A Z +A Y +C Y +B X +B Y +C Z +A Y +A Z +B Y +B Z +C Y +B Y +C Z +C Y +B Y +A Y +C X +A Y +B Y +A Z +B X +B Y +A Y +B Z +B Z +B Y +B Y +B X +C Y +C Y +C Y +B X +B Y +C Z +C X +B Y +A Z +A Y +B X +B X +C Z +C Y +A Z +C X +B Y +C Z +B X +B Y +B X +C X +B Y +B Y +B X +B Y +B Z +C Y +B Y +B Y +B Z +C Z +C Z +B Y +C Y +C Y +B Y +C X +B Y +C Y +B X +A Y +C X +C X +C Y +B Y +B Y +A X +B X +B Y +B X +B Y +C Y +C X +C Y +B X +B X +A Z +C Y +B Y +C Z +C Y +B Y +C Y +C Z +C Z +C Y +A Z +C Z +B Y +B Y +A Y +B Y +C Y +B Y +B Y +B Y +C Y +A Y +B Y +B X +A Y +B Y +B Y +C Y +B Y +B X +A Z +B Y +B Y +C Z +B Z +C Z +C Y +A Y +C Y +B Y +B Y +B Y +B Z +C Z +C Z +C Y +A Z +B Y +B Y +B Y +B Z +B Y +C Y +B Y +B Z +A Z +A Z +C Z +A Z +A Y +B Y +B Y +B Y +B Y +A Z +A Y +B X +C Z +B Y +B Z +C X +B X +A Y +C Y +B X +B Y +B X +B Y +A Z +B Y +A Y +B Y +C Y +B Y +B Y +B Y +A Z +A Y +A Y +B Y +B Y +C X +A Z +B Y +C Y +C Y +A Y +B Y +A X +B Z +B Y +A Z +B X +B Y +B Y +C Y +C Y +B Y +A Z +B Y +C Z +C Y +A Y +B Z +C Y +C X +C Y +A X +B Y +B Y +B Y +C Z +B X +C Y +B X +B Y +B Y +C Y +C Y +A Z +B Y +C Y +C Z +C Y +B Z +C Y +B X +B X +B Y +C Z +B Y +B Y +B X +B Y +B Y +A Y +A Z +B Y +A Z +B Y +B Y +A Z +B X +A Z +A Y +B Y +B X +A Z +B Z +C Z +B Y +B Y +B Z +B X +C Z +C Y +B Y +C Y +B Y +B X +B Y +B X +C Y +C Y +B X +A Y +C Y +B X +B Y +C Y +B Y +A Z +C Y +B X +A Z +B Y +B Y +A Z +C Y +B Y +C X +C Z +C Y +B Z +B Y +B X +C Z +B Z +A Z +B Y +C X +C Y +B X +B Y +C Y +C Y +B Y +B Y +B Y +B X +B Y +B Y +B X +C Y +B X +B Y +C Z +C Y +C Y +B Z +A Z +C Y +C Y +C Y +C Y +B Y +C X +B X +C X +B Y +C Y +B Z +B X +C Y +B Y +B X +B Y +C Y +C Y +C X +A Y +C Y +C Y +A Z +A Z +B Y +A Z +A Z +C Z +B X +C Y +B Y +B X +B Y +B Y +C Y +B X +B X +B Y +C Y +B Y +B Z +A Y +B Y +A Y +C Y +A Z +B Y +B Y +A Z +A X +B Y +B Y +B X +B Y +C Y +C Y +C Y +B Y +A X +B Y +C Y +C Z +A Y +B X +C Y +A Y +B Y +A Y +B Z +C Y +C Y +C Z +B Y +C Y +C Y +B Y +C Z +C Y +A Y +B Y +B Y +A Y +C X +B X +B Y +B X +B Y +B Y +B Y +A Z +A Y +B Y +B Y +B X +C Y +C Y +B Y +B Y +C Z +B Y +B Y +B X +B X +B Y +C Z +B Z +B X +B Y +A Y +C X +A Z +B X +B Y +C Z +B X +C Y +A Z +A X +B X +C Y +B Y +B X +B Z +B Y +B Y +C X +B X +A Z +C Y +C Y +C Z +B X +B X +A Y +A Y +B Y +C Y +B Y +C Y +B Y +B X +A Y +B X +B Z +A Y +C Z +A Y +A X +C Z +B Y +B Y +C Y +C Y +B Y +B Y +A Y +C Y +B Y +B Z +B X +A Z +C Y +B X +B X +A Y +B Y +C Y +C Y +B Y +B Y +C X +C Y +C Z +A Y +B Y +B X +B Y +B Y +C X +C Y +C Y +B Y +B Y +A Z +B Y +B Y +B Y +C Y +A Y +B X +B Y +B X +C Y +B Y +B Y +B Y +B X +A Z +B Y +B Y +C Y +B Z +C Y +B X +C X +C Y +B Y +A Z +B Y +B X +A Y +B Y +B X +B X +B Y +B Y +B Y +A Z +B Y +C Z +B X +A Y +C X +C X +B Y +B X +B Y +B Y +B Y +C Z +A Y +A Z +C Y +B Y +B Y +B Y +C Y +B X +B Y +B Y +B Y +B Z +B Z +A Y +A Y +A Y +B Y +C Y +C Y +B X +C Y +B Y +A Y +B Y +C Y +C Y +B Y +B Y +B X +A Y +B Y +B Y +A Z +B Y +C Z +A Z +A Z +C Z +B Y +B X +B Y +B Y +B Z +A Y +C Y +A Y +B X +B Y +C Y +B Y +C Y +A Y +A Z +A Z +A Y +C Z +C X +A Y +A Y +B Y +B X +A Y +B Y +B Y +B Z +A Y +B Y +B X +B Z +B Y +C Y +C X +B Y +C Z +B Y +B Y +A Z +B Y +C Y +A Z +B Y +A X +C X +A Z +A Y +A Y +B Y +A Y +C Y +B Y +B Y +C Y +B Y +C Y +B Y +A Y +B X +C Z +C X +A Y +A Y +B Y +B Z +C X +B Y +A Y +C Z +B Y +C Z +A X +C Y +A Z +B X +C Y +B Y +C Y +B Y +B X +A Y +B Y +B X +B Y +B Z +B Z +C Y +B Z +B X +B X +A Y +B Y +B Y +A Y +C Y +A Z +C X +C Z +B Z +C X +C X +B X +C Y +B X +B X +A Y +B Z +A Y +A Z +B X +B Z +B X +C Y +B Y +B Y +C X +B X +C Z +B X +B Z +B Y +A X +C Y +C Y +B Y +B Y +A Z +C Y +B Z +B X +B Y +A Z +A Y +C Z +A Y +C Y +B Y +C Y +C Y +B Y +C Y +C X +B Y +C X +B Y +C Z +B Y +B Y +B X +A X +A Y +C Y +C Y +B Z +C Y +B X +B Z +B Y +C X +B Y +C Z +C Y +B Y +C Y +B Y +A Y +C Y +C X +A Z +A Y +B X +C Z +C Y +B Y +A Y +C Y +A Z +C Y +B X +B X +A Y +C X +B Y +B Y +A X +B Y +B Y +C Y +A Z +C Y +B Y +B Y +C Z +C Y +C Y +C Y +C X +B Z +A Z +C Y +B Y +C X +C Y +B Y +B Y +B Y +C Y +B X +B X +B Z +B Y +B X +A X +B Z +B Y +B X +B Y +B Y +C Y +B Y +C Z +B Y +B Z +B Z +C Y +A Y +C Y +A Y +B Z +B Y +C Y +B Y +B Y +C Y +B X +B Y +B Y +B X +B Z +B Y +A Y +B Y +C Y +B X +C Z +B Y +C Z +B Y +B Y +A Y +B Y +C Y +C Y +B Y +C Y +B Y +B Y +C Y +C Y +A Y +A Z +A Z +C X +B Y +A Y +C Y +B X +A Z +B X +A Y +C Y +C Y +B Y +C Z +C X +B Z +B Y +B Y +A Z +A Z +A Z +C Y +B X +A Y +A Y +B Y +B Y +B Y +B Y +B X +A Y +A Y +B Y +C Z +C Y +A Y +C Y +A X +B Y +A Y +B Y +C X +B Y +B X +B Y +C Z +B Y +A Z +C X +B Z +C Y +B Y +A Y +A Y +B Z +B Y +B Y +B Y +B X +A Z +A Y +B Y +C X +A X +A Z +C X +C Y +B Y +B Y +A Y +C Y +B Y +A Y +C Y +A Y +C Y +B Y +C Y +B Y +B Y +A Z +B Z +A Y +A Y +B X +B Y +A Y +C Z +A Z +A Y +C Y +B Y +C Y +B Z +B X +C Z +B Y +B Y +B Y +C Y +B Y +B Y +A Y +A X +B Y +C Z +B Y +B Y +B Y +B Y +C Y +C Y +B Y +B Z +B Y +C Y +A Y +B Y +C Y +A Z +A Y +C Z +A X +B Y +B Y +A X +B Y +B Y +B Y +B Y +B Y +B Z +C Y +C Z +C Z +B Y +A Y +B Z +A Z +A Y +C Z +B X +A X +B Y +C Z +B X +B Y +B Y +C Y +A Z +B Y +A Z +B X +B Z +A Z +C Y +C Z +B Y +C Y +B Y +B X +B X +B Y +A Y +A Z +C Z +B X +B Y +C Z +C Y +B Y +C Z +A Y +C Y +A Z +B Y +B Y +B Y +B X +A Y +B Y +C X +B Z +B Y +C Z +B X +C Z +C Y +A Z +C Y +C X +C Z +B Y +B X +C Y +B Y +C Y +B Z +A Y +B Y +C Z +C X +B X +B Y +B Z +C Z +A Y +C Z +B Y +B X +A X +C Y +B X +A Z +A Y +C Y +C Y +B Y +C Y +B X +B Z +C Y +B Y +C Y +A X +A Y +C X +C Y +B X +C Y +A Z +C X +C Y +B X +B Y +A Y +A Y +B Y +B Z +B Z +A Z +B Y +B Y +B Y +C Y +B X +A Y +C Z +A Y +C Y +B Y +B Y +B Y +B Z +C Y +B Y +A Y +A Z +B X +A Z +B X +B Y +B X +C Y +B X +B X +A Z +B Y +C Z +B X +A Z +B X +B Y +B Y +C X +C Y +B Y +C Y +B Y +C Y +B Y +A Z +C Y +C Y +B Y +C Z +B X +A Y +A Z +C Y +A X +A Y +A Y +C Y +C X +B X +B Y +B X +B Y +B Y +C Z +B Z +B Y +C Y +C Z +A Z +B Y +A Y +C Y +B X +B Y +C Z +C Y +B Y +C Y +A Y +C Z +B Y +B X +A Z +B Y +C Y +B X +B Z +A Z +B Y +A X +A Y +B Z +C Z +C Y +C Y +B Y +B X +B Y +B X +B Y +C Y +B Y +B X +C Z +C Y +A Z +C X +B X +C Y +B Z +B Y +A Z +B X +B Y +B X +B X +C Y +B Y +B Y +A Z +C Y +B Y +B Y +C Y +A Y +B X +C Y +A Z +A Z +A X +B Y +C X +B Y +B Y +C Y +C Z +A Y +C Y +B Y +B Y +B Y +B X +B Z +C Y +B Y +B X +B Y +B Y +B Y +C Y +B Y +C X +B Y +B X +A Z +B Y +C Y +A Z +A Z +B Z +A Y +B Y +C Z +A X +A Z +B X +B X +C Y +A Y +B Y +A Z +C Z +B Y +B X +B X +B Z +B Y +C Y +B Y +B Y +C Z +A Z +B Z +B Z +B Y +C Y +B Y +B X +A Y +B X +C Z +B Z +B Y +C Y +B Y +C Y +C Z +B Y +A X +B Y +C Y +C Z +B Y +A Y +B X +B Y +C Z +B Y +C Y +B Y +B Y +C Y +B X +B Y +C Y +C Y +A Z +C Y +B Y +C Z +C X +B X +B Y +B Y +B Y +B Y +A Z +C Y +A Y +C Y +C Y +C Y +B Y +C Y +B Y +A Y +C Y +B X +C X +C Y +A Y +C Y +B X +A Z +A Z +C Y +C Y +B X +B Y +C Y +B Y +B X +B Y +B X +C X +A Y +B Y +B Y +B X +B X +C X +C Y +B Y +B Y +B Y +B Y +B Z +B X +A Z +B Y +C Y +B X +B X +A Y +A Z +B Y +C Y +C Z +C Y +A Y +B Y +B Z +B Y +B X +C Y +B Z +B X +C X +B Y +C Y +B Y +B Y +B Y +B Y +A Y +B Y +C Y +C Y +B X +C Y +B Y +C Y +A Y +B Z +C Y +A Y +B Y +C Y +B Z +B Y +B Z +B X +B X +B X +B X +B Y +B Z +C Y +C Y +B Y +B X +C Y +A Y +A Z +B X +B Y +B Y +C Y +B X +B X +C Y +C Z +B Y +B Y +C Y +C Y +C X +B Y +C Z +A Y +A Z +B Y +C Y +A Y +C Y +A Y +C X +B Y +C Y +C Z +B Y +C Z +B X +B X +B Y +B Y +C Y +A Y +B X +A Z +B Y +B Y +B Y +B X +B Y +C X +C Y +A Y +B Y +B X +A Z +A Y +B Y +B Y +B Y +C X +C Y +B Y +B Y +B Y +C Z +B Y +B Y +B X +B Y +A Y +A Z +A Y +B Y +B Y +A Y +B Y +B Y +A Y +B Y +A Z +B Z +B Y +C Y +B Y +B Y +A Y +B Y +B Y +B Y +B X +C Y +B Y +C Y +C Y +B Z +B X +B Y +A Z +B Y +A Y +C Y +A Z +C Z +B X +B Y +B X +B X +C Y +B Y +B Y +B Y +B Y +A Z +C X +B Y +B Y +C Y +A Y +A Y +A Y +B Z +A Y +B Y +A Z +C Y +B Y +B Y +C X +C X +C Y +B X +A Z +B X +B X +B Y +C Y +A Z +C Y +B Y +C Y +B Z +C Y +A Y +B Y +B Y +C Z +B Z +C Y +A Y +B X +C Y +B Y +A Z +B Z +B X +B Y +B Y +A Z +A Z +B Y +B Y +B Y +B Z +A Y +A Z +B Y +C Y +C Y +B Y +A Z +A Z +C Y +C Y +B Y +A Z +B Y +A Y +C Y +A Y +B Y +A Y +C Y +B Z +B Y +B X +B Y +C Y +C Y +C Y +B X +A Y +A Y +A Z +B Y +B Y +B Y +C Y +B X +B Y +B Z +B Y +A Z +B Y +B X +B X +B Y +B Y +C Y +A Z +A Y +B Y +B Y +B Y +C Z +B Y +B Y +B Y +C Y +B Y +B Y +C Y +C Z +A X +B Y +B Y +C Y +B Y +C X +B Z +B X +C X +B Y +B X +B X +B Y +C Z +B X +B Y +C Z +C Y +B Y +C Y +B Y +B Y +A Y +B X +C Y +B Y +A Y +A X +A Z +B Z +B Z +A Y +B X +B Y +C Z +C Y +C X +C Y +A Y +B Y +B X +A Y +C Y +C Y +C Y +B Y +B Y +B Z +B X +B Z +B Y +C Y +A Y +B Y +B X +B Y +C Z +C Y +B Y +B Z +C Y +C Y +C Y +C X +B Y +B Y +C Y +A Y +B X +B Y +C Y +A Z +C X +B Y +A Z +C Z +B Y +C Y +A Z +B Y +B Z +A Y +B Y +B X +B Y +C Z +A Y +C X +B Y +C Y +B Z +A Z +B Y +B Y +B Y +B Z +A Y +C Y +A Y +A Z +B X +B X +B Y +B Y +B X +B Z +B Y +B Y +C Z +B X +C Z +C Z +B X +B Y +B X +C Y +B Y +C Z +B Y +C Y +C Y +B X +C Y +A Z +C Z +B Y +B X +B Y +A Z +B X +B Z +C Z +C Y +C Y +C X +C Y +B Z +A Z +A Z +C Y +A Z +B Y +B Y +B X +B X +B X +C Y +B Y +B Y +A X +C X +B Y +B X +B X +B Z +C Y +C Y +C Y +C Y +C X +C Y +A X +A Y +C Y +C Y +B Y +B X +B Y +B X +A Y +A X +C Y +C Z +B Y +C Y +C Z +B Z +C X +B Y +C X +B Y +C Y +B X +C Y +C Y +C Y +C Y +C Y +C Y +B Y +C Y +C Y +B X +C Y +B Y +B Y +B Y +A Y +B Y +B Y +B Y +B X +B Z +B Y +B Y +C Z +A Y +B Y +B Y +B X +B Y +C Y +C X +B X +A Y +B Y +A Z +B Y +A Y +B Y +B Y +A Z +B Z +B Y +B X +B Y +A Y +C Z +C Z +B Y +B Y +A Z +C Y +C X +B Y +B Y +B Y +B Z +C Y +C Y +A Y +A Y +C Y +B Y +A Z +B Y +B Z +C Y +B Y +B X +C Y +C Y +B Y +C Y +A Y +B Y +C Z +C Y +C Y +B Y +C Y +A Y +C X +A Y +C Y +A Z +B Y +C Y +B Y +A Z +B Y +B X +B Y +C Y +B Y +B X +B Z +C X +B Z +A Z +B Z +A Z +C Y +A Y +B Y +B Y +C Y +B X +B Y +A Y +B X +B Y +B Y +A Y +A Z +A Y +B Y +B Y +C Y +B Y +B Y +C Y +B Y +B Y +C X +A Z +B X +B Y +B Y +A X +A Y +A Z +A X +B Y +B Y +B Y +A Y +C Y +A Y +C Z +B X +A Z +C Y +A X +B Y +C Y +B X +C Z +B X +B Y +C Y +A Z +A X +C X +B X +B Y +B Y +A Y +B Y +C Y +C Y +C Z +B Y +B Y +C Y +C Z +B Y +A Z +A Z +C X +B Y +C Y +C Z +C Y +B X +C Z +B X +B Y +C X +B Y +C Y +A Z +A Z +B X +B Z +A X +A Z +C X +A Z +B Z +B Y +C Y +B X +B Y +B Z +B Y +B X +B Y +C X +B Y +B X +B Y +C Y +C X +B Z +B Y +C X +C X +B X +B Y +B X +B Y +B Y +B Y +B Y +B X +B Y +A Z +B Y +A Y +B Y +A Y +B Y +A Y +C Y +B Y +C Y +C Y +C Y +C Y +C Y +C Y +A Z +A Z +B X +C X +C Z +B Y +C X +A Z +C Z +C Y +B Z +B Y +B Z +B Y +A Z +B X +B Y +B X +C Y +B Y +B X +A Y +B Y +B Y +B Z +B X +C X +B Y +B Y +C Y +C Y +B Y +C Y +C X +A X +C X +C Y +B Y +B Y +B Y +B Z +B Y +B Z +B Y +B X +A Z +C Z +C Y +C Y +A Y +B X +B Y +C Z +A Y +A Y +B Y +B X +A Z +B Y +B Y +A Y +C Y +A Z +C Y +B Z +B Y +B Y +C Y +C Z +B Y +B Y +C Y +C Y +B Z +B Z +A Y +C Y +A Z +B Z +B Y +B Y +B X +B Y +A Z +A Y +A Z +B Y +B X +C X +C Y +C Z +B Y +B Y +B Y +A Y +C Y +B Y +C Y +C Y +B Y