Complete day 12
This commit is contained in:
@@ -22,6 +22,8 @@ import com.mattrixwv.adventOfCode24.days.Problem2;
|
|||||||
import com.mattrixwv.adventOfCode24.days.Problem20;
|
import com.mattrixwv.adventOfCode24.days.Problem20;
|
||||||
import com.mattrixwv.adventOfCode24.days.Problem21;
|
import com.mattrixwv.adventOfCode24.days.Problem21;
|
||||||
import com.mattrixwv.adventOfCode24.days.Problem22;
|
import com.mattrixwv.adventOfCode24.days.Problem22;
|
||||||
|
import com.mattrixwv.adventOfCode24.days.Problem23;
|
||||||
|
import com.mattrixwv.adventOfCode24.days.Problem24;
|
||||||
import com.mattrixwv.adventOfCode24.days.Problem3;
|
import com.mattrixwv.adventOfCode24.days.Problem3;
|
||||||
import com.mattrixwv.adventOfCode24.days.Problem4;
|
import com.mattrixwv.adventOfCode24.days.Problem4;
|
||||||
import com.mattrixwv.adventOfCode24.days.Problem5;
|
import com.mattrixwv.adventOfCode24.days.Problem5;
|
||||||
@@ -37,7 +39,7 @@ public class ProblemSelector{
|
|||||||
protected static final List<Integer> PROBLEM_NUMBERS = List.of(
|
protected static final List<Integer> PROBLEM_NUMBERS = List.of(
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
||||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
||||||
20, 21, 22
|
20, 21, 22, 23, 24
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -72,6 +74,8 @@ public class ProblemSelector{
|
|||||||
case 20 : day = new Problem20(); break;
|
case 20 : day = new Problem20(); break;
|
||||||
case 21 : day = new Problem21(); break;
|
case 21 : day = new Problem21(); break;
|
||||||
case 22 : day = new Problem22(); break;
|
case 22 : day = new Problem22(); break;
|
||||||
|
case 23 : day = new Problem23(); break;
|
||||||
|
case 24 : day = new Problem24(); break;
|
||||||
default: throw new InvalidParameterException();
|
default: throw new InvalidParameterException();
|
||||||
}
|
}
|
||||||
return day;
|
return day;
|
||||||
|
|||||||
167
src/main/java/com/mattrixwv/adventOfCode24/days/Problem23.java
Normal file
167
src/main/java/com/mattrixwv/adventOfCode24/days/Problem23.java
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
package com.mattrixwv.adventOfCode24.days;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
import com.mattrixwv.Stopwatch;
|
||||||
|
import com.mattrixwv.Triple;
|
||||||
|
|
||||||
|
|
||||||
|
public class Problem23 extends Problem{
|
||||||
|
private static final String inputFileName = "days/Problem23.txt";
|
||||||
|
private List<List<Character>> map;
|
||||||
|
private List<Triple<Integer, Integer, Character>> traversedNodes;
|
||||||
|
|
||||||
|
|
||||||
|
public Problem23(){
|
||||||
|
super();
|
||||||
|
description = "Find the total price of fencing for the area.";
|
||||||
|
result = "Unresolved";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String runSolution(){
|
||||||
|
Stopwatch timer = new Stopwatch();
|
||||||
|
timer.start();
|
||||||
|
|
||||||
|
|
||||||
|
//Read the file
|
||||||
|
/* */
|
||||||
|
map = new ArrayList<>();
|
||||||
|
try(Scanner scanner = new Scanner(this.getClass().getClassLoader().getResourceAsStream(inputFileName))){
|
||||||
|
scanner.useDelimiter("\n");
|
||||||
|
while(scanner.hasNext()){
|
||||||
|
String mapLine = scanner.next();
|
||||||
|
if(!mapLine.isBlank()){
|
||||||
|
List<Character> charLine = new ArrayList<>(mapLine.length());
|
||||||
|
for(Character ch : mapLine.toCharArray()){
|
||||||
|
charLine.add(ch);
|
||||||
|
}
|
||||||
|
map.add(charLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* */
|
||||||
|
/*
|
||||||
|
map = List.of(
|
||||||
|
List.of('R', 'R', 'R', 'R', 'I', 'I', 'C', 'C', 'F', 'F'),
|
||||||
|
List.of('R', 'R', 'R', 'R', 'I', 'I', 'C', 'C', 'C', 'F'),
|
||||||
|
List.of('V', 'V', 'R', 'R', 'R', 'C', 'C', 'F', 'F', 'F'),
|
||||||
|
List.of('V', 'V', 'R', 'C', 'C', 'C', 'J', 'F', 'F', 'F'),
|
||||||
|
List.of('V', 'V', 'V', 'V', 'C', 'J', 'J', 'C', 'F', 'E'),
|
||||||
|
List.of('V', 'V', 'I', 'V', 'C', 'C', 'J', 'J', 'E', 'E'),
|
||||||
|
List.of('V', 'V', 'I', 'I', 'I', 'C', 'J', 'J', 'E', 'E'),
|
||||||
|
List.of('M', 'I', 'I', 'I', 'I', 'I', 'J', 'J', 'E', 'E'),
|
||||||
|
List.of('M', 'I', 'I', 'I', 'S', 'I', 'J', 'E', 'E', 'E'),
|
||||||
|
List.of('M', 'M', 'M', 'I', 'S', 'S', 'J', 'E', 'E', 'E')
|
||||||
|
);
|
||||||
|
/* */
|
||||||
|
/*
|
||||||
|
map = List.of(
|
||||||
|
List.of('A', 'A', 'A', 'A'),
|
||||||
|
List.of('B', 'B', 'C', 'D'),
|
||||||
|
List.of('B', 'B', 'C', 'C'),
|
||||||
|
List.of('E', 'E', 'E', 'C')
|
||||||
|
);
|
||||||
|
/* */
|
||||||
|
|
||||||
|
|
||||||
|
//<C, I, I> = <PlotType, Perimeter, Area>
|
||||||
|
traversedNodes = new ArrayList<>();
|
||||||
|
List<Triple<Character, Integer, Integer>> plots = calculatePlots();
|
||||||
|
|
||||||
|
|
||||||
|
int totalPrice = 0;
|
||||||
|
for(Triple<Character, Integer, Integer> plot : plots){
|
||||||
|
totalPrice += (plot.getB() * plot.getC());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Save the result
|
||||||
|
timer.stop();
|
||||||
|
result = "The total price of fencing is " + totalPrice + ".\nIt took " + timer.toString() + " to run this algorithm.";
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//<C, I, I> = <PlotType, Perimeter, Area>
|
||||||
|
private List<Triple<Character, Integer, Integer>> calculatePlots(){
|
||||||
|
List<Triple<Character, Integer, Integer>> plots = new ArrayList<>();
|
||||||
|
|
||||||
|
//Traverse the map and start a plot anywhere that hasn't already been traversed
|
||||||
|
for(int row = 0;row < map.size();++row){
|
||||||
|
for(int col = 0;col < map.get(row).size();++col){
|
||||||
|
//If the current node hasn't been traversed calculate the plot that this node is a part of
|
||||||
|
Triple<Integer, Integer, Character> currentNode = new Triple<>(row, col, map.get(row).get(col));
|
||||||
|
if(!traversedNodes.contains(currentNode)){
|
||||||
|
Triple<Character, Integer, Integer> plot = calculatePlot(currentNode);
|
||||||
|
plots.add(plot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return plots;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Triple<Character, Integer, Integer> calculatePlot(Triple<Integer, Integer, Character> currentNode){
|
||||||
|
//Add the current node to traversed nodes
|
||||||
|
traversedNodes.add(currentNode);
|
||||||
|
|
||||||
|
//Create the new possible nodes
|
||||||
|
Triple<Integer, Integer, Character> upNode = new Triple<>(currentNode.getA() - 1, currentNode.getB(), currentNode.getC());
|
||||||
|
Triple<Integer, Integer, Character> rightNode = new Triple<>(currentNode.getA(), currentNode.getB() + 1, currentNode.getC());
|
||||||
|
Triple<Integer, Integer, Character> downNode = new Triple<>(currentNode.getA() + 1, currentNode.getB(), currentNode.getC());
|
||||||
|
Triple<Integer, Integer, Character> leftNode = new Triple<>(currentNode.getA(), currentNode.getB() - 1, currentNode.getC());
|
||||||
|
|
||||||
|
int perimeter = 0;
|
||||||
|
int area = 1;
|
||||||
|
//If the top of the node is a perimeter add the value, otherwise traverse to that node if it hasn't already been traversed
|
||||||
|
if((currentNode.getA() <= 0) || (map.get(currentNode.getA() - 1).get(currentNode.getB()) != currentNode.getC())){
|
||||||
|
++perimeter;
|
||||||
|
}
|
||||||
|
else if(!traversedNodes.contains(upNode)){
|
||||||
|
Triple<Character, Integer, Integer> upPlot = calculatePlot(upNode);
|
||||||
|
perimeter += upPlot.getB();
|
||||||
|
area += upPlot.getC();
|
||||||
|
}
|
||||||
|
//If the right of the node is a perimeter add the value, otherwise traverse to that node if it hasn't already been traversed
|
||||||
|
if((currentNode.getB() + 1 >= map.get(currentNode.getA()).size()) || (map.get(currentNode.getA()).get(currentNode.getB() + 1) != currentNode.getC())){
|
||||||
|
++perimeter;
|
||||||
|
}
|
||||||
|
else if(!traversedNodes.contains(rightNode)){
|
||||||
|
Triple<Character, Integer, Integer> rightPlot = calculatePlot(rightNode);
|
||||||
|
perimeter += rightPlot.getB();
|
||||||
|
area += rightPlot.getC();
|
||||||
|
}
|
||||||
|
//If the bottom of the node is a perimeter add the value, otherwise traverse to that node if it hasn't already been traversed
|
||||||
|
if((currentNode.getA() + 1 >= map.size()) || (map.get(currentNode.getA() + 1).get(currentNode.getB()) != currentNode.getC())){
|
||||||
|
++perimeter;
|
||||||
|
}
|
||||||
|
else if(!traversedNodes.contains(downNode)){
|
||||||
|
Triple<Character, Integer, Integer> downPlot = calculatePlot(downNode);
|
||||||
|
perimeter += downPlot.getB();
|
||||||
|
area += downPlot.getC();
|
||||||
|
}
|
||||||
|
//If the left of the node is a perimeter add the value, otherwise traverse to that node if it hasn't already been traversed
|
||||||
|
if((currentNode.getB() <= 0) || (map.get(currentNode.getA()).get(currentNode.getB() - 1) != currentNode.getC())){
|
||||||
|
++perimeter;
|
||||||
|
}
|
||||||
|
else if(!traversedNodes.contains(leftNode)){
|
||||||
|
Triple<Character, Integer, Integer> leftPlot = calculatePlot(leftNode);
|
||||||
|
perimeter += leftPlot.getB();
|
||||||
|
area += leftPlot.getC();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create the new plot from the derived values and return it
|
||||||
|
return new Triple<Character, Integer, Integer>(currentNode.getC(), perimeter, area);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Find the total price of fencing for the area.
|
||||||
|
The total price of fencing is 1434856.
|
||||||
|
It took 1.041 seconds to run this algorithm.
|
||||||
|
*/
|
||||||
260
src/main/java/com/mattrixwv/adventOfCode24/days/Problem24.java
Normal file
260
src/main/java/com/mattrixwv/adventOfCode24/days/Problem24.java
Normal file
@@ -0,0 +1,260 @@
|
|||||||
|
package com.mattrixwv.adventOfCode24.days;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
import com.mattrixwv.Stopwatch;
|
||||||
|
import com.mattrixwv.Triple;
|
||||||
|
|
||||||
|
|
||||||
|
public class Problem24 extends Problem{
|
||||||
|
private static final String inputFileName = "days/Problem23.txt";
|
||||||
|
private List<List<Character>> map;
|
||||||
|
private List<Triple<Integer, Integer, Character>> traversedNodes;
|
||||||
|
|
||||||
|
|
||||||
|
public Problem24(){
|
||||||
|
super();
|
||||||
|
description = "Find the total price of fencing for the area.";
|
||||||
|
result = "Unresolved";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String runSolution(){
|
||||||
|
Stopwatch timer = new Stopwatch();
|
||||||
|
timer.start();
|
||||||
|
|
||||||
|
|
||||||
|
//Read the file
|
||||||
|
/* */
|
||||||
|
map = new ArrayList<>();
|
||||||
|
try(Scanner scanner = new Scanner(this.getClass().getClassLoader().getResourceAsStream(inputFileName))){
|
||||||
|
scanner.useDelimiter("\n");
|
||||||
|
while(scanner.hasNext()){
|
||||||
|
String mapLine = scanner.next();
|
||||||
|
if(!mapLine.isBlank()){
|
||||||
|
List<Character> charLine = new ArrayList<>(mapLine.length());
|
||||||
|
for(Character ch : mapLine.toCharArray()){
|
||||||
|
charLine.add(ch);
|
||||||
|
}
|
||||||
|
map.add(charLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* */
|
||||||
|
/*
|
||||||
|
map = List.of(
|
||||||
|
List.of('R', 'R', 'R', 'R', 'I', 'I', 'C', 'C', 'F', 'F'),
|
||||||
|
List.of('R', 'R', 'R', 'R', 'I', 'I', 'C', 'C', 'C', 'F'),
|
||||||
|
List.of('V', 'V', 'R', 'R', 'R', 'C', 'C', 'F', 'F', 'F'),
|
||||||
|
List.of('V', 'V', 'R', 'C', 'C', 'C', 'J', 'F', 'F', 'F'),
|
||||||
|
List.of('V', 'V', 'V', 'V', 'C', 'J', 'J', 'C', 'F', 'E'),
|
||||||
|
List.of('V', 'V', 'I', 'V', 'C', 'C', 'J', 'J', 'E', 'E'),
|
||||||
|
List.of('V', 'V', 'I', 'I', 'I', 'C', 'J', 'J', 'E', 'E'),
|
||||||
|
List.of('M', 'I', 'I', 'I', 'I', 'I', 'J', 'J', 'E', 'E'),
|
||||||
|
List.of('M', 'I', 'I', 'I', 'S', 'I', 'J', 'E', 'E', 'E'),
|
||||||
|
List.of('M', 'M', 'M', 'I', 'S', 'S', 'J', 'E', 'E', 'E')
|
||||||
|
);
|
||||||
|
/* */
|
||||||
|
/*
|
||||||
|
map = List.of(
|
||||||
|
List.of('A', 'A', 'A', 'A', 'A', 'A'),
|
||||||
|
List.of('A', 'A', 'A', 'B', 'B', 'A'),
|
||||||
|
List.of('A', 'A', 'A', 'B', 'B', 'A'),
|
||||||
|
List.of('A', 'B', 'B', 'A', 'A', 'A'),
|
||||||
|
List.of('A', 'B', 'B', 'A', 'A', 'A'),
|
||||||
|
List.of('A', 'A', 'A', 'A', 'A', 'A')
|
||||||
|
);
|
||||||
|
/* */
|
||||||
|
/*
|
||||||
|
map = List.of(
|
||||||
|
List.of('E', 'E', 'E', 'E', 'E'),
|
||||||
|
List.of('E', 'X', 'X', 'X', 'X'),
|
||||||
|
List.of('E', 'E', 'E', 'E', 'E'),
|
||||||
|
List.of('E', 'X', 'X', 'X', 'X'),
|
||||||
|
List.of('E', 'E', 'E', 'E', 'E')
|
||||||
|
);
|
||||||
|
/* */
|
||||||
|
/*
|
||||||
|
map = List.of(
|
||||||
|
List.of('A', 'A', 'A', 'A'),
|
||||||
|
List.of('B', 'B', 'C', 'D'),
|
||||||
|
List.of('B', 'B', 'C', 'C'),
|
||||||
|
List.of('E', 'E', 'E', 'C')
|
||||||
|
);
|
||||||
|
/* */
|
||||||
|
|
||||||
|
|
||||||
|
//<C, I, I> = <PlotType, Sides, Area>
|
||||||
|
traversedNodes = new ArrayList<>();
|
||||||
|
List<Triple<Character, Integer, Integer>> plots = calculatePlots();
|
||||||
|
|
||||||
|
|
||||||
|
int totalPrice = 0;
|
||||||
|
for(Triple<Character, Integer, Integer> plot : plots){
|
||||||
|
totalPrice += (plot.getB() * plot.getC());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Save the result
|
||||||
|
timer.stop();
|
||||||
|
result = "The total price of fencing is " + totalPrice + ".\nIt took " + timer.toString() + " to run this algorithm.";
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//<C, I, I> = <PlotType, Sides, Area>
|
||||||
|
private List<Triple<Character, Integer, Integer>> calculatePlots(){
|
||||||
|
List<Triple<Character, Integer, Integer>> plots = new ArrayList<>();
|
||||||
|
|
||||||
|
//Traverse the map and start a plot anywhere that hasn't already been traversed
|
||||||
|
for(int row = 0;row < map.size();++row){
|
||||||
|
for(int col = 0;col < map.get(row).size();++col){
|
||||||
|
//If the current node hasn't been traversed calculate the plot that this node is a part of
|
||||||
|
Triple<Integer, Integer, Character> currentNode = new Triple<>(row, col, map.get(row).get(col));
|
||||||
|
if(!traversedNodes.contains(currentNode)){
|
||||||
|
List<Triple<Integer, Integer, Character>> plot = calculatePlot(currentNode);
|
||||||
|
//Calculate the sides
|
||||||
|
int numSides = calcSides(plot);
|
||||||
|
Triple<Character, Integer, Integer> plotStats = new Triple<>(map.get(row).get(col), numSides, plot.size());
|
||||||
|
plots.add(plotStats);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return plots;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Triple<Integer, Integer, Character>> calculatePlot(Triple<Integer, Integer, Character> currentNode){
|
||||||
|
//Add the current node to traversed nodes
|
||||||
|
traversedNodes.add(currentNode);
|
||||||
|
List<Triple<Integer, Integer, Character>> plots = new ArrayList<>();
|
||||||
|
plots.add(currentNode);
|
||||||
|
|
||||||
|
//Create the new possible nodes
|
||||||
|
Triple<Integer, Integer, Character> upNode = new Triple<>(currentNode.getA() - 1, currentNode.getB(), currentNode.getC());
|
||||||
|
Triple<Integer, Integer, Character> rightNode = new Triple<>(currentNode.getA(), currentNode.getB() + 1, currentNode.getC());
|
||||||
|
Triple<Integer, Integer, Character> downNode = new Triple<>(currentNode.getA() + 1, currentNode.getB(), currentNode.getC());
|
||||||
|
Triple<Integer, Integer, Character> leftNode = new Triple<>(currentNode.getA(), currentNode.getB() - 1, currentNode.getC());
|
||||||
|
|
||||||
|
//If the top of the node is a perimeter add the value, otherwise traverse to that node if it hasn't already been traversed
|
||||||
|
if((currentNode.getA() > 0) && (map.get(currentNode.getA() - 1).get(currentNode.getB()) == currentNode.getC()) && (!traversedNodes.contains(upNode))){
|
||||||
|
List<Triple<Integer, Integer, Character>> upPlots = calculatePlot(upNode);
|
||||||
|
plots.addAll(upPlots);
|
||||||
|
}
|
||||||
|
//If the right of the node is a perimeter add the value, otherwise traverse to that node if it hasn't already been traversed
|
||||||
|
if((currentNode.getB() + 1 < map.get(currentNode.getA()).size()) && (map.get(currentNode.getA()).get(currentNode.getB() + 1) == currentNode.getC()) && (!traversedNodes.contains(rightNode))){
|
||||||
|
List<Triple<Integer, Integer, Character>> rightPlots = calculatePlot(rightNode);
|
||||||
|
plots.addAll(rightPlots);
|
||||||
|
}
|
||||||
|
//If the bottom of the node is a perimeter add the value, otherwise traverse to that node if it hasn't already been traversed
|
||||||
|
if((currentNode.getA() + 1 < map.size()) && (map.get(currentNode.getA() + 1).get(currentNode.getB()) == currentNode.getC()) && (!traversedNodes.contains(downNode))){
|
||||||
|
List<Triple<Integer, Integer, Character>> downPlots = calculatePlot(downNode);
|
||||||
|
plots.addAll(downPlots);
|
||||||
|
}
|
||||||
|
//If the left of the node is a perimeter add the value, otherwise traverse to that node if it hasn't already been traversed
|
||||||
|
if((currentNode.getB() > 0) && (map.get(currentNode.getA()).get(currentNode.getB() - 1) == currentNode.getC()) && (!traversedNodes.contains(leftNode))){
|
||||||
|
List<Triple<Integer, Integer, Character>> leftPlots = calculatePlot(leftNode);
|
||||||
|
plots.addAll(leftPlots);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create the new plot from the derived values and return it
|
||||||
|
return plots;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int calcSides(List<Triple<Integer, Integer, Character>> plot){
|
||||||
|
int sides = 0;
|
||||||
|
List<Triple<Integer, Integer, Character>> sidePoints = new ArrayList<>();
|
||||||
|
|
||||||
|
//Loop through every element in the plot
|
||||||
|
for(Triple<Integer, Integer, Character> element : plot){
|
||||||
|
//Check if the top is an edge and doesn't already have a point in the list
|
||||||
|
if(!plot.contains(new Triple<>(element.getA() - 1, element.getB(), element.getC())) && (!sidePoints.contains(new Triple<>(element.getA(), element.getB(), '^')))){
|
||||||
|
//Add this element to the list
|
||||||
|
sidePoints.add(new Triple<>(element.getA(), element.getB(), '^'));
|
||||||
|
//Add all elements to the right that are in the plot and continue to have a top edge
|
||||||
|
Triple<Integer, Integer, Character> nextElement = new Triple<>(element.getA(), element.getB() + 1, element.getC());
|
||||||
|
while(plot.contains(nextElement) && (!plot.contains(new Triple<>(nextElement.getA() - 1, nextElement.getB(), nextElement.getC())))){
|
||||||
|
sidePoints.add(new Triple<>(nextElement.getA(), nextElement.getB(), '^'));
|
||||||
|
nextElement = new Triple<>(nextElement.getA(), nextElement.getB() + 1, nextElement.getC());
|
||||||
|
}
|
||||||
|
//Add all elements to the left that are in the plot and continue to have a top edge
|
||||||
|
nextElement = new Triple<>(element.getA(), element.getB() - 1, element.getC());
|
||||||
|
while(plot.contains(nextElement) && (!plot.contains(new Triple<>(nextElement.getA() - 1, nextElement.getB(), nextElement.getC())))){
|
||||||
|
sidePoints.add(new Triple<>(nextElement.getA(), nextElement.getB(), '^'));
|
||||||
|
nextElement = new Triple<>(nextElement.getA(), nextElement.getB() - 1, nextElement.getC());
|
||||||
|
}
|
||||||
|
//Increase the number of sides
|
||||||
|
++sides;
|
||||||
|
}
|
||||||
|
//Check if the right is an edge and doesn't already have a point in the list
|
||||||
|
if(!plot.contains(new Triple<>(element.getA(), element.getB() + 1, element.getC())) && (!sidePoints.contains(new Triple<>(element.getA(), element.getB(), '>')))){
|
||||||
|
//Add this element to the list
|
||||||
|
sidePoints.add(new Triple<>(element.getA(), element.getB(), '>'));
|
||||||
|
//Add all elements to the bottom that are in the plot and continue to have a right edge
|
||||||
|
Triple<Integer, Integer, Character> nextElement = new Triple<>(element.getA() + 1, element.getB(), element.getC());
|
||||||
|
while(plot.contains(nextElement) && (!plot.contains(new Triple<>(nextElement.getA(), nextElement.getB() + 1, nextElement.getC())))){
|
||||||
|
sidePoints.add(new Triple<>(nextElement.getA(), nextElement.getB(), '>'));
|
||||||
|
nextElement = new Triple<>(nextElement.getA() + 1, nextElement.getB(), nextElement.getC());
|
||||||
|
}
|
||||||
|
//Add all elements to the top that are in the plot and continue to have a right edge
|
||||||
|
nextElement = new Triple<>(element.getA() - 1, element.getB(), element.getC());
|
||||||
|
while(plot.contains(nextElement) && (!plot.contains(new Triple<>(nextElement.getA(), nextElement.getB() + 1, nextElement.getC())))){
|
||||||
|
sidePoints.add(new Triple<>(nextElement.getA(), nextElement.getB(), '>'));
|
||||||
|
nextElement = new Triple<>(nextElement.getA() - 1, nextElement.getB(), nextElement.getC());
|
||||||
|
}
|
||||||
|
//Increase the number of sides
|
||||||
|
++sides;
|
||||||
|
}
|
||||||
|
//Check if the bottom is an edge and doesn't already have a point in the list
|
||||||
|
if(!plot.contains(new Triple<>(element.getA() + 1, element.getB(), element.getC())) && (!sidePoints.contains(new Triple<>(element.getA(), element.getB(), 'v')))){
|
||||||
|
//Add this element to the list
|
||||||
|
sidePoints.add(new Triple<>(element.getA(), element.getB(), 'v'));
|
||||||
|
//Add all elements to the left that are in the plot and continue to have a bottom edge
|
||||||
|
Triple<Integer, Integer, Character> nextElement = new Triple<>(element.getA(), element.getB() - 1, element.getC());
|
||||||
|
while(plot.contains(nextElement) && (!plot.contains(new Triple<>(nextElement.getA() + 1, nextElement.getB(), nextElement.getC())))){
|
||||||
|
sidePoints.add(new Triple<>(nextElement.getA(), nextElement.getB(), 'v'));
|
||||||
|
nextElement = new Triple<>(nextElement.getA(), nextElement.getB() - 1, nextElement.getC());
|
||||||
|
}
|
||||||
|
//Add all elements to the right that are in the plot and continue to have a bottom edge
|
||||||
|
nextElement = new Triple<>(element.getA(), element.getB() + 1, element.getC());
|
||||||
|
while(plot.contains(nextElement) && (!plot.contains(new Triple<>(nextElement.getA() + 1, nextElement.getB(), nextElement.getC())))){
|
||||||
|
sidePoints.add(new Triple<>(nextElement.getA(), nextElement.getB(), 'v'));
|
||||||
|
nextElement = new Triple<>(nextElement.getA(), nextElement.getB() + 1, nextElement.getC());
|
||||||
|
}
|
||||||
|
//Increase the number of sides
|
||||||
|
++sides;
|
||||||
|
}
|
||||||
|
//Check if the left is an edge and doesn't already have a point in the list
|
||||||
|
if(!plot.contains(new Triple<>(element.getA(), element.getB() - 1, element.getC())) && (!sidePoints.contains(new Triple<>(element.getA(), element.getB(), '<')))){
|
||||||
|
//Add this element to the list
|
||||||
|
sidePoints.add(new Triple<>(element.getA(), element.getB(), '<'));
|
||||||
|
//Add all elements to the top that are in the plot and continue to have a left edge
|
||||||
|
Triple<Integer, Integer, Character> nextElement = new Triple<>(element.getA() - 1, element.getB(), element.getC());
|
||||||
|
while(plot.contains(nextElement) && (!plot.contains(new Triple<>(nextElement.getA(), nextElement.getB() - 1, nextElement.getC())))){
|
||||||
|
sidePoints.add(new Triple<>(nextElement.getA(), nextElement.getB(), '<'));
|
||||||
|
nextElement = new Triple<>(nextElement.getA() - 1, nextElement.getB(), nextElement.getC());
|
||||||
|
}
|
||||||
|
//Add all elements to the bottom that are in the plot and continue to have a left edge
|
||||||
|
nextElement = new Triple<>(element.getA() + 1, element.getB(), element.getC());
|
||||||
|
while(plot.contains(nextElement) && (!plot.contains(new Triple<>(nextElement.getA(), nextElement.getB() - 1, nextElement.getC())))){
|
||||||
|
sidePoints.add(new Triple<>(nextElement.getA(), nextElement.getB(), '<'));
|
||||||
|
nextElement = new Triple<>(nextElement.getA() + 1, nextElement.getB(), nextElement.getC());
|
||||||
|
}
|
||||||
|
//Increase the number of sides
|
||||||
|
++sides;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sides;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Find the total price of fencing for the area.
|
||||||
|
The total price of fencing is 891106.
|
||||||
|
It took 1.502 seconds to run this algorithm.
|
||||||
|
*/
|
||||||
140
src/main/resources/days/Problem23.txt
Normal file
140
src/main/resources/days/Problem23.txt
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
SSSSSOOOOOBFFJJFTFBBBBBBBBPPPPPPPPBBBBBBBBBBBSSDDDDDDCCCCCCCCCCCUUUUUAAAAAAAAAAAAAAAUUUUUUUUUUUUUUUUUUUUUUDDDDDDMMMMMZZFFZZFFFFFFFFFFFFFFFII
|
||||||
|
SSSOOOOOFFFFFFJFFFFBBBBBBBPPPPPPPPPBBBBBBBBBSSSSSSSSDDCCCCCCCCCUUUUUUUUAAAAAAAAAAAAAUUUUUUUUUUUUUUUUUUUUUUUDDDDDMMMMZZZZFZZFFFFFFFFFFFFFFFII
|
||||||
|
OOSOOOOOFFFFFFJFFFFBBBBBBPPPPPPPPPPBBBBBBBBBBSSSSSSSDCCCCCCCCUUUUUUUUUUUUAAAAAAAAAAUUUUUUUUUUUUUUUUUUUUUUDDDDDDDDDDZZZZZZZFFFFFFFFFFFFFFFFII
|
||||||
|
OOOOOOOOFFFFFFFFFFFHBBBBBBPPPPPPPPPBBBBBBBBBBSSSSSSSDCCCCCCCUUUUUUUUUUGGUAAAAAAAAAUUUUUUUUUUUUUUUUUUUUUDVDDDDDDDDDDZZZZZZZZFFFFFFFFFFFFFFFII
|
||||||
|
OOOOOOOOOFFFFFFFFFFFFBBBBPPPPPPPPPPPBBBBBSSSSSSSSSSSDXXCYCCCUUUUUUUUUUUUUAAXXAAAAUUUUUUUUUUUCUUUUUUUUUUDDDDDDDDDRDHZZZZZZZZFFFFFFFFFFFFFFFII
|
||||||
|
OOOOOOOOOOFFFFFFFFFFFFFFBPPPPPPPPPPPBPPPBBSSSSSSSSXXXXXCXXCCUUULUUUUUUUUUUAXXXAAAUUUUUUCCCCCCCCCSUUUUUUDDDDDDDDFRRFZZZZZZZZZZZFFFFFFFFFFFFII
|
||||||
|
OOOOOOOOOOFFFUFFFFFFFFFFIPPPPPPPPPPPBBPPBBSSSSSSSMMMXXXXXXWUUUUUUUUUUUUUUCXXXXXXXWWWUUCCCCCCCCCCSUUUUUDDDDDDDDXFFFFZZZZZZZZZZZFFFFFFFFFFFFII
|
||||||
|
COOCOOOOOOKFFUFUUUFFFFFIIPPPPPPPPPPPPPPPPPSSSSSSSSMXXXXXXXUUUUUUUUUUUUUUUUUUXXXXXXXWWWCCCCCCCCCCSSSUUUUUDDDDDDFFFKFFZZZZZZZZFFFFFFFFFFFFIIII
|
||||||
|
COCCCOOOOOKFUUUUUUFFFFFIIIIPPPPPPPPPPPPPPIITSSSSSIXXXXXXXXUUUUUUUUUUUUUUUXXXXXXXXXWWWWWCCCCCCCCSSSSSSSSUUDDDDDFFFFFFZZZZZZZZFFFFFFFFFQQQIIII
|
||||||
|
CCCCCCCOKOKKUUUUUUFFFFFIIIIPPPPPPPPPPPPPPIIIIISIIIIXXXXXXXUUUUUUUUUUUUUUUXXXXXXXXXWWWCCCCCCCCCGSSSSSSSSSUDDDDFFFFFFFZZZZZZZZMZFFFXFSQQFQQQII
|
||||||
|
CCCCCCCCKKKKKKUUUUFUUKKIIIIPPPPPPPPPPPPPPIIIIIIIIIIIIIXXXXXURUUUUUUNUNUUXXXXXXXXXXWWWWCCCCCCCCSSSSSSSSSKKDDDDFFFFFFZZZZZZZZZZZXFFXFFFQQQQQII
|
||||||
|
CCCCCCKKKKKKKKUUUUUUKQKKIIIIIPPPPPPPPPPPPIIIIIIIIIIIIIXXXXXURUKKUUNNNNUXXXXXXXXTXXWCCCCCCCCCCCISSSSSSSSKKKKDDSFFFZZZZZZZZZZZZZXXXXFQQQQQQQQI
|
||||||
|
CCCCCCCCKKKKKKUUUUUUKKKKKLLIIPPPIPPPPPPPPPIIIIIIIIIIIIXXXXXXRSSSUUNNNNUNXXXXXXZXXWWCCCCCCCCCSSSSSSSSSSSSSKKKDSSZZZZZZZZZZZZZZZXXXXFFGQQQQQQQ
|
||||||
|
CCCCCCCCCCUKKKUUUUUUUUKKLLLIPPPIIIPPPPPPPIIIIIINIIIIIIIIXXXXSSSSNNNNNNUNXXXXXXZXXXCCCCCCCCCCCSSSSSSSSSSSSKKKSSSZZZZZZZZZZZZFFFFFXXFFFQQQQQQQ
|
||||||
|
CCCCCCCCCUUUUKUUUUUUULKKLLLLLIIIIIPPPPPPPIIIIKKNIIIINIIIISXXSSSSGGGNNNNNNNXQZZZZZXXXXCCCXCSCCCSSSSSSSSSSSKKKSSSSZZZSZZZZZZZFDFFFFFFFWQQQQQQQ
|
||||||
|
CCCCCCCCCUUUUUUUUUUUULLLLLLLLLLIIIPPPPPPPKIIKKBNNNNNNNNSSSUXSSJGGGGGNNNNNQQQZZZXZXXXXCCCXXSSSSSSSSSSSSSSSKKSSSSSZSSSZSZZZFFFDFFFFFFFQQQQQQQQ
|
||||||
|
CCCCCCCCCUUUUUUUOULLLLLLLFLMLLIIIIPPPPPKKKIEEKKNNNNNNNNSSUUSSSJJGGGNNLNNNQQQQZZXXXXXXXXXXXXXXSSSSTSSSSSKKKKKKSSSSSSSSSSZZJFFDFFFFFFFFQQQQQQQ
|
||||||
|
CCCCCCCCCUJJJJJJUULLLLLLLLLLIIIIIIPPPKKKKKEEKKKNNNNNNNNNSSSSSSSGGGGNNLNNNQQQQQXXXXXXXXXXXXXXXTSSSTSSSSSKKKKKSSSSSSSSSSSZZFFFFFFFFFFFFQQQQQQQ
|
||||||
|
CCCCCCKKKUUJJJJJJJLLLLLLLLLLLIIIIIIPKKKKKKKKKKKNNNNNNNNNSSSSSSSGGGGGGLLLNQQQQQQQXXXXXXXXXXXXXTSTTTTTSSSKKKKSSSSSSSSSSSSSSSFFFFFFFFFFQQQQQQQQ
|
||||||
|
CCCCFFFFFFJJJJJJJLLLLLLLLLLLLLIIIIPPKKKKKKKKKKNNNNNNNNNXXXSSMMMGGGLLLLLLNQNQQQQQXXXXXXXXXXXXXTTTTTTTTTSHKKSSSUSSSSSSSSSSSZFFFFFFFFFFQQQQQQQQ
|
||||||
|
CCCCFFFFFFFJJJJJJLLLLLLLLLLLLLIIIHHPPKKKKKKKKKKKNNNNNNNNXXXSMMLLLLLLLLLNNNNNQQQQQXXXXXXXXXTXTTTTTTTTTTTHKSSSSSSSSSSSSSSSSSFFFFFFFFFQQQQQQQQQ
|
||||||
|
CCCCFFFFGFFJJJGJJJJJLLLLLKKLLLIIIHHKKKKKKKKKKKKKNNNNNNNXXXXSMMMLLLLLLLLNNNNNQQQQQQXXXXXXXXTTTCCTTTTTTTHHHHHDSSLSSLSSSSSSSSFFFFFFFFFQQEEQQQQQ
|
||||||
|
CCFGFFFFFFFFGGGJGJJLLLLLUEELILIIIKKKKKKKKKKKIKKUNNNNNNXXXXXXXLLLLLLLLLLLQQQQQQQQQQQXXXXXXXXCTCTTTTTTTTTHHHHHIILLLLSSSSSSHHHFHFFFFFFEEEEEQEQQ
|
||||||
|
CCFFFFFFFFFFGGGGGJJLLLLLUEESIIIIIIDDKKKKKKKKUUUUNNNNNNXXXXXXZZLLLLLLLLLLLQQQQQQQQQQQXXXXXXJCCCCTTTTTTTTHHIIHIIIWLLSSSQQSHHHHHHFFFFFFEEEEEEQQ
|
||||||
|
XFFFFFFFFFFFGGGGGGJHLLLLUEEIIIIIIIDDDDKYKKKKKUUUUNUUNNCXXXXXXZZLLLLLLLLBLMBQQQQQQQQQXXCCCXCCCCCTTTTTTTHHHIIIIIWWQQQQQQQSSHHHHHFFFPPFEEEEEEQQ
|
||||||
|
FFFFFFFFFFFGGGRGGPHHLHHLLEEEIIIIIDDDDDUYYKKKKUUUUUUUWWXXXRXXXKKKKKKLLLBBBBBQQQQQQQCCXXCCCCCCJCCTTTTTTTTHFIIIIIIWWQQQQQQJHHHHHHHJJPEEEEEEEIEQ
|
||||||
|
FFFFFFFFFCFFFGRRPPHHHHHELEEEEEEIDDDDDUUUYYYKUUUUUUUWWWWWXXXKKKKKKKLLLBBBBBBQQQQQQQQCCCCCCCCCCCCFTTTTFTTFFFIFIWWWWQQQEQQJJHHHHHJJJJJJXEEEEEEQ
|
||||||
|
FFFFFFFFFFRFRRRRPPHHHHEEEEEEEEEEEDDDDUUUUUKKUUUUUUWWWWWWXKKKKKKKKKLLLBBBBBBQQQQQQQCCCCCCCCCCCCGFFFFFFFTFFFIFIWWWWEEQEQQJJJHJJJJJJJJJJJREQQEQ
|
||||||
|
FFFFFFFFFFFFFFPPPPPHPEEQEEEEEEEEEEDEUUUUUUUUUUUUUUUWWWWWWKKKKKKKKKKLLBKBBBBBBQQQQCCCCCCCCCCCCCCAFFFFFFFFFIIFIIIWWEEEEQJJJHHJJJJJJJJJJJJJJQEQ
|
||||||
|
FFFFFFFFFFFFPPPPPPPPPEEEEEEEEEEEEEEEUUUUUUUUUUUUUUUWOXXXXKKKKKKKKKLLLBBBBBBBBBBQQCCCCCCCCCCCCCCCFFCCCFCFFFFFFFFWWEEEEEJJJJJJJJJJJJJJJJJJJQQQ
|
||||||
|
FKFFFFFFFFFFFPPPPPPPPPEEEEEEEEEEEEEEUUUUUGUUUUUUUWUWOVVXXKKKKKKKKKLBLBBBBBBBBBQQQCCCCCCCCCCCCCCCFCCCCCCFFFFFFFFWEEEWWEJJJJJJJJJJJJJJJQJQJQQQ
|
||||||
|
KKFFFFFFFFFFFPPPPPPPPPPEEEEEEEEEEHELLLUUUGUUUUUWWWWWOOOXXXWWKKKKKILBBBBBBBBBBOQQQQCCCCCCCCCCCCCCCCCCCGCFFFFKKKAWWWWWWWWJJJJJJJJJJJJJJJJQJQQQ
|
||||||
|
KKKKKFFFFFKFPPPPPPPPPPEEEEEEEEEEEELLLLLGGGGUUUUWWPWOOCOOOXWWKKKKKIBBBBBBBBBBBOOQQCCCCCCCCCCUUUCCCCCGGGGFFFKKKAAAAAWWWWWWJJJJJJJJJJJJQQQQQQQQ
|
||||||
|
KKKKKFFFFFKKKPPPPGGGGPIEEEEEEEEEELLLLLLLGRRRUCUPPPPOOOOOOOWWWKKKIIIBBBBBBBBBBBOQOCCCCCCCCCUUUUUCCGGGGGGFCEAAAYAAAAWWAAWWJJJJJJJJJJJJJQRQQQRQ
|
||||||
|
KKKKKKFFKFKKPPPGGGGTTEEEEEEEEEEEELLLLRRLLRRRRUUNPPPVOIORROWXXXMKKXXBBBBBBBBBBBOOOOOOCCCCCUPUUUUUUGGGGGCCCAAAAAAAAAAAAAWWNJJJJJJJJJJJJQRRQRRQ
|
||||||
|
KKKKKKFKKKKKKPPGGGGGGGSSSSEEEEEQUUUURRRRRRRRGGGPPPVVPPKRRWWXXXMKXXXBBBBBBBBBBBOOOOOOCCCUUUPUUUUUUUGGGGGCCAAAAAAAAAAAAAANNNNJJJJJJJJJQQRRRDRR
|
||||||
|
KKKKKKKKKKKKKGGGGGGGGGGSSSEPEEEQUUUUUURUUUUUGGPPPPVPPNRRRRRXXXXXXXXXBBBBBBBBBBBBBOOOOOUUVUUUUUUUYYGGGGRCCAAAAAAAAAAAAAANNNNNNJJJJJQQQRRRRRRR
|
||||||
|
KKKKKKTKKTKKTTSSGGSGSGGSSSPPFEZUUUUUUUUUUUUUPGPPPPPPPPBRRRRXXXXXXXXXXBXBBBBBBBBBBBOOOOUUUUUUUUUUUUAAGGRCAAAAAAAAAAAAAAAGNNNNNJJJJJQQRRRRRRRR
|
||||||
|
KKKKTTTTTTTTTTSSGGSSSSSSSSPPFPZUUUUUUUUUUUUPPPPPPPPPMPRRREEXXXXXXXXXXXXBBBBBOBBBOOOOOUUUUUUUUUUUUAAGGGGAAAAAAAAAAAAAAAAANNNNNNJJJJJJRRRRRRRR
|
||||||
|
KKKKKTWTTTTTTTTSSSSSSSPSPPPPPPUUUUUUUUUUUUUUPPPPPPPPPKRRREXXXXXXXXXXXXXVBBBOOOOOOOOOOUUUUUUUKUUUUAAGVVVVAAAAAAAAAAAAAUUUNNNNNNJJJJJRRRRRRRRR
|
||||||
|
KKKKKTTTTTTTTTTSSSSSSSPPPPPPPPJUUUUUUUUUUUUPPPPPPPPPPPPPPEEXXXXXXXXXXXXXXFBEEOOOOOOOAUUUAAUUUUUDAAAWYVYAAAAAAAAAAAAAAUUUNNNNNNNRRRRRRRRRRRRR
|
||||||
|
KKKKTTTTTTTTTTTSSSSSSSPPPPPPPPPURUUUUUUUUUPPPPPPPPPPPRPPPEEEEEXXXUXXXXXXXFFEEOOOOOOOAUUUAAUAUUUAAAAWYYYYYAIAJAAAAAUUUUNNNNNNNNNTRRRRRRRRRRRR
|
||||||
|
KKKKTTTTTTTTTTSSSSSSPPPPPPPPPPSSUUUUUUUUUUUPSPPPPPPPPPPJPREEEEXXXUUXXXXXCEEEOOOOAOAAAAAAAAAAAUAAAAAYYYYYYQAAAAAAAAUUUUUNNAANNIITTRTRRRRRRRRR
|
||||||
|
KKKKKTTTTTTSSSSSSSSPPPPPPPPPPPPPPUUUUUUUUUGPPPPPPPPPPPJJJRRRRRXXXOUUUXXXCEEEOOOOAAAAAAAAAAAAAAAAAAAYYYYYYYYYAAAAAAUUUUUUUATTTTTTTTTRRRRRRRRR
|
||||||
|
KKKKKTTTTTTSSBSSSSSSSPPPPPPPPPPPUUUUGGUUUGGGGGPPPPPJJJJJRRRRRRRRUUUUUSXCCEEEOOOGAAAAAAAAAAAAAAAAAYYYYYYYYYBYYBBAAUUUUUUUUUTTXTTTTTTTTRRRRRRR
|
||||||
|
KKBKBBTTTTBBBBSSSSSSSSPPPPPPPPPPPUUGGGCGUGGGGGPPPPJJJJJJJRRRRRUUUUUUUUXUEEEEEEEGGAAAAAAAAAAAAAAAAYYYYYYYYYYYBBBBUUUUUUUUUTTTTTTTTTTBBBBRRRRR
|
||||||
|
KBBBBBBTTBBBBBSSSSSSSSPPPPPPPPPPPPUJGGCGGGGGGGGPXPPJJJJJRRRRRRUUUUUUUUXUVEEEEEEGGGGAAASAAAAAAAAAAYYYYYYYYYYBBBBBUUUUUUUUUTTTTTTTTTTBBBBRRRRR
|
||||||
|
KKKBBBBBTBBBBBSSSSSSSSPXPPPPPPPPPSSGGGGGGGGGGGPPPPZZZZJJZZNRRRUUUUUUUUUUUEEEEGGGGGIIIIAAEUUUUAAAAYYYYYYYYYYBBBBUUUUUUUUUBBBTTTTTTTTTBBBRRRRR
|
||||||
|
KKBBBBBBBBBBBBBSSSSSPPPPPPPPPYPSPSSSGSGGGGGGGGPPPZZZZZJZZNNNRRRUUUUUUUUUEEEEEEGGIIIISAAAUUUUWAACYYYYYYYYYYYBBBBBUUUUUUUUBBTTTTTTTTTBBBBRRRRR
|
||||||
|
KKKBBBBBBBBBRBBBBSSSSSPPPPPPPPSSPPSSSSGGGGGGGGPPZZZZZZZZNNNUUUUUUUUUUUUUUEEEEEEEEEIIIIAAUUUIWAAYYYYYYYYYPBBBBBBBBUUUUUUUBBTTTTTTOOTBBBBRRRRR
|
||||||
|
OOKKBBBBBBBBBBBBSSSSSSPPPPPPPPSSPPSSSSGGSGGGGGGZZZZZZZPZNNNUUUEEUUUUUUUEEEEEEEEEEIIIIAAIIIIIIIIIIIYYYYYYPBBBBBBBBBBUUUBBBBBBYYYYOONNNBRRRRRR
|
||||||
|
OOOOOOBBBBBBBBBBBBSSSSPPPKPMPPSSSSSSSSSSSGGGGGGZZZZVVZZNNNNNNEEEUUULUUUULLEEEEEEEIIIIIIIIIIIIIIIIIYYYYPPPBBBBBBBBBBBBBBBBBBBYOYYOONNNNPRRPRP
|
||||||
|
OOOOOOBBBBBBBBBBBFVSSSPMMMMMMMSSSSSSSSSSSGGGGGGCCZZVZYZNNWWNWEEEUULLULLLLLEEEEEEEIIIIIIIIIIIIIIIIIYYYYQPPBPBBBBBBBBBBBBBBBBBBOYOOOONVVPPPPRP
|
||||||
|
OOOOOOOBBBBBVVBVTVVSSVMMMMMMMSSSSSSSSSSSGGGGGXCCCCZZZZKKKKKKKKKKELLLLLLLLLEEEEEEEIIIIIIIIIIIIIIPIIIUUPPPPPPBBBKBBBBJJJBBBBBOOOOOOOONVVPPPPPP
|
||||||
|
OOOOOOOBBBBBVVVVVVQVSVMMMMMMMSSSSSSSSSSSSVGGGXXCMMZZZZKKKKKKKKKKELLLLLLLLEEEEEEEEIIIIIIIIIIIIIIPPPPPPPPPPBBBKBKKKKBJJJBBBBOOOOOOOOONVVPPPPPP
|
||||||
|
OOOOOOOOOBXVVVVVVVVVVVVMMMMMYSSSSSSSSSSASVVAGXCCMVZMZMKKKKKKKKKKELLLLLLLLLEEEEEIIIIIIIIIIIIIIIIPPPPPPPPPCBBKKKKKKKBJJJBBBBOOOOOOOOOOXXXXPPPP
|
||||||
|
OOOOOOOOOXXXVVVVVVVVVMMMMMCMSSSSSSSSSSSVVVXGGXMMMVMMMMKKKKKKKKKKQLLLLLLLEEEEIEIIIIIIIIIIIIIIIIIIIPPPPPPPCPBCKKKKKKJJJJJJJJOOOOOOOOOOXXXXXPPP
|
||||||
|
OOOOOOOOOZXXVVVVVVVVVMTMCMCCSSSSSSSSSSSVVVXXXXMMMMMMMAKKKKKKKKKKLLLLLLLLLLIIIIIIIIIIIIIIIIIIIIIIPPPPPPPPPPBBKKKKKKJJJJJJJJJJJJOOOOOOXXXXXXMM
|
||||||
|
OOOOOOOOOXXXVVVVVVVVVVVVCCCCCSSSSSSSSSVVVXXXVVMMMMMMMMKKKKKKKKKKLLLLLLLLLKIIIIIIIIIIIIIIIIIIIIIHPPPPPPPPPPBBBKKKKKJJJJJJJJJJJJOOXOOOXXXXXXXM
|
||||||
|
OOOOOOGOOXXXXXVVVVVVVVVVCCCCCCSSSSSSSSVVVVXXVMMMMMMMMMKKKKKKKKKKLLLLLLLLLKIIKIIIIIIIIIIIIIIIHHHHHPPPPPPPPPQQQQKKKKJJJJJJJJJJJJXXXXXXXXXXXXXM
|
||||||
|
OOOOOOOOOXXXXXVVVVVVVVVVCCNNCCSSSSSSSSSVVVXXVVMMMMVMMVVVVWWWWWWWLLLLLLLLLKIIKKKIIIIIIIIIIIIIHHHPPPPPPPPPPWOQQQQQQQJJJJJJJJJJJJOSAAXXXXXXXXXM
|
||||||
|
OOOOOOOOOOXCECCCVVVVVVVCCCNNNCSSSSSSSVVVVVVXVVVMVVVMMVVVVVWWWWWWLLLLLLLLLKKIKKKIIIIIIIIIIIIHHHHPPPPPPPPPXOOQQQQQQQJJJJJJJJJJJJSSWWXXXXXXXXXM
|
||||||
|
OOOOOOOOOOCCCCCVVVVVCCCCCNNVNSSSSSSVVVVVVVVVVVVMVVVVVVVVVVVLWWWWWLLLLLLLLLKKKCCCCCICIIIIIIHHHPPPPVVVPCCPPOOQQQQQQQJJJJJJJJJJJJSSWWWWXXXXXXXX
|
||||||
|
OOOOOOOOCCCCCCCCCVVVVCCCCNNNNNNSSSSVVVVVVVVVVNNZZZVVIVVVVVVLLLWWLLLLLLLLOODKKKCCCCCCIIIIBIHHHTTPPOOOCCPPPOOOOOQOXQJJJJJJJJJJJJJSWWWWWXXXXXXX
|
||||||
|
OOOOOOOOOCYCCCCCCVVVCCCCNNNNNNNSSSSSVVVVVVVVVVNZZZZZIVVVVVVLLLLLLLLLLLLLLDDDDCCCCCCIIIIIIIHHHTTPPFOCCCOOOOOOOOOOXQWWWJJJJJJJJJJSSWWWWXXXXXXR
|
||||||
|
OOOOOOOOYYYCCCCCCVVCCCCNNNNNNNNNNNVVVVVVVVVVVVNNVVZIIVVVVVVLLLLLLLLLLLLZZDDDZCCCCCCCIIIIIIHHHHHPPFOCCCOOOOOOOOXXXXXXWJJJJJJJJJJSWWWWWWXXXXXX
|
||||||
|
OOOOOOOYYYYYCCCCCCCCCCCNNNNNNNNNCOVVVVVVVVVVZZNSGVVVVVVVVVVLLLLLLLLLLLLLZDDZZCCCCCCIIIIIIHHHHHHFFFOOOOOOOOOOOOOXXXXXWJJJJJJOSDSWWWWWWWXXXXXX
|
||||||
|
OOOOOYYYYYYYCCCCCCCCCCCNNNSNNNNNCCVVVVVVVZZVVZFSGGGGVVVVVVVMLLLLLLLLLLLLZZZZZCCCCCCCTIIITTTHHHHFFFOOOOOOOOOOOOOOOXXXXXWXXXOOSDWWWWWWWWWXXXXX
|
||||||
|
OOOYOYYYYYYYCCCCCSCCCCCCCNNNNNNNCCCVVVVZZZZZZZSSSGGMLVVVVVHMMMMMMLLLLLZZZZZZZZCCCCTTTTITTTTBFFFFFFOOOOOOOOOOOOOXXXXXXXXXXXOOOWWWWWWWWWWXXXXM
|
||||||
|
OOOYYYYYYYYYYGGCCSSSSCCCNNNNNCCCCCCVVZZZZZZZZZZZZMMMLVVVVMMMRLLBLLFFFFFFFFFFZZCXCCCTTTITTTTBBFFFCFOOOOOOOOOOOOXXXXXXXXXXXXXOOXWWWWWWWWWWWMXM
|
||||||
|
OOOYYYYYYYYGGGGCCCCSSSCCCNNNNNCCCCKVVNNZZZZZZZZZZZKMMVVVVMMMRLLLLLFFFFFFFFFFZZCCCCZATTTTTTTBFFFCCCOOOOOOOOXXOXXXXXXXXXXXXXWXXXSSSWWWWMMMWMMM
|
||||||
|
OODBYYYYYYYGGGGGSSSSSSSCCCCCCCCCCCCNNNNNZZZZZZZZZMMMMMMMVMMMMMLOLZFFFFFFFFFFZZZZZZZAATTTTTTBBFCCCOOOOOOOOOOXXXXXXXXXXXXXXXXXXXSSSSWWMMMMMMMM
|
||||||
|
OBDBBBBBEYSGGGGGSSSSSSSSSCCCCCCCCCNNNNZZZZZZZZZZMMMMMMMMVMMMMMMMMZFFFFFFFFFFZZZZZAAAATTTTBBBFFCCBOOOOOOOOOOOOODDDXXXXXXXXXXXXXSSSSWHHMMMMMMM
|
||||||
|
BBBBBBBBBGGGGGGSSSSSSSSSCCCCCCCCCCCCZZZZZZZZZZZZMMMMMMMMMMMMMMMMMZZZZZZZZZZZZZZZZAAAAAATTBBBFFBBBIOIZZOZZOOOOOODDXXXXXXXXXXXXXSSHSSHMMHHHMMM
|
||||||
|
BBBBBBBBGGLGGGGGSSSSSSZZCCCCCCCCCCCCCCZZZZZZZZZZZMMMMMMMMMMMMMMMMZZZZZZZZZZZZZZZAYAAAAATBBBBBBBBBIIIZOOZZZZOODDDDDXXXXDXXXXXXXSSHSHHMMHHMMMM
|
||||||
|
BBBBBBBBGGGGGGAASSSSSSSSCCCCCCCCCCCCCCZZZZZZZZZZZMMMMMMMMMMMMMMMZZZZZZZZZZZZZZZAAAAAAAATTBBBBBBBBZIZZZZZZZZOODDDDDDDDDDDQQQXXSSSHHHHHHHHMMMM
|
||||||
|
BBBBBBBBBGGGFFSSSSSSSSCCCCCCCCCCCCCWCCCZZZZZZZZZZZZCMMMMMMMMMMMMZZZZZZZZZZZZZTZAAAAAAAAAAQQBBBBBZZZZZZZZZZZOOODDDDDDDDDQQQQXXSHHHHHHHHHHHYYM
|
||||||
|
BBBBBBBBBBBBBSSSSSSSSSCCCCCCCCCCCCCWCCCZZZZZZZZZZZZMMMMMMMMMMMMMZZZZZZZZZZZTTTZAAAAAAAAAAQQBBBBBZZZZZZZZZZZZDODDDDDDDDDQQQQQXXHHHHHHHHHHHLYY
|
||||||
|
BBBBBBBBBBBBBBSSSSSSSSCCCCCCCCCCCCWWCCZZZZZZZZZZZZZYMMMMMMMMMMYZZZZZZZZZZZTTTTTWBAAAAAAAQQQBBBBBWZZZZZZZZZZZDDDDDDDDDDDQQQQQQHHHHHHHHHHHHYYY
|
||||||
|
BBBBBBBBBBBBSSSSSSSSSSSCCCNNCCCWWWWWYYYZZZZZZZZZZYYYYYMMMKMKMMMKKZZZZZZZZZTTTTXBBBAAAAAAQQQBBBBBBZZZZZZZZZSZDDDDDDDDDDDQQQQQQQHHHHHHHHHHHYYY
|
||||||
|
EEBBBBBBBBBBSSSSSSSSSSSCCNNCCCZWWZWYYYYYYYZZZZZZZYYYYAMMMKKKMMKKKZZZZZZZZZKKKBBBBBVBAIAQQQQBBBOOZZZZZZZZZZZYDDDDDDDDDDDQQQQQQQHHHHHYHHHHYYYY
|
||||||
|
EEBBBBBBBBBBSSSSSSSSSSSSCNNCGCZZZZZZYYYYYYZZZZZZZYYYYAAMMKKKKKKKKKZZZZZZZZKZKBBBBBBBBBQQQQQQQBBBBZZXZZZZZZDDDDDDDDDDQDDDQQQQQQBHHHHYYHHHYYYY
|
||||||
|
EEBBBBBBBBBBSBBSSSSSSSSSSSNNZZZZZZZZYYYYYYYYZZXXYYYYAAAAMKKKKKKKNNNZZZZZZZZZBBBBBBBBJJJQQQQQQQXZZZZXZZZZZZFFFFDDDDDDQDDDDQQQBBBBYYYYHHYYYYYY
|
||||||
|
EEEBEEBBBBBBBBSSSSSSSSSJJJJJZZZZZZZYYYYYYYYYAXXXYYYYAAAEEKKKKKNKNNNNNZZNZZTBBBBBBBBBJJBQQQQQQQXXXXXXXXXZZFFFFDDDDDQDQDDDDQQQQQBBBYYYYYYYYYYY
|
||||||
|
EEEEEEBBBBBBBBBSSSSSJCSJJJJPZZZZZZZYYYYYYYXXXXXXXYYYXXDEEEEKKNNNNNNNNNNNNBBBBBBBBBBBBJBSOQQQVQXXXXXJJXXJZFFQQQQQDQQQQQDQQQQQQBBBYYYYYYYYYYYY
|
||||||
|
EEEEEEZEBBOOBBBSSSJBJCCJJJJJZZZZZZZYYYYYYXXXXXXXXXYXXXXEEEEKKNNNNNNNNNNNNNNBBBBBBBBBBBBOOOQQVXXXXJJJJJJJJFQQQQQQQQQQQQQQQQQQBBBBYYBYYYYYYYYY
|
||||||
|
EEEEEEZEOBOOBOBSSOJJJJJJJJJJJZZZZZZZCCCAAAAXXAAXXXXXXEEEEEEKKNNNNNNNNNNNNNNBBBBBCBBBBOOOOOQXXXXXYJJJJJJJJJQQQQQQQQYYQQQQQQQQBBBBBBBBBBYYYYYY
|
||||||
|
EEEEEEEEOOOOOOBOOOJJJJJJJJJJJTZZZZCCCCCCCAAAAAKXXOXOEEEEEEEKKNNNNNNNNNNNNNNNBBBCCCCOOOOOOWYYYYYYYJDDJJJJJJWQQQQQQQYYQQQQQQBBBBBBBBBBBBYYYYYY
|
||||||
|
EEEEEEEEOOOOOOOOOJJJJJJJJJJJJJJJFGCCCCCCCCCAKKKQXOOOEEEEEEEKKNNNNNNNNNNNNNNNNBCCCCCOOOOOOOYYYYYDDDDDJJJJJJWWQQQQYYYYYYQQQQBBBBBBBBBBRBYYYYYY
|
||||||
|
EEEEIEOOOOOOOOOOOJJJJJJJJJJJJJZZGGGGCCCCCCCKKKKKKOOEEEEEEEEEECCNNNNNNNNNNNNNNCCCCCOOOOOOOYYYYYYDDDVDDDJJJJWWQQQJYYYYYMMMMMMMMMMJJJJJRBYYYYYK
|
||||||
|
EEEIIROOOOOOOOOOJJJJJJJJJJJJJJJZGGGGZZCCUUKKKKKKKKOOHPPEEEEEECCNNNNNNNNNNNNNCCCCCCOOOOOOYYYYYYYYDVVVDAJAWWWWQQQDYYYYYMMMMMMMMMMDJJJJJOYKYKKK
|
||||||
|
ERRRRRRROOOOOOOOOJJJJJJJJJJJJJJZZGZZZCCCUUUKKKKKKKOOHHHPEECCCCCCNNNNNNNNNNNNCCCCYCOYYOOOYYYYYYDDDDVVDAAAAWWQQWDDYYYYYMMMMMMMMMMJJJJJJJYKKKKK
|
||||||
|
ERRRRRRRRROOOOOOOOJJJJJJJJJJJJJZZZZZZZZZZUUUUKKKIIIIFHPPPECCCKKCNNNNNNNNNNCCCCYYYYYYYOYYYYUUYYYDDDDDAAAAAWWWQWDDDYYYMMMMMMMMMMMJJJJJNYYKKKKK
|
||||||
|
RRRRRRRRRROOOOOOOOOJJJJJJJJJJJJZZZZZZZZZUUUUUUKGGGIIHHHHPKKCKKKKNCCNNNNCCNNNCCCCYYYYYYYYYYUUUTADDAAAAAAWWWWWWWWWDDDOMMMMMMMMMMMJJJJJJLLLKKKK
|
||||||
|
RRRRRRRORROOOOOOSOOJJJJJJJJJJVZZZZZZZZZZUUUUUUKGGIIIHHHHPKKKKKKKKKCCCCCCCCNCCCCCCCCCHYHHYUUUUAAADAAAAAAAAAWWWWWDDDDOMMMMMMMMMMMJJJJJJLKKKKKK
|
||||||
|
ZZRRRRROOOOOSOOOSOOOJJJPJJJJVVVZZZZZZZUUUUUUUUUIIIIIIHHHPKKKKKKKKKKCCCCCCCCCCCCCCCCHHHHHHHUUNAAAAAAAAAAAXAWAWWWDDDDOMMMMMMMMMMMJJJJJJJJKKKKK
|
||||||
|
SZRXXROOSSOSSSSSSSOOOPJPJJJJVVVZZZXXXUUUUUUUUUUIIIIIIHHKKKKKKKKKKKKCCCCCCCCCCJCCCHHHHHHHHHUUNAAAAAAAAAAAAAAAAAWDDDDOMMMMMMMMMMMJJJJJJJKKKKKK
|
||||||
|
ZZZXXZOSSSSSSSSSSSSSSPPPPJJJVZZZZZZXXVVVVUUUUUUUIIIIIHBBKKKKKKKKKKKCCCYYYCCJJJCCHHHHHHHHHHCCAAAAAAAAAAAAAADAAIWDDDDOMMMMMMMMMMMJJJJJJJKKKKKK
|
||||||
|
ZZZZZZOSSSSSSSSSSSPPPPPPPPJVVVVVVZXXXCXXVUUUUUUUIIIIIHHBBKKKKKKKKKKCCYYAYCCJJJCCHHHHHHHHHHCHRRAAAAAAAAAAAAAAAAADDDDOMMMMMMMMMMMJYJJJJJKKKKKK
|
||||||
|
ZZZZZZZSSSSSSSSSSSPPPPPPPPPPPVVVVZXXXXXXVUUUUIIIIIIIIIZZKKKKKKKKKKKKCYYYYYCJJJCCCHHHHHHHHHHHHRRAAAAAAAAAAAAAAAIIIDCCLOOMMMMMJJYYYKKYKKKKKKKK
|
||||||
|
ZZZZZZZZSSSSSSSSSSPPPPPPPPPVVVVVVVVXXXXXUUUUUIIIIIIIIIZZKKKKKKKKKKKKYYYYDDJJJJJJJIIIHHHHHHHHHRRAAAAAAAAAAAAMMLLLLLLLLOOMMMMMYYYYKKKKKKKKKKKK
|
||||||
|
ZZZZZZZZASSSSSSSJSPPPPPPPPPPVVVVVVXXXXXXXXUUUUIIIIIIIIIZZKKKKKKKEEDYYYYYYDJJJJJJJJIIJHHHHHHHHRRRRRARARRARRAAMLLLLLLLLOOOOOJYYYYYKKKKKKPKKKKK
|
||||||
|
ZZZZZZZZZZSSSSSSPPPPPPPPPPVVVVVVVVVXXXXXXXXUUUUIIIIHIIZZZZZZKKKKEEDYYYYYDDDJJJJJJJIIJJHHHHHHHRRRRRRRRRRRRRRAALLLLLLLLOOOOOJYYYYFFFKKPKPPPKWK
|
||||||
|
ZZZZZZZZZZZUSDSSSPPPPPPPPVVVVVVVVXXXXXXXXXXUUUUUUIIIIIZZVVZKKEFEEEYYYYYYDJJJJJJJJJJJJHHHHHHHHFFFRMMMMMMRRRRRLLLLLLLLLOOOOOJYFFFFFEKPPPPPPKWK
|
||||||
|
ZZZZZZZZZZZZDDDSSPPPPPOPPPPVVVVVVXXXXXXXXXXXUUKUUIIIIQVZVVVTKEEEEEEYYYYYDJJJJJJJJJLJHHHHHTHHHFFUMMMMMMMMMMRRRRLLLLLLLLOOOOOOOFFFFFFGPEEPPWWK
|
||||||
|
ZZZZZZZZZZZZZDDDSPPPPPOOEPVVVVVVVVXXXXXXXXXXUKKKKKIIIQVVVVVTTEEEEEEETTYYYJJJJJJJJJJHHHHHHHHHHFFUMMMMMMMMMMRRLLLTLLDLARAOOOOOOHHFFFXPPEEPPPPK
|
||||||
|
ZZZZZZZZZZZZDDDDDPPPPOOOOOOOOVVVVVXXXXXXXXXUUKKKKKKIQQVVKVTTTEEEEEEETTTTJJJJJJJJJJZZHHHHHHHHFFFMMMMMMMMMMMMRJTTTTTAAAAAOOOOOOOHFFFFFPPPPAPPA
|
||||||
|
ZZZZZZZZZZZZDDDDDPPPPOOOOOOOOVVVVXXXXXXXXXUUKKKKKKKIIKKAVVVVTTEEEEEETTTTTTJJJJJJJJZZZHHHHHFFFXXXXXXXXXMMMMMJJTTTTTTAAAAAAOOOOOHFFFFFPPPAAAAA
|
||||||
|
ZZZZZZZZZZZIZDDDDDDPPOOOOOOOOVVVVBXXXXXXXPKKKKKKKKKKKKAAVTTTTTTTEEEETTTUUUUUUJJJJJJZZHHHHHFFFXXXXXXXXXXXXXXXJJJTTTTAAAAAAOOHOOHFFFMPPPSPPPAA
|
||||||
|
BZZZZZZZZZZZZZDDDDDPDOOOOOOOOOOVVBLXXXXTXXKKKKKKKKKKKKKKTTTTTTTTTEEETTUUUUUUFJJJJJJJHHYHHHHFXXXXXXXXXXXXXXXXJJTTTTTAAAAAAOAHHHHHPFFPPPPPPPAA
|
||||||
|
BZZZZZZZZZZZZZDDDDDDDDOOOOOOOBBBBBLXXXXKKKKKKKKKKKKKKKKKTZZTTTTTTEEETUUUUUUUJJJJJJCCCCFFHHFFXXXXXXXXXXXXXXXXJTTTJTTAAAAAAAAAAAAPPPPPPPPPPPAA
|
||||||
|
BZBBBZWWZZNZDZDDDDDDDDDDOOOOOLLBBBLLXXXXRRRRKKKKKKKKKKKKTZZTTTTTTTTTTUUUUUUUUJJJJJCCCCFFFFFFXXXXXXXXXXXXXXXXTTTTJTTAAAAAAAAAADPPPPPPPPPPPPPA
|
||||||
|
BBBBBBBBBWWNDDDDDDDDDDDDODDOOLLLLLLXXXXRRRRNNNNNKKKKKAAZZZZTTTTTTTTUUUUUUUUCCCJJJVVVFFFFFIIIXXXXXXXXXXXXXXXXJTTTJJTAAAAAAAAAAPPPPPPPPPPPAAAA
|
||||||
|
BBBBBBBBWWNNDDDDDDDDDDDDDDDDDDLLLLLLXRRRRRRNNNNNKKKKKKZZZZZZTTTTTTTUUUUUUUKKVCCJJVVVCFFFFFIIXXXXXXXXXXXXXXXXTTJJJJTAAAAAAAAAAAPPPPPPPPPPPPAA
|
||||||
|
BBBBBBBWWWNNDNDDNDDDDDDDDLLLLLLLLLLLLRRRRRRNNNNNKKKKKZZZZZZZTTTTKKTKAUUUUKKKKCCCJVVVCCFFCFIIXXXXXXXXXXXXXXXXTTJJJJTTTAAAAAAAAAZPPPPPPPPPPPAA
|
||||||
|
BBBBBBBRWWNNNNNNNNDDDDDDLLLLLLLLLLLLLLRRRRRNNNNNKKKZZZZZZZZZZNNNNKKKUBUUUKKKKCVVVVVVCCCFCCCIXXXXXXXXXXXXXXXXTTTJJKTTTAAAAAAAAAZZPPPPPPPPPPPA
|
||||||
|
BBBBBBBBBNNNNNNNNDDDDLLLLLLLLLLLLLLLLLRRRRRNNNNNKZZZZZZZZZZZZNNNKKKKUUUUUKKKKCVVVVVVCCCCCCCIXXXXXXXXXXZZZZKKKKKJJKKTTTTAAAAEAAZZZZPZPPPPPPPA
|
||||||
|
BBBBBBBVNNNNNNNNNDDDDDDLWWLLLLLLLLLLRRRRRRRNNNNNZZZZZZZZZZZZZNNNNKKKUUKUKKKKKCVVVVVVCCCCCCIIIIIIZZZZZZZZZZKKKKKKKKKTTTTTAAAEAZZZZZZZZZPPIITA
|
||||||
|
BBBBBBBBBLNNNNNNNDDDDKKWWWLLLLLLLLLLLRRRNNNNNNNNNNZZZZZZZZNZNNKNNLKKUKKKKKKKKCVVVVVVCCCCCCCVILIIZZZZZZZZZZKKKKKKKKKKKTTTAAAEEGGZZDDDDZPPITTA
|
||||||
|
BBBBBBBBBLLLNNNNNNDKKKKKWWWWWLLLLLLLRRRRNNNNNNNNNNNNZZZZZNNNNKKKKKKKKKKKKKKKKKVVVVVVKCCCCCCCLLLIZZZZZZZZZZKKKKKKKKYYTTTTTAEEGGGZDDDDTZZZTTTT
|
||||||
|
BBBBBBBBLLLLNNNNNNKKKKKKWWWWLLLLLLLLRRRRNNNNNNNNNNNNZZZZZZNNNNKKKKKKKKKKKKKKKKVVVVVVVVVVCCCCCCLLIITZZZZZZZKKKKKKKKYYYYTTTGGGGGGDDDDDTTTTTTTT
|
||||||
|
BBBBBBOWLWLLLNNNKNKKKKKKWWWWLLLLLLLLLRRRNNNNNNNNNNNNZZZZZZNNNNKKKKKKKKKKKKKKKKVVVVVVVVVVKKCQQFLLLTTZZZZZZZKKKKKKYYYYYTTTGGGGGWWWDDDDDDTHTTTT
|
||||||
|
BBBBBLWWWWWNNNNNKNKKKKKWWWWLLLLLLLWLLRRRNNNNNNNNNNNNZZZZZZZNNNNKKKDWWWKKKKKKKRVVVVVVVVVVKKVQQFFFFCCZZZZZZZKKKKKYYYYYTTTTGGGGGGWDDDDDDDTTDLTT
|
||||||
|
BBBBBBWWWWWNCNNNKKKKKKKKWWWWLWLWLLWLLRRRNNNNNNNNNNNNZZZZZZZNNNNNKKDWWWKKKKKRRRRRRQVVVVVVKKKQQFQFFFCZZZZKKKKKKKKKKYYYYTTTGGGGGGGDVDDDDDDDDDDD
|
||||||
|
BBBBBBBBWWWCCKKKKKKKKKKKWWWWWWWWLWWWRRRRNNNNNNNNNNNNZZZZZZZNNNNNOWWWWWKKKRRRRRRRRRKKKKKKKKKQQQQQCCCCCCKKKKKKRKKKRYYYYTGTGGGYWDDDDDDDDDDDDDDD
|
||||||
|
BBBBBBBBHWWHKKKKKKKKKKKKKWWWWWWWWWWWRRRRRNNNNNNNNNNNEEEEZZNNONNNOOOWWWKKKKRRRRRRRRKKKKKFKKKQQQQQKCCWWCKKKKKRRRRRRJXXXTGGGGGYYDDDDDDDDDDDDDDD
|
||||||
|
FBBBBBHHHHHHKKKKKKKKKKKKKWWWWWWWWWWWWRRRRNNNNNNNNNNNEEEEZZNNOOOOOOOWOWKKKRRRRRRRKKKKKKKFFFFQQQQQQWWWCCCKKKRRRRRRRXXXXXGGGGYYODYYDYYDDDDDDDDD
|
||||||
|
BBBBBBBBHHHHHKKKKKKKKKKKKWKWWWWWWWWWWWRRRNNNNNNNNNNNOOEEEZNNNOOOOOOOOWWUKKCCRRRRKKKKKKKKQQQQQQQQWWWWCCCCCKRRRRRRXXJJJYYGGYYYYYYYYYYYYDDDDDDD
|
||||||
|
BBCBOBECCCHHKKKKKKKKKKKKKKKWWWWWWWWWWWRRRRRRRRRROOOOOOEEEZZNSOOOOOOOOUUUCCCCRRRIIIKKKKKKQQQQQQQQQQCWWCCCCRRRRRRRXXIYYYYGGYYYYYYYYYYYYYYYYYDD
|
||||||
|
CCCCCCCCCCCKKKKKKOKKKKKKKKKWWWWWWWWWWWRRRRRRRRROOOOOEEEEEZZSSOOOOOOUUUUCCCCCCCIIIKZKKKKKKKQQQQQQQQCCCCCCWWWWRRRXXXIYYYYYGYYYYYYYYYYYYYYYYYDD
|
||||||
|
CCCCCCCCCCKKKKKKGGGGKKKKKKKWWWWWWWWWWWRRRRRRRRROOOOOEEESSSZSSOMMOOOOCCCCCCCCCIIIIKKKKKKKKIQQQQQPPQQQCCCCCWWRRRXXXIIIYYYYYYYYYYYYYYYYYYYYDDDD
|
||||||
|
CCCCCCCCCCCKKKKKGGGGKKKKKKWWWWWWWWEWWRRRRRRRRRRROOOOOOSSSSSSSMMOOOOOOCXCCCCCCIISSSLLLKKKIIQIIIICCCCCCCCCCWWRRRXXXIIYYYYYYYYYYYYYYYYYYYYYDDDD
|
||||||
|
CCCCCCCCCCCCCKKGGGGGGGKKKKWKWWWEWWEEEGGRRRRRRRUOOOOOOOSSSTSSSMMOOOOOOOOOCCCCCIISSSSLLKKIIIIIIIIICCCCCCCCCCCXXXXXXXIIYYYYYYYYYYYYYYYYYYYDDDDD
|
||||||
|
CCCCCCCCCCCCCCTGGGGGGGGGKKKKEEWEEEEEEGPRPPPRRUUOOOOOOOSSSTSSSMOOOOOOOOOOOCCCCIIISSSSSIIIIIIIICCCCCCCCCCCCCCXJXXXIIIIIYYYYYYYYYYYYCCYYYYDDDDD
|
||||||
|
CCCCCCCCCCCCGTTGGGGGGGGGKKEEEEEEEEEEEPPPPPPRUUOOOOOOOOOOSOSSSOOOOOOOOOOOOOIICCISSSSSIIIIIIIIICICCCCCCCCCCCCJJJXXIIIIIIIYYYYYYYYYCCCYYYDDDDDD
|
||||||
|
CCCCCCCCCCCGGGGGGGGGGGGGKKEEEEEEEEEEEEEPPPPRUUOZOOOOOOOOSOSSSOOOOOOOOOOOOOOIIIISSSUSIIIIIIIIIIICCCCCCCCCCCJJJJJJIIIIIIIYYYYYYYYYCCYYYYYDDDDD
|
||||||
|
CCCCCCCCCCCCGGGGGGGGGGGGKKKEEEEEBEEEEPPPPPPPPOOOOOOOOOOOOOOUOOOOOOOOOOOOOOOOIIIIVVIIIIIIIIIIIIIIICICCCCCCCCJJYYJYIIIIIIYYYYYYYYYYYYYYYDDDDDD
|
||||||
|
CCCCCCCCCCCCGGGGGGGGGGGGGKKKEEEEEEEEEPPPPPPPPOOOOOOOOOOOOOOUOOOOOOOOOOOOOOOOOOIIIIIIIIIIIIIIIIIIIIICCCCCCCCYYYYYYIIIIIIIYYYYYYYYYYYYYDDDDDDD
|
||||||
|
CCCCCCCCCCCCGGGGGGGGGGGGGKKKKKKKEEEECPPPPPPPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOIIIIIIIIIIIIIIIIIIIIICIICCCCCYYYYYYYYYYYYYYYYYYYYYYYYYYYDDDDDD
|
||||||
|
CCCCCCCCCCCGGGGGGGGGGGGGGKKKKKKKEEECCCCPPPPIOOOOOOOOOOOOOOPOOOOOOOOOOOOOOOOOGGGGIITIIIIIIIIIIIIIIIIIIICCCYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYDDY
|
||||||
Reference in New Issue
Block a user