LeetCode 分类练习(4)—— set 和 map 在解题中的应用
来源:互联网 发布:淘宝义卖作文 编辑:程序博客网 时间:2024/06/10 19:03
349. Intersection of Two Arrays
Given two arrays, write a function to compute their intersection.Example:Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].Note:Each element in the result must be unique.The result can be in any order.
给出两个数组,写一个功能来计算他们的交集
注意:在结果中每一个元素都是独一无二的,结果中的元素可以是任意顺序
package com.leetcode.array;// 349. Intersection of Two Arraysimport java.util.*;public class Intersection_of_Two_Arrays { public int[] intersection(int[] nums1, int[] nums2) { if (nums1.length == 0 || nums2.length == 0) return new int[0]; Set<Integer> set_1 = new HashSet<>(); for (int num : nums1) set_1.add(num); Set<Integer> set_2 = new HashSet<>(); for (int num : nums2) if (set_1.contains(num)) set_2.add(num); int[] result = new int[set_2.size()]; int i = 0; for (Integer num : set_2) result[i++] = num; return result; } public static void main(String[] args) { int[] nums1 = {1, 2, 2, 1}; int[] nums2 = {2, 2}; int[] result = (new Intersection_of_Two_Arrays()).intersection(nums1, nums2); for (Integer num : result) { System.out.print(num + " "); } }}
350. Intersection of Two Arrays II
Given two arrays, write a function to compute their intersection.Example:Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].Note:Each element in the result should appear as many times as it shows in both arrays.The result can be in any order.Follow up:What if the given array is already sorted? How would you optimize your algorithm?What if nums1's size is small compared to nums2's size? Which algorithm is better?What if elements of nums2 are stored on disk, and the memory is limited such that you cannot load all elements into the memory at once?
给出两个数组,计算他们的交集。
注意:每个元素的出现次数应该和他们在数组中出现次数相同。结果可以是任意顺序的。
package com.leetcode.array;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Intersection_of_Two_Arrays_II { public int[] intersect(int[] nums1, int[] nums2) { if (nums1.length == 0 || nums2.length == 0) return new int[0]; Map<Integer, Integer> map_1 = new HashMap<>(); for (int num : nums1) map_1.put(num, map_1.getOrDefault(num, 0) + 1); List<Integer> list = new ArrayList<>(); for (int num : nums2) { if (map_1.containsKey(num)){ if (map_1.get(num) <= 0) continue; list.add(num); map_1.put(num, map_1.get(num)-1); } } int[] result = new int[list.size()]; int i = 0; for (Integer num:list) result[i++] = num; return result; }// public int[] intersect(int[] nums1, int[] nums2) {// if (nums1.length == 0 || nums2.length == 0)// return new int[0];//// Map<Integer, Integer> map_1 = new HashMap<>();// for (int num : nums1)// map_1.put(num, map_1.getOrDefault(num, 0) + 1);//// Map<Integer, Integer> map_2 = new HashMap<>();// for (int num : nums2)// map_2.put(num, map_2.getOrDefault(num, 0) + 1);//// Map<Integer, Integer> map_3 = new HashMap<>();// for (Integer num : map_1.keySet())// if (map_2.containsKey(num))// map_3.put(num, Math.min(map_1.get(num), map_2.get(num)));// int size = 0;// for (Integer count : map_3.values())// size += count;//// int[] result = new int[size];// int i = 0;// for (Integer num : map_3.keySet()) {// int count = map_3.get(num);// while (count != 0) {// result[i++] = num;// count--;// }// }//// return result;//// } public static void main(String[] args) { int[] nums1 = {1, 2, 2, 1, 3, 3, 4, 3, 2, 4, 2, 5, 3, 2, 1, 3, 2, 1, 2, 0}; int[] nums2 = {2, 2, 3, 1, 32, 21, 1, 1, 1, 1, 3, 12}; int[] result = (new Intersection_of_Two_Arrays_II()).intersect(nums1, nums2); for (int num : result) System.out.print(num + " "); }}
242. Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s.For example,s = "anagram", t = "nagaram", return true.s = "rat", t = "car", return false.Note:You may assume the string contains only lowercase alphabets.Follow up:What if the inputs contain unicode characters? How would you adapt your solution to such case?
给出两个字符串s 和t,判断 t 是否是s 的一个字谜。(字谜指t与s中的字母出现次数相同,但出现顺序可能不同)
注意:你应该假定字符串只包含小写字母
package com.leetcode.String;import java.util.HashMap;import java.util.Map;public class Valid_Anagram { public boolean isAnagram(String s, String t) { if (s.length() != t.length()) return false; if (s.length() == 0 && t.length() == 0) return true; Map<Character, Integer> map_1 = new HashMap<>(); for (int i = 0; i < s.length(); i++) map_1.put(s.charAt(i), map_1.getOrDefault(s.charAt(i), 0) + 1); for (int i = 0; i < t.length(); i++) if (map_1.containsKey(t.charAt(i))) map_1.put(t.charAt(i), map_1.get(t.charAt(i)) - 1); else return false; for (Integer count : map_1.values()) if (count != 0) return false; return true; } public static void main(String[] args) {// String s = "anagram";// String t = "nagaram";// String s = "rat";// String t = "car"; String s = ""; String t = ""; boolean result = (new Valid_Anagram()).isAnagram(s, t); System.out.print(result + " "); }}
202. Happy Number
Write an algorithm to determine if a number is "happy".A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.Example: 19 is a happy number12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1
思路:当某个结果出现不止一次时,将陷入无限的循环
package com.leetcode.number;import java.util.HashSet;import java.util.Set;public class Happy_Number { public boolean isHappy(int n) { Set<Integer> set = new HashSet<>(); int result = countSquare(n); while (true) { if (result == 1) return true; if (set.contains(result)) // 重复出现时则无限循环 return false; else set.add(result); result = countSquare(result); } } public int countSquare(int n) { int result = 0; while (n != 0) { int temp = n % 10; n /= 10; result += temp*temp; } return result; }// public boolean isHappy(int n) {// String s = String.valueOf(n);// Set<Integer> set = new HashSet<>();// int result = countSquare(s);// while (true){// if (result == 1)// return true;//// if (set.contains(result))// return false;// else// set.add(result);//// s = String.valueOf(result);// result = countSquare(s);// }// }//// public int countSquare(String s) {// int result = 0;// for (int i = 0; i < s.length(); i++){// result += Math.pow((int)s.charAt(i)-48, 2);// }// return result;// } public static void main(String[] args) { int n = 19; System.out.print((new Happy_Number()).isHappy(n)); }}
290. Word Pattern
Given a pattern and a string str, find if str follows the same pattern.Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.Examples:pattern = "abba", str = "dog cat cat dog" should return true.pattern = "abba", str = "dog cat cat fish" should return false.pattern = "aaaa", str = "dog cat cat dog" should return false.pattern = "abba", str = "dog dog dog dog" should return false.Notes:You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.
思路,将pattern 中的 char 和 str 中的单词分别作为 key 和 value 放入 map 中,若相同的 key 对应不同的 value 或是相同的 value 对应不同的 kay ,则返回 false
package com.leetcode.String;import java.util.HashMap;import java.util.Map;public class Word_Pattern { public boolean wordPattern(String pattern, String str) { String[] str_arr = str.split(" "); if (pattern.length() != str_arr.length) return false; Map<Character, String> map = new HashMap<>(); for (int i = 0; i < pattern.length(); i++) { if (map.containsKey(pattern.charAt(i))) // 在 map 中包含 pattern 的字符 if (!map.get(pattern.charAt(i)).equals(str_arr[i])) // 但 pattern 中同一个字符 // 以前 和 现在对应的 value 不同 return false; if (!map.containsKey(pattern.charAt(i))) // 在 map 中不包含 pattern 的字符 if (map.containsValue(str_arr[i])) // 但 pattern 中不同的字符 // 却对应了相同的 value return false; map.put(pattern.charAt(i), str_arr[i]); } return true; } public static void main(String[] args) { String str = "dog dog dog dog"; String pattern = "abba"; System.out.print((new Word_Pattern()).wordPattern(pattern, str)); }}
205. Isomorphic Strings
Given two strings s and t, determine if they are isomorphic.Two strings are isomorphic if the characters in s can be replaced to get t.All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.For example,Given "egg", "add", return true.Given "foo", "bar", return false.Given "paper", "title", return true.Note:You may assume both s and t have the same length.
与上一题思路相似
package com.leetcode.String;import java.util.HashMap;import java.util.Map;// 205. Isomorphic Stringspublic class Isomorphic_Strings { public boolean isIsomorphic(String s, String t) { if (s.length() != t.length()) return false; Map<Character, Character> map = new HashMap<>(); for (int i = 0; i < s.length(); i++){ if (!map.containsKey(s.charAt(i))){ if (map.containsValue(t.charAt(i))) // 两个字符映射到了同一个字符 return false; map.put(s.charAt(i), t.charAt(i)); }else { if (!map.get(s.charAt(i)).equals(t.charAt(i))) // 同一个字符映射到了不同字符 return false; } } return true; } public static void main(String[] args){// String s = "egg";// String t = "add";// String s = "paper";// String t = "title"; String s = "foo"; String t = "bar"; System.out.print((new Isomorphic_Strings()).isIsomorphic(s, t)); }}
451. Sort Characters By Frequency
Given a string, sort it in decreasing order based on the frequency of characters.Input:"tree"Output:"eert"Explanation:'e' appears twice while 'r' and 't' both appear once.So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
思路,使用 map 统计字符的出现次数,使用 桶排序的思想进行排序
package com.leetcode.String;// 451. Sort Characters By Frequencyimport java.util.*;public class Sort_Characters_By_Frequency { public String frequencySort(String s) { // 统计 s 中的字符出现的次数 char[] ch_arr = s.toCharArray(); Map<Character, Integer> map = new HashMap<>(); for (char ch : ch_arr) { map.put(ch, map.getOrDefault(ch, 0) + 1); } // 桶排序 bucket List<Character>[] bucket = new List[s.length() + 1]; for (Character ch : map.keySet()) { int count = map.get(ch); if (bucket[count] == null) { bucket[count] = new ArrayList<>(); } bucket[count].add(ch); } // 构造返回结果的字符串 StringBuilder stringBuilder = new StringBuilder(); for (int i = bucket.length - 1; i >= 0; i--) { if (bucket[i] != null) { int count; int list_size = bucket[i].size(); while (list_size != 0) { count = i; while (count != 0) { stringBuilder.append(bucket[i].get(list_size - 1)); count--; } list_size--; } } } return stringBuilder.toString(); } // TLE// public String frequencySort(String s) {// if (s.length() == 0)// return "";//// char[] ch_arr = s.toCharArray();//// // 统计 s 中的字符出现的次数// Map<Character, Integer> map = new HashMap<>();// for (char ch : ch_arr) {// map.put(ch, map.getOrDefault(ch, 0) + 1);// }//// Map<Character, Integer> result = sortByValue(map); // 根据 value 对 map 进行排序//// // 构造结果字符串// String result_str = "";// for (Map.Entry entry : result.entrySet()) {// int count = (int) entry.getValue();// while (count != 0) {// result_str += String.valueOf(entry.getKey());// count--;// }// }// return result_str;// }//// public static <K, V extends Comparable<? super V>> Map<K, V>// sortByValue(Map<K, V> map) {// List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(map.entrySet());// Collections.sort(list, new Comparator<Map.Entry<K, V>>() {// public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {// return (o2.getValue()).compareTo(o1.getValue());// }// });//// Map<K, V> result = new LinkedHashMap<K, V>();// for (Map.Entry<K, V> entry : list) {// result.put(entry.getKey(), entry.getValue());// }// return result;// } public static void main(String[] args) { String s = "Aabb";// String s = "BabBbBbBbbABBABBbAabbbABBaBbBabaabBbbBAAaaAbbAABaAbBBaAaaaaBABbaBbAAbBBbbABBaaBBbabAbBBAAbAbaaaBrBBaAaabAbbBbABabABaBabBBBBBaAbAaABaaaAAaAgAaAaBAbaBaBaBbbbBbABBBBaaaBbbbAbbbBaBBaAbBBbbaaaaaBbbaaAAbAABBABBaAAABBbbBbBbbBbaABBAAbBAbabbbabwBbbBArABaBBbabBaBabABABaabBBABBAabBAAaabbbbBAababAaBaaAaBbBbBAAbaBabBbabaBaaBbaabABAbbBbaBAbabABbbaAaBbAAAbBbaabBBAbbbABbaabAAAaaaBaBaaaBBABbBAbAAbaABaabbbbBBAabbbBABBbaABBAAAabaAbaBAbbaBaBbAbaAAbBaBAbAabBBbBsBabbbAaBbabAAaABAaBAAAbbaBaAbABABBBAbABABbbbBaaBaBAbABAbaaAbBbAABBbAbbAaBbabaBbABAAbAABbbAabAaAaBbBBbAAbBbaaaBAbABBbBBaCabBBabBAaBbBaAbbBAbbBaBAabBAababAaAbaAaabBBBABabaabBAAAabBAAAbBAbAaaaAbAaBaAbbAaABABBbBBAABAabaAAbBaBbAAaabbABBBABaBAabAbAAbBbAabAbaBbAbBAABAABAAAbBaaaaBabbaBABBaABbAabBaBAbAbbABAbaAAbaAAaBaabaBbBBbBABAABBABBaabBBbBBABAAaAAbbBbABBBbAabAbABbAAAbbAbABbbAbBAbabbbBBBBbAAabaabBABABaaAbaBBBBbbABbBbBABBaAbAaBBABBBabAABBBBBbBBabBaaBbaaBaBbaBbbAABbbAaaBBBbabaabBABABBBGabbBAbaBabAaAAabbbBaabBBbABBabBabbBbAbbAaBbAaAabBabBBbaBLaAbbAaaBaabAAabbABAAAAAbaAbaAabaAaAbaAbBbBAABbbbaBABbBBAbaaBBbaaAbbaAaaJAaAbAbbXBABAABABbbbBaAABaAAaaaabbbbBaABbaAbaAAbAaaBAaaAbbBaaBAabAbbAbBAbBaaaaaabBBaaabAaaAAaAaabBAaAaaAABbbaAAababBBBAABbAAbBBbAAaBAaABabaAAbABBbAAbBBbbBBBBAAaAbbBBAbaHbAaAbrBBAaBBbbabAbBaaaABAAAaABaBBbBbBBabBBBbBBBAbAaAaaBbAbABaabBbBBAAaaAAabAaaabbHAabABAbaBBBbBAaAabbbarbaBbbaAbaBAaBBAbbBaBbBABBAAbAbaABbABbBBAABaBBbBAAAbaaBAabBaBBaABAzBAbAAABBAAaabAaAaBAbABaABaBAbbAaBbbAbbbbbBaAABaaBbabbbBABbbAAAbBbBBBaBBbAaAbAaABaaAbbaaAabaABBaAabbbABBbAabBAabaabABBBBABbBBaabbAaababBAbabbBaaAAabBBBBbBBBbBAAAABaaBBBAAbAaAAAABaabbaaAAbAaABaaaBbaAAaABBAAbbBAaBBAAaBBBaaaAaBAaBAABbBBBAABAbBAababBAbABABbbbaBbABaaaBbbaaAABBBAbAbAAAabbBBAbBaBBaAAbBABaABVbAABbbAbBaBbbBBAAabbBbAabBbaabbbbaBaaBBBabbaBbaaABaAABaAaaBbbBAaABAbaBAAbBabBABAaAAabbaaaBaabbbbaAABaAbBabBAbBAaaABaaABBAaAbBbBBaAABBAaBBAbABAbAbBAAbBbBAAaABbAaaABaabAabAAbabAAaAaBAbBaBBBBBbaJaabBAaaaBBbPbaBAbabAaAABaAaBaaAABBAbbbAbbaBAbbaaAbaBaaAaabAbabAbAbbAAbbBbBBbbbaaaaaaabAbbBBaBbBaBAAAAbBAaAaaBBaBaBAbBBAaBAaABbbAAbAabBbABBBaaaBBabbAAbABBbBAbbbabBAaBAAAbAbABAaaAABbbAAABBbAabaBBBAaAaBBaBBaAAaaBaAbABbBbabbabaBBabbBBAbbaABBaBaaBbaabaAabBaBbAAAabbAABBAbaAaaBbAAabBAbAbbbBAbaBAaabBAabbAAaBBAaBBBBAabBBAAbbAaAAAaAbbaAbbBABbAbabbbAaAAABbbbBaaaBBAbbBABbbABAwBAbBbabABaaaaBaAABbABABAABaAabaaBbBBaaBbaBAABbAAaaABaBbAbBaaAAbAABbBabbABBaabAbbbAbBAbaBAABABbBABAbaAAbAbbBabABBAbbAaababbaBAAaBBABBaBABABAbaaBAbABbbBgaAAAbaaBaBbBAAABabaBbBAAbabaBBBbaABbAAaAaaaaAAbbBbaBaAbaBabaBBAbaaaAabbAAaaabeAbAbBaAAaaaAabbBAaBabABaaabbbAABbabbAaabaAAaabAabbaaabbBbAbBBABAbBbbABabAbABaaAAAbaBAAbabaEAAbBBABAabAbabAAaAaAaBaAaaBaaAAaaAbbbabaaAABabAaAAGaAbAABaBBabbaBAbAabAaAaBBAabkbBBBbAABabbABBaBbAbBbAaAAbbAaBAaBbABaababABBBabbaBBrBAbbaBBBBbBabBaABBabbZbbaBBBaBABaaAAbbAABbABBAABabAbbbbBBbBBbbAaaBaabABAaBBaBbAnABBBbbBBAabbbbbabBaaaBBBAbAabbABaBBAaAbBbbbAAABBbRAAAAABBabAAbaabbbAAbBAAaAbBabAAbAbaabAaAABbbaBAbaBbaaabBaBbBVAAAaABABaaabAAabbBAbAbABBbabaabaabBaaAbAbbbaaBbbbBAAabbbBAaabBBbAaABbAAaaBBbaAbaBAbABaaBbbBaBaaabbBbaaBbbBBbbAabBaaBabAbaBABAbAabbAAaABAbbBBbaBaBabBaabAAabaAbbBaBbBAABBABabBbbBABabAABabAaaabBbABbaAaAbaaBABbaAbBbbbbaBbabBaBAaAbaabAbbabaBBaaaaBaAaaaABBBaBBbaaBbAAbaabBbaBBbAbbAABBABAAhBaBAbAaaAaaabBbABAAABBAbaAbbBAabBBaaABababAbbbBBBAaAaBbAaaBabBAAAAaaBBBBaaABbBbbBaAbabAbaAbAaaAabbBaABAabbBAAAbBAaaBbAAbbbABaBBAaaBAABABaAaaBaaAABAbBBaABABaAbAABAbbAaAaAbAaBBAAbbbbaaabbaaBbbrXbaBbaBAABBBbabbbAaAabAaABBBbABAAABbbaBBAAbbBBbBAAABaabAbaAbababbabaBaAbAaaAAabaBBBBAaBAABaBAabAaaAaBABBBaBbbaaABBaAABBAaabBAbAAAbbAAAaabAaabbbBbBAbBBYbBBaGbaBaBabaAAaBBBABbaBaaaBajbBABBBAakbbBBaaaBbBaBAbbAAAbBaAaAAabBaaabbababaaabAaaBBAbbbabaBabbBBbBbAbBBAbaAbbAABbbBbaaBBbABBbbbbABAbbBBBABAIbAaBBaBaaBABAABArBAaAAAbbBAABabbAMBaaBBBBAAaBBAaabbbbbAabaGbaABBaaaBBBbaAbBBAaBaabAaabaabAaABAbBBAabaBBbBbBbBabbABaaABbabAbBAAbAabaaaaaaABabBbbbAbBBABaABAaBABABbaBbABBbAaBBAAabbBbaaabABAabaAaBBaAaaaAbbbabbbbBaABBAABbBbeBAbaabBbBABBBBBaABaABbbAbBAaabABBbBbbaaaabaaBaABbAAbbAaAaAabbbBbaBbbBAabABaBbBbBaBAaAAAAbABBAAbBAAAaABaAaAAbABBbAabbBAAQbabbABbAAbbBBBaaaaAaAbABAbaaBbAabBAAaAAaAbBaaBBBaaaBaabaabBaababBAABBaaABBbbAbAABBbBbbABBAaBbbABAAabbAcaAaBbBaBbBABABaAaAbBbaBAabBaaaAaaaAABABBaaaaaBABAaababbbabBbAAbbBaAdaAaAaaAaBAAabaaBBbBbaAaBbabaaBbBbBbBAbAaAaBABABABBbBAAAbbBBaaAbaAaAAaBabAlBBBAaBaBBaBobBBBAABaABBBABBaaBBaBaABBaBbaBBAbAaAbaBBBabababAbBbBaaBbBAAAaABBBAAAbBaBBbAbBBbaABABBBBaaAbabAbbbaBAbABBbAAbAbabBbabaAAAbBAjbBAbaBbBAbABAAbabAbaBAAaAaAbBBbaAbAAaBAbaaAAaaAbaBaaaBBBBbbaaBAaBBabBaabbbbbbaAAAbBBAaaaaaBBbaaAABBAaAbaBbabBBBaBBAbABbbBABabbABbabbBbbaabaBAaAabBAAbAaaabBaBabbbaaBBbaBaBBABAABBbbAABbaBbbAAaAaaaaaBbbAabBbaBaaabBAabBaBaFBAabBrabaBbaABbABbabAbaVaAAAabBbaBBAAAbbaBBaaABabaabAaaABBBbBAAaabaBbaBBBAaAaBAbAAbBBAAbAaBBababbaBABbbABBBABbbBAABAaBbbBBaabAbbBAaBbbabbaBBAAbabbaBBBbaBAaBaaBbbBBbbBbAabBBbbbaabAAAABaBbBBABbBaBBBAaaAabABBbbBbbabABbAbbbaaAaAAbaABaaAAaaAbbaBBAAbabBbababBaAaBBBbABbbBaaaBabaBaABbaBabBAAaZABAbbaAaaBbBAbbABbBBabbBABaBBababABaaaBABabaBAbaABBaAaBabbbABbabAAABAAAFaABBBBaAAbBbAAbbBAABaaAbAbabaBAaAAabABBAAAAbbBABaabbAaBaBbbABBbAAbAbbABABaBAabbAbaBBBbAbABABbbaBAbaaABAabaaabAbaAaabAbAABBABaBbBBbBbbAAbAbabAaaBbBbBbaBBabBbBBAAabbbZaaAbaAABBAaBaBbabbBBbbAbAaBBABABbbaAaaAaBBBbaalbbaBAbBaAABBbbBbaaBbabaaaAaAbAaAbAbBaBbaBbaAAAbBbAbbABBaaAAAApaaAbAALBbBbBaABbbbaAbBAbAbabAbAbbAbabaabBBbabAaaBBbaaaABAaAabBAbAaaBAABBBAAbBAaaBBABABaBbAbAabBBAAabAbbbbaBAAbBBabbaAAabAbBbAABBaBbBAAbaBBAABbbABAaAbAbabBAaabAbbAabBABaAABAaAaBbBBBbaaAbABBaAAbaaaAAabBBBAbaaBAabBBABbbAaaABbaabaAbBbABbbAbBAABbBbbBBbBAbbBBBBbBbaBAaBAABABbAAaaaBBBBAaabBAbbbbabaaaaBBabaBBAbAoBBBBbaBaAbAAbAaBaababBABbbBaabABaAaBBAaabBBaAABbbAabababbabbbABbbBabaabAbaBAaaaaBaabBbbAbbaAAbaAAabAABbaBaABABbaBAbaabBAaBaBBBBBABbaAAbbaAAAabbbgaBABBAbabbbaAabAaaAgBBaAaaABABBBabBaBabbaabaAAaAABaBBABAbbaabABBAAaAbAbabBabBaBbaABbBBABBaAaabbbbBBBaAbAAbABAaAABABbbABbabBabaBABAaBBbAaBBBBbbAbBBAaaBBBaBABaAAAaabBbaBbbbabbABaaaaBaaBAbABaBabAbBAaAbaAABBaabaaBBaBaaabBaAabABbBaabAbABBBbBbabBBbaAaBBUbBaBBabBBaBaabAAbBbaBBaBBAbAaBbAAaAaAbbbababBababAAaAAabaBaBaaBbBbBaBaaaABABbBBAbaBaABBABBBaBbaBABBBBbabBBAaBAaabbBbaabbaABBabbBbAabbaBAABaBaAABabAAbaaBbaAbabBBbBbaaABBAAAbAABaBaabaAAAAABaabAAaBbaaBAaAaaaAbBaAaaBaBaAAaaBABAAraBBAabBaABbaBaBBAaAABaAAaAAbaaabBABbAabABbBabBbbbBaaBABBBabaBBBaaBaABaaaBbabBAABbaaBBbABaaaAbaBbAAaAaaaaBaaBAAaAabbbBBqBbBaaBbaBBBBAAabbAbaVbaaBBbBabBbabbabAAaABaaaAABabBbbbBBaABabbabbABAaABaBaAAbBaAaAaaABabbaBBabaBAMBbBBABaAaAbbAbbAABBaABAaBAbBABbBABByaabbAbBABAAbBAabaaAbAabbbBaBbAbabAAbbAbbbbaAABabaAAAAaBabBBbAbaaaBaaaabMBBAbAbabAeAaBAbBaBababbADBaabABbAaAabAabBbaaaaAbbBBBaAABaBAbBBABABbbbAaBABAbbBBabBAbbBBBBAbBbbbAbAbaABaBDbBabBBBbAbaABababBbaBBBbbBBAAaAABBBABBaaBBBaAaBAaBbbbBBaBaaAbBbbAaBbaAaaABAaBbAAaABAbABAABabbbabBAaaBaBaAaabBAABAabaaAAbbyaabAbAaAaBaAaaabaAbBBAabaAAbbAbABbBbABABAaAabaaBabBabbabBabAbbaAbBbabbAbAaBaaaAaBBBBabbBbaabbabAaaBBabbABbaabbAabAabbBaBBBabaaAABbAbabbBABaBaAbbabbBBbBBbAAaAbbAaBbBbbBBaBAABBBaABAaAabaBaAABaAbaAaBbbbBbbBAaBBAAAaAaAaBAbBBBbabbABaAbWaaabAaBBBbAABBBAaBbAaababaLAbAaABAaBbbBBbbAaBbBAaAAbbAabaBabAAaABAbbaabxbbBababBBbbBbababBBaBabBbBbbBABBABABbbBBaAbBbABBBBABbBABAAaBBaaBBAAbbBBbBaBaAaBBaabBabBAbbAABbAABbAaAabbBbbBabbaAaBAaAaBbAbBbbBaBaAaBAbBAAaBBBaBbGAABAABaABaBBAbAAaAABABaBaAABbBaaABAbBaAABaBAbBAaBbaBbBbBaBABAaaBAAaaBBaABBABAaaaAbAbAABBBBBaABbBbBaBBbaBbABBAaBaBYaBaAbBAbaAaaBBbAbaABBbaABABaBaBAbbBAAAaBBaBaabAaaBBbbBbBBbBabBaaaAbAaBAbaBaBBbBAbBBBbabbbBAbbaaBAaabBbBAbAabbBBbbabbBAabbaaAbaabAAabbBAbABaaaaBbbababAaBBBbbabBAPAaaAbbaAAbAAaAbaBAAAbbABbabAAAABBbbBbbbABbBAaAbbaaBbBbAaaAaaBABaabBbaaBabABbABBBbBAbbBBPBBaAAaabAaaaBaaBbABAbbBaBAaBbAaaBabbaaBBBBBBbbbbbBBbAabbABAAbBAbBAabaAbBAbAaAbbbBAAAAbbbABBbaabaABaaAbBAbBaAbBaAbbbSAbaABbBAAABaABBBaaAbABbBBbbABBaAAbaBAaaABBBaabbBbABaaabAABBBABaAABaBbaaaaaAaBbBAaaBbAbABAABBabBbbAbbBaaAaBBaabbbaBBbbBbaIbbaAABBBBbAbBbaBAabAAaBaaAaAaaAAAAbABAaAABAbBBbaaabababaAAaBbBAbBbbBaaBaBBbbBaaaBABbBaAabBAabbAaBAAbbaaaabaBAbbabbBbBABbAbAAAAbbabaAbAbAaBaabbaaBaAaBbBAaaBABAAaAbIbaABAbBaabBBaBBABbABAbaBarBAabbBBABbbbAbAAAAbAAbBabbAAababAAAbBaaaABBAaAABbaBaAbabBabAaAAbBaAbBAAaAABAAbBaBBAAAabAabbAAaaaBBbaABAABBBBBaABAabABbbBbBbABBAaaBAabBBaaBAbBaaaAABbaaabaBaBbBaaAAabaABabAABabBBABaaBaAbbabaBaAaAAAaabAbAbbAAbaaBbAaaBBbbAbBBabbaabaaabbabbabbBBbbABaBaaAAaBBaaAbbbbabAAbbBaAABbBbbAbABAAaBbBbABaBABABABaAAABbABbaaaabBaABaAbbbbaAaABAAaAbAABbaaAabBabaBbbaaaabBAaAabBBaABbBbBbBbABBbAbBABbbabBAAaAaAaaBAAaAbaaBbBaBAbAAaabBBBAbbbaaBaabpBbAbAbAaaBbABaabBbaaBaBaaBbAbAaABAABBbAabaaAbabBbbbaBBaABaBaAbbbbBaBaAbaBBAbAAABIaaBBAaBbaBBrbaaAbabAbABaaABabAAaaABaabABBbAAbBbBAbbAbAbBbbbbbBbaAbbAAabbABaaAbBABBabaBaAAAbbBAbAABaaaABabbaabBaBBbbbbbbAAbABbbAabaaaaBBAaBABAaabbABAbABAABbBBbaABaBBBObaaababAbBbAbbbbbbbBaBAAaaBBAbAaAAbBABaAAaBbbbAaaBbBBabAAABBabbAabbaBaAAAaBBBbbBBbAbaBBAbBbabAAaaBaBbBbaAABaAbbBABbBBABbbAbbbAbbbbaaaAbbabAbabaBBaaaabAAAaAbBABABAaBBbbaabaABABaAAAaAABABBbBBBBAaAbBBBBAaAaaaaBbaAAbaaBBBaaaaBBBaBWAabaBbBBabaaBBAbaaAabBaaAAAabbaBABBaAaabbABabAbBBaAbaAbBabbbBABaBBABaabBbaAbBbbAaABaaBbbbAAabBbAAbaAAAaBbaBAAaABABbABbBAAAaAbBaABABbAaabBaBAaABABbBAAbabAbbAaBBBBabAabbABAaaABAbaaBaaABAAbaBabAbBBaBbBaAbaaBBaaabaabAaaBAAABbaaaaBAabBbAbbAaBaaaaaBBBbbabAbbBaBBAabBABbAbaAAABaBaaababbBBBbabbaBaABbABbBBBBBAABBAAAaAbBBAbaAabAbBBABABBaaaBbbbABabbBAAbAabaBAbAABAaaAabaBabaBbAAbBbbaaAAAFaBaaBABAAbabaaabBaaBAbAbBabABBaAAABaaAAABaAbBaBABAbpBBAbabAabBAaBAAAaBbaAaAPBAaAabbBAbaaaAbaBBbbABaaBbbaBAbaAABAabaAbabbbBaaBaaaBAAaaBBaABaaaBBaBbBBbBbbgbabbbBabAbaAbbAABBababBbbBAbAAabaBAaABbaAAAABbbEaaBabbBBbbaaAbBBaAABBbaAAaBBbabaaBaAabBAababbabbaaAbBABbAAbBbAabaBAAbBabSBAabaBaaabAbbaBaaBbBbAbBbBBBAaBBAbAAbABAbABbbAaABaRABbaBbbbaABbBbBAaBbBaBdBbabBBababAAABBaabBAaAbBAAbabBbabBBaBaABaaaAAaBaABABAbBaBabBBbbABBaAabaBbaBbbaaAaABAbbABBAbabaABAaABaAAaAababaABAABAbaBbbabaaBABbBbAaBAabbABBaabBAaBbabBaBAABbBAabaAAebAbaBaBbDBaAABAAaBbAAbABaAaAbBAbaaaAababaAaaUbBaBbABaABABaaaBbAaabBABaBAabaaaAABBAabbabBAbAAabBaABbaAaaaAbaABaBAaBBbBabaaaaaBAAaaBabbbAaBAAaaBaBBaAaabbBaBbABAbABaABBabbbBaabBBbBBBBABbAbabbaAbBbBBBBbbAAbAAbABBbbAbBBbAABBbbbaaAaAabbBBbAbbBBBBbAabaAbBBaaaaBbAAabBbbbaPABBaAAABabAAAaABbbAbBABBAwBbaAAAaBaAAAAAAAABBBBbBbbBaabBABABBABbAaaAabBbbbBbabaaBBBBBAabbABaAbbBBabAAbAAaaBAAbAaAAaBbABbBAbaaBbaBbbAABAaaaAAaABAbBabaABBaBBBaBbQaaBAbABBABBBaBbBLABBBbabbBbAbAAbaBaaBaaBBABbaBaABBbabbbaAaBBaBAbBAbAAbBbBAbBaAAybBBbaBbbbBAAABaAbAaBBbbABaabbabbAABbbBbAaAaaBbbABBAaAbbaBAbBaabAAAbbaAAbBBaBBABBbBBaAAaAAAabBBaAABbbBBabBaaaAbAaabbAbaabbAbBaBaaBBAbBaBAAAAAABbABaBAAaAaAaAAaabbaaAaAbbaaAabBbBbBabbAAaBoabAAaAasabAaAabBBBbABBABbabaAbABabBaabaABbbABaBbAABAAAaBebAAbAABabBabABbaBbaabAABbABabBAbBaAABbbAbAAABAaBAbaAAbaAAbaaAbaAABbaBbbBbAABAbbBaaAbbABBAbaAaabAabaAAbaBaaaAbAaBbaabaABbaBbbAbAABbBBBBAbbABBaBbaAbbaABbaaBABABbAaBbAABAAaBBBbBbAAbbaABBAAABbabABbBBABAAbbBAbaabBBABAabbaaabBBbBBBbbBbbAABaaaBAaaaaAAabAbAAbaaaBabAAaaabBbAbAcbAAaaaAAaBBbAbaAbabbBAaawABBBBAaBAbbBBAAABabaaAbBaAbabBbbBBAaaaaaAQbbAaBAaaBAAbAaBxBAaBBabBbBaAaBABaABABBABbBAbAbBbAaBabbAAAbbbBAbBBABabbAaAaaBBabBBbAAAAbaabbBbabBaAAAaAAabBaBaBbBBAabaBBaabBBBBBABbaaBbbAbbbaAbbbAbbBaAAbAbabaBaaAabBABAbbAaABBBaabbbbAaaaabAAbabAbbAbaBaAAAaBaaaBAAaaaAbbAAaABaAABHaAabAabABaAAababBbAbAbaAbbBbAAAAABaAAaAbbBAaABbBbBAAcbbAbBBbAbAaXaBAaBAAAAaAaaAabaAbaBBAABbabbbabbAbAaAbbabBbaabbBaaBBabAbAbbBBBBAbABBAABaAbbbbaBAabAabAaDbABAaBbBBaBBbBABBAaAbbaaAbBaaBbBBAaaabbaabbBbaBabBbBAAABBbbbBABbBAaBbBbbBabBabABAaBAAbaAbabBaaAABaJBBBABBBAbAbBABBBaaBaAAaSbaBAbaWaAAAabaBAAbAbAbbbaBbAaBABaAaaABAAabaBBBBBBAAaBbBbaaAbBbAAAbABabABaAbaABbBAbaabaaAbaaBbaaBaABAAaaAaBabaBBAaBBAaBaaAAABaBbBAAbBBBaababBABAaBbAbaaBaaBBAaAabbaABaaBbAaaaaBAaBAabbBBbBbBbAAAbbaAbbbBbBbAaaBbBaBBbAAaABbbBbabbAAbbAbaaaAAaABAaBaaabBAbbAaAAbaABAabBbBBBAAbbbbBbaaaaAbabbBBBAbABBaaAbaAAabaBAbAaaBaBaAAABaBbabBbBAbAAAbaBaAbabaasbabaaAbaaabbaBBaaBABBAaabBbbAaaaABAAAaBabaAAabbBaBBBBaabbAbaABbBbAbAabbAbaBabBabBAaAbbaBaAAbabbBAaaAaaBaBAaAaBaAAbabAAAAabBbAaBAbABAbaABbABbBAABBAbBABaabAAaBAabABaaBBbbbbabAAabABAbBabaABbabaaBAabBAAbAabBbbABAbBAaAbaAAbAaabbAbbAABAABbaBaAbbbabBAaaaabbBBBaBaBbAabABabBBbBABbabAbAaaAbaAAbaAbBaaBbABbbaAbBABBABBBBbbaBbbAAbBaAAAaAaaaAaAAAaBBBBaaaABBBBABabaBAaBAAaBBbaaaBbAbAabaBbABAbaBbAAABAAabbBAaabBababbAbBAAbabbaBbBaBaAbbABabBBaaabAABAAAAAbbbbBBBBAAAaaBABbBAbaAAABBBBBAabaAbBBbBbaaBbaBBbbAAabaAbBAAAbBBbAAAABAabBaAabBAabbabbaaaaBaabBBaaaaAAAaAABABbbAaBbabbaAbaAAbBABbBaBbaAAAaBbBbBaabBbBaAAabaBaBBaaBAABaaaBBBaaAABBabbbbBbaBaBbBAaBBbbbAAaBaABBaBbbBAabBABABBBAAbAAaBaBBAaBBaABbbbaBaAaaAaAABaaAAaAAbBBabABBaaBBBABbAAAAabAbbaABbbbBBAbaaBbAAAAaAbABbabAaABbbbBbBAabbAaAAbAbbbbaAaaBaBbbBBAAaBaabAAbBbaAaAAaABaBAAaAAaaBAbbAAaaBbbabaaAAAAAaAbBbBAaBabaAbbABbBabBAAaaAbbABbaBnbBabtbBAbabBAaBaBABAbaaaaaAAaBbBBbaAbaBbbbAABBaBbBBAaBAABbBBAabBABAaBAbaBAaaBbBBAAbbababAAAAababaBAaAAbBBAAaaabbbbAaaaAbAbbbAabAaaaAAbaabaaaaBAbAaababbBbBBaABBBbBBBabaabaBaAAbAaBaAAabABBabAaBBbAAbbaaBbbbBbaBBaaaBAaAAaAabbbaABAbbbbabAAABbBBBBBbbAABBAaAaAabBABabbAAbbAabABAAaBbABbbbAaBABbABaAbbABaAaabBbABAAabAbaAaaAbAaaBBaabbaabbbBaaaABBbAababbBaBBaBABbBABABbbAaaaAbbBBABaAbAabbaAbbABaaBbBcaBbAbaabAABAbBaBbBaABbABBBbBbbababaAbabBABAAaabbAbABAbaaABbBbbBbbBAbbBbAAbbAaaaBbabAAABaBBbBAaBAbBaBAabBAAbbaBAABbbBbbBAAaBbBbBaBaabAakBBBaaBaaaaaaQabbbABaBbAaaAAAAbAabAbaBaaAaaAAbbaaaaAAbAAaAbbaaBaAaabbbAbBBaBABAABAbBBaBaAbaAAaaANbBAbxAaBbAbaABBbBBaabAABABBaBAbABAbaaBBaaBbAABbbbbAABBaabABaABAaBABBBABBbBABBABbABBAaaABbBBBBBbbbBabbAABBAAaaBBaAaABAbBBaBbBBBaAbaBBBBBbaABBAaABBBbbbBabaaBBAAaaABbBbbAbBBBbaAAAabbabAAaABbaAbbBbaaABAbBaaBbaAaAbbabaBABBBbbbbAbHBaBabaAabAbbBbbbbaBBaAABBBbAaAABABAABaAAAaAaBbAABBAbBbaBAaaAABAbBBABbAaBabbaABAABabABAAABaAaBAaAaABababbbBABBbaBBbBbaAbABbBbaABbAbaaaaBbBBNbBABABAAaBabBBBBbBBaBbAbabaabAbApAbabbaAbbAabABABBBBAABBAABaBbAaABbABBBbaBbbBAbBBaABBAabAbABBBaBAABBBbBaBBbBBBbAbaBBAbbAbbabbBBbaBabAdBbbbbabBABAbBBAAbBBAAaaBaaAbbbBaabAaABbabBbaaBAbbaAbbBbbbabABabababBaBbbBBabbAbBBbbbBbBBaBBAAbAabBAABaaaBBaabbABBaBaAabBbAbabbabaabBbBAABaabaAbBbbaabBbBABbABaBaBABaAaBBaBbaabAAAAbBBaAAAbAbbAABtABaKBBAaabbaabbAaBaBAABABAbABBBbbBAbabAAbbbBaaAbABBAAaaABbbaAAbbAbbaAbbaaaBABbbBBaaBbabAAbBbBbBAAAbbBBABbaBAAaAaBAAbaAAAABbbAbbabhbaBbabBbBBaBaBbAaBbabAABAbAAabbAbaAAaabaABaaBbaAbAAbaaBAbABAbABAabABaAbaBbABBbBaBaAaBAbaBBbAAaBbAAbAAAABBbAaBABaaAABAABAbBbBaAAbBaAAaaAABbBBABBBBaABBAAAbABaAaBaabaaaabbbBbBaBbAAABBAAbbbBbbBbAbAAbBBaBxBebbaaAAbBAbBAbAbbAaaabAbaanabaaabBAbBaAAbBBBbBaaAAbbBAaAaBaabAbaaAAABBbbbAAabaaAbabaaAaAABabaBaBAAbbbBabBabbbAAaabbaBbbbaBBbbBaBAAAAbBabaBabbbbaaaBbbaBABbaBAaABABBaBBAbavaaBbbaaaAAAabbaBAAaBABBBaBABzaaBabABaabBaAbbBABBbAAbbAAaAAbbAaBbAABBaBBaBAbAbaAaBAAAaBabAABBaaBBABAaAAAbbbBBaAaAbbbABBAbbABAbBbAAbbAAbBBbAAAaAABbbaBAabaaaAababBAbBbAIBaaaAbBAAaBbAaabbAbbaAaABaaBbbBABBBBBAAbBBbBbbAbABBBABaBABAbBaabaBabBAAbBBabABbAaabaBbBABbbbBaAbBbAaAAbAAbABbBbBaAaBbaaaabBbAaBBAAbAbBBaBBAaabaabbAbBabAbaABAbabBAbaBBaaIAAaBBaABbbAbbBAABbBaabaAabBAABABAaBBAbAbAaABabBbBabbAbaaaaaBbaaBBbaAAbABBbbaAABbbbAbAAbABBbABbBbbbaaabAaAaBBabBaBAaAZBbbaAAABAbABBBaABBbBaBaABAaaBBabABBbABbaaaAaBABAabaAABbbbbabBAbbAAAbBAbbAbaABbABAAbaABAbaabaBBabBaABabbaBbbbBAaaAAabBbAaabBAbbBBABbaBbBAAAaAbAAbBBABabBaBbaAAaBaAAaAAABAaBAAAbaabaBaaBaBaBbaBAabbaaUAbaabABbaaAbAAABBAakbAAAbbAbBabbbbaaABAaaaaaXAbabbaABBaaAABAaBBABbABaBaaAbbbabBabaaAabbabAABBsAAABBbBBaabBBaAbbaBbBBbABAbBaBBBaAAAAaABBBababBBbbbAABAaaaBBbbABAbbbAaaAAabBBbbAbBBAaaBabAabaaaabbAbababbABbBaBBabbAabaBBAbBBAbAbBBAabABBabAAabBAbBBaBAbbaAbAabbBaAAABbaAaAaBaAAAABABaBAaaAabAaaBAaaAbbaBaaBababbbAabaabABbbaBbabbbBBbBBAbaBaAAbaAabBAbAaAbaaAaAAAaaAbBaBbABBbaaBBAAABaABBbBAabnaABbBAbaBAAABABaBABAbaAAbaBaaAABbBaBBBbBABaBaaqAbbAaaBbaAbbbbBAAbbbBBAAbbaaAABBbBaabbAbAAbaaaBBAbabbBbaaBAaAbAaAbAABBbAAAaAabaAcAABAAbBabAbBaabABBbAabbBaBaBbAaaABaaBabaAABbbaabbBBBAbaBbBabBABbbABabABabaABaAbdaAbbaAabaBBABAaBBabbbaaBaabbBBABabABAbABBaAAbbAabaBbbBaaBbbbbaAAbAASabAbaAbABBbBABbBbbaABABAaBAbbbaAbaABAbbbaABABaabAAAbaabBbBAbbBbAbaBbaAaBaBaAAAaaaABaaAAaABAaaabAbBbAaAbABbBabBBAbbbbAABaAAABbBbAAaBBabBaAbbAAAABBABAbBaBAABBBaababbAAAAaBaaBAABAbBABBabBaaBABaBABaBaaaaBaBAbbabBbBBbBBaBaaBbAaBabaBaBaabbaBbABbBAAabBbBAbDBaBaAAAbaBaaABBBBaBbabbvBBaobAbAbmABaaabABbbaAbaababBAAbAAAbBbABBbAbaaBAABAAbBbBbBaBbAbaBAbbabaaBbAAbbbbAAAaAbbABABbAbBAbaBBAaBAAaBBaAbbbAbbBabbbABbaAbbBAaBaABabBaBABaAaabBAABBBbbbbBBBbBbaAabbaAbBbBbbbBbbbbaABAAbbaBaABAaaaaAaBbbBBaBbbbBaaaaBBbbaABABaaaABBBbabbBbbBBBbAAAaBBaabAbbBBabBbaAABBbbAbBbbAAAbaAbaaaabBbBaBBaaBAAABababaBBbbaaBBAAbBbbRbaBAaABBbBBBbAbAbbBbBABaAaAbAbbabbBBbbABAaABbaAabABaaBBbAaAaBBBBbABAbBaabaBBbABbbaAaABBAaBbAAbaBbBABbAabaAbbbABabBABABbbbBabBaBBbabBaaaABbaAAbBaaaaAaBbbAaabaBbbBBaBABbABBABABbaabBabaabBAAaBbABBAabAAaAkBabAAaaAabAbBaaaafaAAaBBBBaaBbAaBbaAbBAabaBBbaaABVaBaabAAAAaaABBBbaAAAaaaBBbbAaaaAaabaBbAbbBbBaaBBAbBabbBBAAAbabaAaaBbAaAAbBaAbAaaBaaBbaAaaAABbaABBBBaaAaBABaaAAaBaBBAABabaAbAaAAAbAbbAABaBAAAbbbavbABAAbbaBAaBBabAaaaabAaBbAbABBabAAaAAfabABBABaaabBBBAbBBaBAabBBbbbBaBbbBAAbbBAaaaBAababBAAaBBAaBBaAbbBBaAbABAabbaAaBbabbaabBaaaaUBaBABAabaBBAABABAaBBBBAAABBAAabbBBbaAaBbAAABbbaaBbbBaAABAbAbAabbAbaaBbAaBbAbabbAAbABbbaBaAbbaAbbBaaAbbBBBbAAaAAaAbbaBaBaAbbbBaqBBAaAabBbBbAbbBBAaAAAaBBaBAAAAaaabBABbaBAbABAABBabbbBBBABbAaaAbabbabAbBBbABABBbAAAABbbAaabbAAAAAabBaaABAaAAaaBBabBaaABbBBbBBBAabABbAAAABaAAbBbBbaAbaAAABBAaAabbAABAAaBBaababABbabaaabaBaBAaBbABbBFBaABabaabBbAABAbBbbBABbbaaBaBaAbbAAaBaABBbbbBaBbbAAsAAaAAAaABbaAAaabaBAbbaAbbBBAaabbAabbBAabAAbBaAbbaAaabaBAbAbBBbBAaaaaAabAbaabbBbBbAABababAaaAaBBBABBbbBBBBaABaABBAaaABBAabBAAbAABbAaAaabBbAAAbbAaaaABAbaAaABaAbBaAaBBBAabbaaBRbaabBBAAaBAABaBabAObAbaaaAAabaabBBbABBBBAbbBaBbBAbbBBbBABbaaaBabbbabBbbbbAaAbBBabbaaaaaBabbAaBaBAbaAabbbBBAaAAbBaBbAbbAaaBaBbAbBAbbbAAABaaAaaaAaABBBAaaBBbABBABbbbBAbbaaAABBAAbAaAabAABBAAbaAAaBbBbaBBaAabbaAAAbAAabbAAabbBbBAababABAbaabABabbBBBbAAabaaaAabAbaABAaBAaABAbbABaBAbAbBAbaBqAbbaBBbBAABbAbbabbAaaAABAaBBaaBbBaAABbAaBbBaaAbaBaABAABbABAaBaBabaaaaasAAAAAaaAbbABABAabaAaAaaBBBBbAbbAbaBaaAAAbBABAbAABBabaaBbAbbbabbAaBBBABBABBBaAAbbBAAaAAAbABaBBbFBAabAaaAAaAabBbbAABBaabbbAAbBAbBAaBAbaaBBBbAAbaBBBbBbbAAaaaABabAabaAbBaaBBAbaAbbaaAABaBBBBAbAaBbaIABbBAaBaaBAAGaBAbeBBbaAAbAaAbAaBBbBBBbAbbaBbBbAbbbAAaBbBAbABbAaBAAbabBbbBAABAaBAabBBBbBaBAaBbBbzBBAAbBaAaBBbBaAAaBAbbAAabBaAaaAbAbbaaAaAABaaBaAAbaaAbaBabbBAaABAaBaaaBaAABbaBbaAabBABBbBBBBaaAabBabAABaBbabABAbbABbBaABAABAAaAbABAbaBbAaaBbAbaBAbAbBbaBbBAbaaaABabaabBaaaBbAAbBbaBBAABbAbaaabAAAaAabBBaaBabbaBBBabbabbAABaaAAaabBBabAabABAAAbBBAAAaabAAAAaabbBbabBaAbbBbBAbaBBbBAbbaAAbAABaBBBbabbbbbaabbBAbAAAAabaaaaBababaBbBbbAaBAaBaaaBbbbaBAbAAbWbAbaAaaABABbBbbabBaabAVABbBbbAbBBABaAbaAaaaBBABbAAAaaaBAAABaBaABbBbaABaABbABBBaabaAAbBbaAAaaabbAAAbAabbaaaAAABAAaabAABBBbaaabAABAbyBbBAaAbBBBBBbAaAbAbBAABAaAAaaBaAbABBbAAABABBabAbaBABBAAaABBbbbBABAbaABBbbAAaaaAbbaAbBpaAAAAabBabbaaBbbABBAAbABaBaAAbAAaaabbABABBaABBbAAaaBAAAbBaBBbAababaaABAABABBbABaBABbbaBAaABAbAbbabbAAaBabbaAbbbbBBaAaBAAaBbABbAAAAAbbbbAabbbBBaAAAAababbABAaabaAbBAbbAabbaABaAbbaAaAAbAbaAAbBABBBaawABBBabAABaaaaAABaBabAbAuAAAAAAAabBabABaBDAAaAaababBbaaBAAabBabBBaabaBbaaBbbAAbaBaBbAAbbbaaAbbaaBbBaAabaaaBBBABaaBAbABBaBbabbaabbBaaabBaAaBbABaBBAaaBbBaBabbabaBaAbaaAAbABbAbaBabaAAbAbaCaaaaAaaBABbbaBABAAaaaabBbbBaaAbbaBbAABAbaBAaBAaABAAbBabrBBBBaAabAabAabaBAaBBABbABAaaBbaABbBAbbAbbABAbbBABaaABbABAbAbbBabAabbbaaabaAABbAABabbbbaAaaaBBbAaAbBABAbBaABABDabAbAAbbbbBBbAaAABBaAababaABaaaBbbABAabbBBbAAaBAABBabBAaBabAAaBbBaBAaaABbBBABaaaabaBBBABBabBbABbaAAbAAABaBBaAaaBaABBabbBBbabbABaabBaBAaaaAabAbBBABBbabaBbaABaaAAABBBAbBAbaBbABBBbbaaABAabaABAABAaBBaAaABBBAAAbAaabBAbabaBBAabAbbabBBBaaaBBaabBabbaaAaBAAabbBaAaabaBaABAaBAaaBBbbbbAAAabAabdAbaBBABAAbaAaAAbAaAAbAAaAAABaBaBBAbBbBaBABBAaaaBABaBABjbbABBaBaBBAAabBABBaAabbbAaBBbaABbBbabAaAbBbaBaBbbABBaaakaAAbAbbaaBbbabBbbaaBAABAbBAbaBBbbBbABAaAABbaboaBBAAbaBbaBbbbaaBabbbabaAbABbBABBBaBBaABBaBAbbbAAAbAAaBAABAAbaaBbaaaBAbbaBBaAaabBbaAAAbbaADBaBAbAABbBAABaAaaaABbBaaaAABBAbBAbbBaABABbaBbbaaaBAaBBbBaaBaAaABabBaAaABAbBBbBABBbaBAAaaabBbbaAAAbBBAabABbBBAbbbBaBAabAbBbbBABBBaaaaabBAbaBaaaABBBAaabbBABABbAAbabAbabbBabbbAbaAaBBBaaBBbBBBaBABBabABAaBbBABBabbbbbaAABbAaaabaBBbBbBAAbbBaBabbBBbaaaQBaABBbAaaBBABBAaaBABbBbaaBBaaabbBabAbAaBbbAaAaBabAAbbBabbAaaaabBbabAbabBbBBAaBABAABBbbaabAbaBbbAaOAbAbAbABBAbaBbbaaBBABbbbABbABAAbABfaBABBAbAbbAAbAabbbbBAaBAbbaBBbAAAaBBAaaaaAbaBbbbAAaAaBaAaaAbbBAABBBBAbBBBAaBaBaBaAbbbAbaaaBbBWbBaBABaAbbaBbbabbbbbbaAAaAaaabAaBAAaaaAAbAABbaabbBbbbAbABaaABAAAAABbaaAaBBbaaaBbabBBabbBaBBaAbAbbbBAAbBBAbAAbaBBbABBAAAbBaaAAbABabAbbbbaBabaBAbbABaAABaBAABAaAAABaBBaBBaAabbBBbAaAAbABBbABAbBbABaAaABbAbBbbaBAaAAbABBBAaBbBbabABAaaAAbBbBbABbaaBAAAaAbbaaabABBBAbBaBAaaaBBaABbBaaababbAbbBbabaBAAbAabBBaBbbabBaabBABAaBaAbaBBBbAAbBbaABabaabAabAbaabBbbbABbabbaBAABBaBbabaBaBABAABAAaAFBABbAaABbABBbabBBBBaBbBAababaBaBbBabAbaBbAbaaaAbbAbaabbbbbaABBaBABABBaAAbaaBAABABAAaAaABaaBaAAAaBaabAabBBbbAbBBAaAAbaAabBBAbbaaAAaAaAAAAABABbBbAABaAaABraAbAaAAaBABBbAAAbABAbBbaBaaBbaAAbaBbBAABbBABbBbabABbAaaBAaaABbAbAaBbBaBBBaabAaAAbABaBabaBBBBBaABbBABbBbaBBBbBBBAbbabAAbbBbABBbAABabBAAaBaBbAAbBAABAAbabBzbbaaaAAaBBAbBbbaaAbWABabBABAbaBbabAaBAbBAbABAbaBaABBBBAbbAaaBBbABAaBbBAbbBBbBbaaBaBABBABababABaAbABBAAgABABaabBbaBaBbABBaAababBbaAbBbABBAABBBaBaABaaBAabaABBbbbbBABAaAbaAaaAAaabBBabAbbBABabBabaBBaABBbabbabABbaAABAbbAAAAbAbaBAbBbbabbaaAaBABAaaabBbBbAbBbaBaaBaAaBbABBBaaabABaAaabAaAAAABabbaaBaBBaaaBAbbBaBabbaBabbabAAbBaAbAaAAabaAAbaAaABAabBabaAbBBbBaabbAAaabABbAAABBAbaBBaBaBbbBABaBabBaaBBbBbAaBBAAaaBBBbAABaABabABaaAaaAAbBaAAbBbaAbAAZAAbaABABaAaAABAbABaaBaaBBBAaaBAbAaBBaAAaAaBBAABaBBbbBbABbaBbaBbbaAaaBBAAABbBBBaababbabBbbbAbBaababbABAbbBabbBbAbaBBBaaaBBbaabAaBaaaAaAaBBAbBaaBBBbAaaaaBababABAbbaAaaaBAabBaaaBBbBABbaaAABBbaababAaABbAbaabbAbabBabbAaAAAbBaBAbaBAAAbbaBBAbBBBbabAabbBABAbAAabAaBBbAaBaaabBAAaaBbabbbaAAaAbaababABbaAAbbbaBAbbBaAAaBBabbBAbbaABAAaAAABbaBbAbabBbBbBaAaAaaBAAAaAbBAaABbABAAAbbAAbBBAbaAbbABBaAABbAbaaaAAAaBaAaaBbBarAABaBbbBaBAAbAbAbbbBBBBBaAAbBaAaAAAaAAAbbAAbaBBaaBAbAABBAbbaBbbaBaBbaaabBBBaABaaabBaabaAAABBbAbbbABBabbbABAAAAAbbABbBAABaABbaBBBBbBBbBAAbrabBBaaAbAaABbbAabaBAAbAabAaBaaABABBAbbABABaBAbBBbbbbbbbaaBabAAaAbbbBaBaABbbbaBaABBbaBAbbABBBAbaAbbaabbbbbAaAbbaBBbbAabBbAabaBAnAbBaBBABAABbbABAabbBBAaabbAaBbBaBbBaBBBaAaABbaABAababbababaaaabBAaaaabaAabbBbBBbAAabbaAaABbbabaaABABaAbabaBbBBBaAbBAbbbaaBBbAaABbBbbaBAabABabAbabBbaBBaBaabBAbabaaaBaAaBAABBBbAABBAabbBABAabbaBABabBBAbBaBbaBbabABABbBbaAAaBaBaAbaAAbBBaabBABAbBBBBaabAbBBBABBAaabABbAAABBbbBBBbBabaABaBAbABaBbBbBaaBAAbabbBAAaABAAaaBaAbAAaBBAbBabaBBbAAaAaababAbBBAAAABabBaababAABBAubabaaBAAbBabABbBABAAAbABBBbaAABBBAAaBabbaBBBaaaaBBBbbbBBBbABAbBbbBaaaaabABBAAaaaBABBbBbbBBBABaaAbbaBaaBAbBAAAaBabbbAbaBABBAbBAbaabbAAbbabBaaaBBAABBaAABAbBaBbBabaBBBabAbaaaaabAaaABABBaBaaaabBBaaAAAaAbBAABbBaBBBabbBBAbBbAbAAAAbBBbBabBaaBaBbbBabbBBaABBABBAaaabAbbablaAABbaBbAaaABaaBBaBbBBAAaAAbBbbaAAAbAaBabBaAABAABBAbaBABAaAAABabaBbBABAaabAaBaAABAabaabbbbbbbbbBAAAbaAAbbbabAaABBBbAabBABbbAAaBBbABaBbaaaaAaaBabaBbaaABbAaBABBAABaaABbaBABaBbBBbaAAbaaAAabAabbaBbBBbABbBAbaaAabbbAAAAAbabBaAAabAbBaBbaAaaAABBabBAbAAbbBabBaaBbbBAabbBaBbbaBaaAABAABBBbbABbaaBbbaABafBaBaBAaaaaBbAAbaABBbAbBbBbaBaBbaBaabBbabABaBBBbBbbbabABaABBBBBbBaAbBbbAAAbBAaBbAAAABabAaaaAbaaABABBAabBAabbbBabaaABaaAaABAaABbabBaaAaBbBaaabAbbbbbabaBBaabaaBaaBaAbAAbababBbABaaabABaaAbAbbBAaAaAaAAbAbBBBBbbBaBbAaAbvBBABBtBBAAABBbbabBAbaaAbAABABbBaaaEAAbabbaaabbGAAabABBAAAAAbbbAbbbbbbBbBaBaBBbaBbbBaBbbaAaBaAaaBBaaBAAaBBaaaabAAaAaBBAaBbBAabBABABBABBaAAJbabbaaabBBBbbBTbAbbAbAABBBAABBAbaaAbAaAAABABabbaaaBAAbaaaBbBBABbabbaaAbbaBBbbAAAAaBAaaABbaAAaAbBaaAbbaAAbBaAaBBaBbBbBbbbBaAbBBaBaAABBaBBHbAbaababBababABabaBBaAAabaaAaABaBaaABaABBBbBbaBabABbbAABbaBabbBAabAbaAbbaBbBBAbaAaaabBaAAaAbBaAbbAAArBBBAbaAbAAAbBbAabBbAAbAbBABaAbBbbAaaabAAaBbABBbAAAABaBMAAbbaAbBBAbbAabABbbAbBbaBbABAUAaAAabBZBBbbbBabBbbBaAaABAAbbAAbaAbbAaabbaBbbAbAaabAAbbBtBbabbbbBAAAAAaaBbBAAAabLabBBaBbaabABbaAbaBABaBAAABAAaaBaAbaBBABaAbBbaabaaBBbabaABAaBbabBAAbbAaAaaAaBaabBBbaAaAAabBbBBABBbBBabBAAAbBaAbBaaBBbbabBbbAbAAAaaBaAbbAAAabaaBAaBaBAbaaBAbaaBbbABABABabBBBbABBaDaAAaBABABAAaAAAaABBBAabaABaababBaBaBBbAaaBAbbAABaaaaaAaBBaBbbabbBabaBBBbbBBBABbbaXbABAbBbABbBAbAbBabBbAaAababBaaABBAaAaabBAbaAbAbAaaAAabaaBbBbBBBBBBaAbbBBAaBBBBbbBABaBAabBbAbabAbaAaaBBbBaabBABbbBBaBBbAabBabBaabbBabbBAaaAabbBbabbabBBaBbbABAaabBAaAbAAbAAAaBbAAaAbaAAabAbabaAAAbBAbBbBbBaaAbabaBAAAaBabAaBBaaAbbbAaAAAbCbaABaBaAaBbAbAABaaABbAbbbaaABAaAabBabBBbBAaAABbabaABAlbBBABbBAbAbAbbAABBbbbaAaabbBAbAbbbabbAaABBBabXaAbaAAbBBAAABaaAAAABBBaAAabbbbbbbabaaBaaBAABBAbDABbbBBaabABbABbbaaBBBAAAAaabAaBAAabbBBbBaaBbBabAaBaaabABbbAAaBbAbAABAbABababbBbBBABaabBBBbababAabAbABbBAABAaaAaAaBBaBbBabBBaAbAAAAaAABEbbABBBbaABAaAAbaabBBaaBAbAbAbAbbAbAbBaBabAAbaABaAaAaBABbbABBAabBBaaaAaaaaAbAabbABbAbaBabaaAABBAbBBabaABgBBBAAabbbBbBBAbbaAbbabbABABBBAabAbbABAaBaaBBaABABbAaBbbBABbAbABaaABBbAaBbbABABBABaBaBAAABabbbAabBaaBarBBAaAAaBBaABABBbBAAAbaBbaaBAAabBabAAbAaaaBbaABgbBBabAbBBAabBBABAAAAbaBBbbaaAbBBBBaaaaAabBBaBBbbbBaABaaAbBBAabBbBBbaAAaAaBaabBAAbBbBaBAbaBaBABaABAbAAAbAbbBBAbaaAAAaAababABaBBabAbbAaBbBAbAAaaabBBaBAbBbAabBbaaBAbbbaaAAbBbAABaBAabbakBBAaBaBbAabaBaBBaAbAbABaBbAbaBaaaaAbAAAaaabAabBbBbBAAaBBBbAAAbAaaaBabazBBbaAbAaBABbaBabBABbBABaBabbbBBABABaBaAPabBbBGBBbBBaAaBaaAAabBAABBaAaAbbbaaBbAaBBAbBAAbBaAbBABaaBBbaBBbBabaaaAAAWbBAaabbaBBABABbbaAaaBBABbBaaaABKaaabBaaBBbBbAABAAaaBAaBBAabbAabABAAabAabAbtAabBaAAaAAAaBbaABAAaBbbAbAaBaaBABAAaABaabBaBbbaABBBBBaABbAaAabbabBBBaBAaAaaBaABABbBAbAraBbbBBbuAbbabaaBAaABabBBBABAAaABbaBbbaBABbBbaAAbABaabBabaBbbBbAaBbaAaabAbBbabbabbbABBBbbBaBABBaBbAbabaabBaABaAAAababBABABbAAABABabABBAAAbBBAaBbaabABBBAbbBBbBAaBAbaBABAaAaBAAAABaAbbAbABAaaABAAbabbBBABBBabAabBaaAAbbaBabAbaaaBBAbAabbbAfbABAAbABbBBBababbbAbbBAAbbBAbBBbbaabaaAAABbbbAaabBBBBbabbBAaAbaABbaBaBaBBaaBbjAbaAbaABAbAabbBBBbAAABbAAbBbaabaAABBbABbAbBbABbaaabbbabBbAabAaABaaAaBaBAaaaBbaaAAaABAAbBaBaaBBbBbAABBbbabAAbbBbBBAaAbBAAAAbaBaAbAbbBbBbbbAbaBaaaAaaBaBaAbbbbBaBBaABBbABABAaAbAABAaAbAaaAAaAaABBbBabAaAAbABabAaAbbbAaBbBabaaBabBBBaAaAbaaBaaaBABBBAbAAabbBabaBBBBbababbAbBbABaAaABaaBbBBBbaAbbbaaaaAAAaaaaBAAaaAbabBbBBbaBBbAbBAEaABBBAAABAabbaAaABbaBBabBbBBBAaAbabaBAaBAaBbBabAABBAbBbaaBBaaBAaaaaBbBAAaABbBBAaABAAbaaabbabAAABaAbAAbAbbbbaBbABbbaBbbaaAabBBbRBAbBAAbAbBaabaBaaabAbBaBBAAabaJbAbBAAaBBABbaaAbaBbbabaabBbbAAbbaAaAABBbBAabbBaBbabAbAAbbAAAAaaBbAaaABbBaaAabAAaAaAABbaBBABbbABAABAbakBAbBBbbbbABAAaBaABaBBBBbBabbAbBaBbaAabaAabABAaAabaBABABbaBABaabaABBAbBbbBbbABAbbabABbaabaBabbbaabABaBaabbABbBAAaAAaaABbObbAbabBababBABbBbABBaABAABAabaBbBBaaABBBBaABBAbabAAbAaabAAFbBFAAbBbaaAbaaAbabbbbaBBBAbBbabbAaaBBBAAaaBBbAbaaAbaBbBaaabAAAbaAABaaBbABAbbaBbbBAaBaBaAAaABbbbBbBBBAbABBBbABAaaAabBbaAbAABbabaBBbAbaBaABBAbbaBbBabAbbbbAaaBBBBbaBBBAabAaBBAbBaaaAbbbABBBBaAABBbbbbBAbBaAAabBbBAbBbbbBBAbBaBbAaBbAbaAAababbbBAbbAaBBAAAAaaBaBABbbbAababABaABAaBaaAabAaAaAABbaBbbaAAaBbBbaaabBBbAbABBABaBbBBBabaBBABABAaBBbBbbABabaAAABUAAAaAbBabaABbAbaAbBBaBAbABBBABAAaBaBBBaaBabaAbaBBAbbAYaAABaBaaabAAABbBbaAabbabbaABBaAaAABbBBAaabAAaaBaZBbaaBabbABBaaAABbaBBbbaaBbABBABAbbaABAbabAaBBbBAaBaaabBABbbBcbbaAABBAAAbaBbaAbBAbBbAbBAaBabaAAbAabAaBaAaBAbABABaBAAaAAbbbBaAABABAaaaaBaAAaAAAAAaBBbAbAaaABaBaAbbaABAbBAAbbbaBbabAAAABabbAaBaBbbbaAaAababaaBaAbbBbbbAaabBbBAAbaabbBbAAAbAAaAaaBAAaBbbAAabbaabAbBabbaBABAbbbabbBaABAaBAaBbbaABAaabBbABBAAbBBbabAaAbaBAbBbBabAABbBABAAbBBBYAbbBaABaabbbBbbBbAbbabBBaAABAABIBAbBbaBAaBbBaAbbABbabBbbAaAbbaabBAbBABBbMAbBAbaabABaaaaaaaBaAaAaaaAAAAAabbBaabaaabAbBabbbbBBBABbaBbBAaBbbBbAbBAaABBbbAabbbABbABAAAbAAbbAaBBBAaBBbBbAaBABBbbAbbaAaDABAAAAAaAAbabbAaBbAbaABBAbbbAABBbbABBBABBBBBaaAAabaAaBbBBABaBaabaBaBAABBbaAAAaBAaBbpBabBbaBBaBbAaaBbbbabAbabBBbaBaaABbAAAabBBAAbAbabbBBbABaaBaBAABbABAbBaabABaBbAabbbBabABABAaAabAaAbaBAaAaBabaBAaaBBbaAabBAAbaaABbBAAbAbBAAAABABBAaaaAAAaABbBbABbaBBBbbbBbaAAAbABabBAABAbbbAbbaABabBaABAbaaBBBBbjAABbbbbBaBBaBabbBbAaaABAaaAABbababAaaABBaAaBBbAbBbBBAabBABbaaAbBAaAaAABBAAbbbaaAAaAaAABaBBAAAabBBaBbABaBbaabbbBAbBBaBBaBaAABbbbbbABBaBABaAbbAababbdbBbaAAAaBbBAAABaBBaaababAAAAABbABaBaBbbBBaBaABBBbaAAaaAABbBabAbAaAaAbbAAbBbBBaaBAABBbBbAaBbABAbbaBbabbaAbBbaAbaaBAbbBBBBBBAbaaAAABAaABbaBBBBaAbABAbBBaAABBabaAbAaBbaBBABAAbdyaBaBBAbAbbaaaaaqAbbAabABBBbBBBaaaAAbBBaABbABbBAAABBbbabAABBaAAaBbDAAaabBabBaAbAaAaaAAAabAABAbBaBAAAbbaaABBbabBAbbbabaAAabBBABAbbBBAbaABbAabbABABABaAabBBaBbaBBBABBaaBbabaAAaaaBbbbAaAaAbBbbabbbBaBABbbaabaAaAabAAABaaaBaABbBaBBbbaBbaBBaabBAabAaaabbBaBBaAAbbBbbAbBaabBbAAAAbbabAAAbAbAbBaBAABABaBbabBbaABabaAAABaBaAbAaAabABAaBaBaAbbbAbbbbbAAbaaxaAbAAAAWaBbAaaaBAaaBbabbaAAQaAaAABaAAbBABAAbbAabAaAabAbBBaabbbAaaBBBbBaaBAbbBabaBBbbaaBBBaBAAAbabaaaBBbAbAABaaABBBAabaabbababaBAAAAaBabBaAaBBaaaBBbABbBbbAbaAaAbAaBABAbABABAbAaaAabABBaBabbbaBBbbbBaBAbABBbAaaBBaAabAAbAaaBABBbBAaBaAAaAbBbabBaAbBBabAABbbbBBbBAaBAbBaBAAAbaBbaBAABabBabAbABabaBAAababbBbbbabaaBBabABbbAAAAABaBBaabBBAABbabBaBAAAbbABaBbBAaAAAAAAAaBBAabBaBBbAAabbbbbbABAaabAbaabbAaBbaBAbBaBAaaAabbbbaAaBAaABBBabAABBBaaABSaAAaAAbaAbbbbbBbabAaaBBabbAaBbBBaaAAAaBBBaabbBAaaBBBBabBbBaaBbAAABbBaaAbbabaBBbAaBbabBbaBbBaaabaaBaAaAaBAabAabAaEaAAABaaBAbBBbaABbBbbaBAbbaBAaaAuBABAaAabBbaBBAbAbaBBabaAbbabBBABbABabbbBBabbBabBbAABbbBBaaAbabBBAbBBBabbbbBaaBABBAbaaaABBaabBaabAbABaBabAabAbbaaAabAaBAABAbaaaAaAAbAbAaAaAAabaBABBAABbAbBbBABAaABAaAaAaBaABbBABbAaBAbbBbbBaabbbBAbbAabAAAABABAbAbbaBBBAaBBAbAbaAbaBABAAbaBbaAABBXbBaAbBAaBBabBbAaAAaaABabAAABABaAabBbBbbaBBbbAAbAABbaBbbAabBaAABAbBBbAaBaBbaBbAababbAAaBBAAbabAaaAbAABbaBaabBaaAbbbbaAbAbAAtBaaAabBBbBaBBbAaaABaBAbaBbbbaBAABaAbaBBaaAaabAabAaaBBbAbAABBbAaabAabAaabBbBbBaaaaababAbBBAAbbabaBbaaABbbBAbaAaBbBaBAabBABAAbBaBBaaaAbABbaAabBbaBbaBAaBABbbBBbABAaaAbAAbAaAababbAaBAAbABbbBabAaaAAAbAabAaBBaaaAaAAABbabAAAbBBBaBaBAaaBbBBaBBbbABbbaBaBBbAbAajaAAbabaaBAbaBaBaababBbAbAabAAABAaAabbAAAbbBBBaBbBBAAaaABabaaBAbBAAbBBbABAbaabaUabBAaAAaaBabBAbAbababbBAAAbABaAAAABBbBaAAAAaABBbABbABaBBaaBBAbABaaAaaBBABABBBJBbBbbbaBAAbbbbAAabaaaBaAbaAaAbAbabbAabbAbbaBaBbAaBaabBabBBBbabAaBaaBaAAAbBAAaaBAbBaBBbbaAaAxaAAabaAAbbBbBBabAbbabBaBAabAAbBAaAAbBAaBAAABAAAaaAbBbbAbAaAabBBBABaAaAabbaAaabAbAbaBBabAbabBAbABAbbaBaaAbaBabbbbaBAaBAaAbbAAAYabaAaBBAAAbAbbabAbaABbAABaABAabAAaBBabBBBbbaBbBBAaAabaaBbAAbaBABbaBbBbAABBBAAAAbdBBabbaaBBbBaBabBAabaAabBabBBBbaBBABbBBAABABAAAAABBABaAbAbAAaBBaBaBAAAAbbBbbaABAabaAyabAAababABbBabBaAabbBBbBAaBaaAABaBaaaaAbabAAaBbABAAbbaaBAAABaBBBaaaBbqbABAbBBBBbbaBBBbABAABBABAaBAbBbbAaAbbaaaaaaAAaBABbAabaBbabbbbzaAabABbabbAabBABbabABAabbAaaABABaaABaABbBBaBbbBBbBBbAbbABbBaaBbAbBAaBaabbAaBBAabbbAbBAaaaABAbBBaabAbBAaAabBBBbBnBBaOAaabAabBabbAbBAaVBaAaaAAbbaaABbAAbBAabBAAABBBbAaBaBAAAAbAAAABBBbaaAbbBAbAaBbAaaAabBBBaBBbBaBBAAbAAaaaaabbaaABBBBaBBBaBbaAbAAbBaBaABabBAaAbbAaabBbDAAaBbaaABAbbbBbBBBbBaaBBabaAaaAAAABbbBAaaaBAbaAAbAabbAbaaBAAbBBbabAabBaaaABaaaAABaabBAababAaAABbBbbBBAAbbBBBAbABaaaAABBAbAbbaBBBAbbabBaABBbBAaBbaAABaABabbABABbAABBbaABaAbbAAAABBbBaABBAaAaabAbBAbbbaAABbaBaabbaBaBbBbBbAbBaabbbAabbaABBAababBBaAaBbaBbBbjBbbbAaAAbbaAAAbAbAaBAABAbabBABbBbaaBABbBABAABbAbBBaBaBAaaaBAAABABBBAAAAAAaABbbbbBaBbabBBBaBaaAbBBBAHbaBAAabaaBABaaAaBaAABAbaaaabAaabBbbabaabBABBbBBabBbAaAabaaAAbAaBbbaBBbbABbBBAbAABABABBbbBabBaBabBBBAaBABaaABAbAaBBBBbBbAaABAbbAbabbbbaBAAbbAaAbabBBAABAbBbBaBbABbbbaAAaaAaaBBAbabaBabAAAaaAabBaABAAaaBABABaaBbAaBbabbAaaabAbbaaABbAbbaBaAAbBABAabAAaAbbaAbABbabbbabbbBBaBBBBaAaBAaAbbBBBaABBBbbAababbAAbAAAaBbaabAaABBbABAABaABaAbBbbbbaAABABBabbAABAbbbBbbBbbAaBBaaABaBbBBbaBAaAabbbBaABbaBAABaBBBaABaABAAAAAbaAbAbBabbAAAABbbaAABBabBAaBBBbbbAaAbBbABBNAABBaabaBaaAbBBbAABAaaABaABBAaaaABABBBAABaaaBaAbBBaBabaaAaaAaAbAABbBbABaAbBababAAbBAaaaAaaABabAbabbabBBabbBbBABBBBbbabABAAAbBbaBbaAAABbAaababBYaBABABaAabAaAAbABaaAAbabAbaAaAbAAbAaAAbBBbbAbbBabAABBaabBbAaBAABaBaABAaabbabAAAAaabaaBbAABBabAbAbaBBBaAAAbbAAAbaBAAbBBAbBbAbaaaaBbBaAbaAbBbbaABaabAAbbbBbbaaaBabaABbaBAaBAaBAbBBBbBaAabAbaABbaBBaAbABbBbbBabAbbBbBabbAabBaaBbbBbBbABababAaABAaaBaABbbBaAAbABBaAaBAbAbBBaBAaaabAbabaaBaaBABBaaabbAbBABbbBbbBAbABBaAabbAAAaABbaBAbaaAbAAaAbbBabJBBbAbaAbABbTAAAaAbaBaBBbBbaaABAbBbBaBababBbKBaABBBAbaBBabbaAAbbbBAbBBbbbYbbabaBaBaABBaBbBAAAbbaBbBbabbAaBBAAAbBAbbaAbAaBBAbAaBABbbBAbBAbBBabbaAABbABFaAbBBBAaAbBabbAaBBAAbaAbrABBaaBabbBaBABAbBabBaBaaaaaBAbBAAABbbabbbbaAabaabBaaBaaBaABbAABAbbBbBABAaabbABaBAAaaAaAAAabbaBbbBbaABbobBbBAABbbBabBBBAbbaBBAbaBAbbbBbBaaBbababBaABbbaabbBbAAbBBabABaabAAAbabAbbAbAaAAbBBaABBBbaBaAAAbBAaBbAaABBbabbAbaAbbbBBbAaabaAAAaaBabAaBaabAaAaBBabBBaAaBAbaBabbBaaAbabbAAbABaBABBBaAaAAAabBABbbABaBbBABAaAaZABAbAaaAbbBAaABBabAAbaaABBBbbbBaAbbBbAAABaBbAbBaAaAabbAAAAbbbaaabAbBbbbaAbBBbbAaAbBabBbBAAaABaAABbVABaBABbAbABbbBbABBaabBBBaababiAaaAAABbbBBbbABaaBbbaaAAbbBAABBAaBaPBaBbBBBBBbBBawbbbbbaabaaBabAAabbaaBaABAbAaaBabaoaAaABBBAaAbBABbBbAabbbBaabaAAAbAAaaaAaBBaaAaAaBBbbbAABbBaBbaBbbBBBaaBaabAaaaBAbBAfAaBaAbaaIAAABsBbAAabbiaBAbAaAbAABaBaaabAAAAAbAAaaGBbabbaBBABBaabbbAaaaBBbBBaAbBBABbAAAaBabAABbAaabbaabAaABABBBABBBBAAbAbBBAbbBbaABbbBBaaBBBABbBbaBABBbaaBbbAAAabBBAAbBaaabAbbbbBbbBAabbAaBAabbAABaAbAaBAbAbbAAABbaAAAabbBAAbbaBBabbbBAABBbaabAbbABBAABBAAaAAAbbBABabbaBAbbBABbbaaAbBAbaAbBBAaabBBAabbbaAABaAbBABBaAabBBaBaaAbaBBAaAabbAaaBaBBBBaaAaBBaabBBBbBBaBbBaAbBbaBBaaBAbaAbBbAAbBbaBBbAAABAAAbaabBBBbaBbbAabAAAbAaAbBaABBAbaAbBbaBABBBbBbbbAbAbabAbbaaABAaBBaabABbAbABaBAbAbBAAbaBbabBBaABbaaAAbBbBBBbBbABaABbbAblBAbBabBbaaAAbbBaAABAbBbaAbabdaabBBbAaBAaAaAbBabBBBAabBABAAAaBbBAaaAAaBaABaaAAABaAAAbBbBbaBaBaaaaBbaAABABaaaBbaAbbaaAaBAbaABaAbbbbBbbBbBaAaabAaBbaaabbbBBBABBbbabBabBBbaAbAaabbAbbAaBAABaBaAbbbaaabBAabaAbaAaaBbaAbBABAbBbBBAbaAbaAABABBbbBbbabBBaBbAABBABbBaAbabbbABbaaAAbBaBBaBbBBBAAbbaaAbbaAabBbAbabaaAaBAaABbBBABBAbBAaaaNBaaBBabaAABBababaaABAgABbBbaAAAbbAAAbaBBABBaBaababAABbBAbaaaabAAAaBaPZBABbBaaABaAbABBBbABbAaBaAaBBaABaaBaBbbBBABAbBaaaBAbAbVABbBAaBBAAaBBBaAbbaaaabbABAabAbaAAaBaabAAbAaBBAAaaAaaAaaBAbAAbbBaBaBBBabaBbabbAaAAbAbbAaBaABbBbaBaBBABaAaaAbaBbbaBaAaSbAAABaBaBbabaBBbAabbaAaAaabbBaBbBabbAaAAAAabABaaBbAABaaBBBABbaBbbBbABbBbBABBbABaaAbAbAbBAAaBBbbaBaaBbbbbAABbBBAbBbBBBbABBbABBAaBBaABABBbAfAaBBbaBBbAbbBaaaBABaABaabbAABYAaaABBAbAAabBbaAbaabbbbABaAaBBBbbBBaAbbaBBbBBbBAalABAbaaAaBaaABaBaBAbbAABAABABBbBbbBabbbbaBbAabBABaaBbBbaBaAbBBaAaBBbbbbaaBBBaBbBAbBBbAbABBBAMaBABAAbAaBBBAAAaBbBBBbAaBbbBBAabAbAABbBBaBAbbabaABABBAbBaAbaBbABmbAbbAaABaBBbAAbBBPBAaAABABbaBBBBbBaAaAABAAAABbABAbbAbAAabaaAABbBaBAbaaBBAABabbbBbBBbBAABbBbAbABAbBbBAbBbbBBaaAAAaaabAbAAAaababaAbBAAaAabaAbabBbBbAbBaBBabBAAABBBAbBabaABBBbbAaAbbAAaABaABBBbBaAabBbABBBbaBBAbAbbaAabAbaBbABbababaBaBbbBaAbabBbAaBbBBaBabBaAaabAbBAbAbAAabBaaAaABbaaaBBBbAABBbbbAAAbbBabAbbbBAbBBAabbBBaBAAbbbBAABAAbAaBBBABaBBBABaaABAaaBBAaBBAaBBBAaBBaAbBBaBabbAaAAabABBBbaaaaAAAAaBBBbbAbaABbBaBABBBAaABABBAAABBabBBAaBBAaaaAAAAABBBabbbAaABAABBAaBBbtabBBBBbaBAAAAAABAaAaAbaAaaaBBaaBBaABBAAbbbAAabaaaaAaAaabbBbbAbABBabAABABAbbBBBbbBbAAbBbaBBaBbABbaaAaBabbBBAAAAbbbaBBabBbBbaAaBaBBaABbBbalBbBbBABaBbBAAaBbAbABBbAABaABBBaBaBBAbBBbbBbbbbBBabbAbBbBABabBaBaAbBabaaBbAbAbbBAABBbaabaBbaAbbABABbbaBbBabbbaaaBBABAABABAabBBABbbaaabBBbABAabAAabbAbbBBBAababAAabAbAAabBAbbAaAbBbAaaAaAbbaaaBaabBAbBBAaBBbBBbbAABBaaaABaBBAAbbbBBbAabABbAaBbAaaAbAbBBAaaBAaBABBXaAaBBBaaabBBbBbAabaBbaabABbaABBbabAaAbbBabaABabbaabAbBaABBbABbBBbBAABbAbbaBaBAbaaBaBBAABBaALaaaBAAAbbbBbabbbAbaAabAbbaaAbaAaABbBBaaAAaAabAABAaABBAaABbaAABBbbAbababbABAbaBBaBbabBbAaaabAbBAAAaaBBAAabbbaBbbAbBBAAabaAabBBAABaABAAbbABAabAAbbAbbaaAbAbAaaAaBbABAbbbbaAAbABaAbaBBaBAaBBAAabAaAbAaABBbbBBBabBBaaAABbaBBBBbABAaaBBBabbaaabBbAaaaaABBbaAAAABAaaabbBababAAaBabAAaaBABaAbABaBbAaabbAAaaBaAabbBBBABbbABabBBBaAAbBAbBAZbBbaAAbaAAAbaaabaabBaAabBaaABaAabBBAbAAaBabBbAaAaAAbABbabbBAAxbBAbABBbABbAAABBBAaaabBBBBbbBaaAAbBABaBABabbabBbabAabAbabbBABBAbaBaAabABBaBBBbaaBbbBaBbBbABaBaBbBbAaBaaABbbbaBaBaBBbBBaaAbAAbaBBBAbaabbAACbaAbAbAbBBaAbAabAabaAaABAAAaBBBBbaabBbbbAabBaBaaaAbaABbBaabBbbbbaaaaaaAAaaaABaabBbBBBAAAbAABabbBbAbbbaaaBaabAAbBBABAaaBBbbBabaAaabbbABbBAaaBaAABBaaBbAbBBaABbbbBAbaAAAbaaAbAbbBbBbbbaAAAbAbAaAbBABbaBabAABBAaBaaaabbaAabBBaBBBabBaAaaBaBAbAbbabAbAabBaBBAbAAAAaabbbAbaAabaBBbAAaBAaaAAAbbAabBbaaBBABbapBbbbbbBABaaJbaabaBabBAaBBAabaBaaAAbabBbAbaaaAaAbBAAaaaAbAaAaAbaBBABaAaAABAabBabBbAAabBbbbaBaAAABaAbabaAABabaBbaBAaabaabaaAbBaAbBbaBABaABbbbAbAABBAaBaaAbAbAbaBbaaBbAaBBABaaBaaAAbBaBaAABAabBBaabAbAAbaaAABbaBaAbaAaABBABbbabbBBbBbabaBAabABbBBBabABaAABabBBbBBbbAbbbBBAAbbbbaaBbBaAAbAAbBBaBBbabbAabbbabbBABbaaAAabAABAabOBAABaBaBaAaabbBbbBBBBBBaBaaaBbBAAABaaAAAAAbBAbAbAaBAaAabAabBbBaaBaAabaBBAABbBbaaBBaAABaBABAAABBbbBbaaaabAabAbABBbAaBBaAAaAAbaaaAbAAabaBbabBAAABababAaBBabAababAaBbAAAbBaabbAAABaBabAbbbBBBBBabBabAaBabbbbaAaabbbbBbbbBAbabbbbbAAaBBAbaabAaabaaAaaABbaaABabBabBBAABAaAaBaababBBAAaBaBaaBaaBbaAAaBBbbBbbbBbabABAabAbBAABabAAABABaAaBabAaAAaaAbBababbababAAbbBABabbBbaBbbaaAaBaAAbabAaAaBbaBBaBbBBbbBbbBbbBBaBbBBAaaabABaAAAbBbABAAbbAbbAbAABBABLAabBbbAAabAbABBABBAbAbaBaAbABAbBaAaAazABbBaBbabABBaBbaArAAbBbabBBAbAbbAbBBbBaaabBBbBabBbAbAaBaBaABAAAAABbaBABaAAbaBbbBbabBAaaAbAabaBabAbAAAaABAABBaBbfAAAbbABABBaAbaaabAAbbbAbAAbabPaABBaBaBBzBBaaaaBAbABABbbBaBAAabbabaBbaBBAbAAAAbbbAAaAbABBbABAaBAbbbBABBABbaaabaAbAAAbAAABbBabBBBbBbABBBBbbAeBbABaAabAaBaBaaAbaAaAbbbAaaAaBabAbAaabbBbBAboAaAbaBaBaaBaaBbaBABBBAbABaAbbbABbzaabBmABAaABBABbBaAbaBbBBBABabbBaaABbAbbbBbAbaAAaBabbBbbtbbbAAAabAabBaaAAAAbBAAABBaBabABaAbaBbbaaBBBBaAAaBAbAAbBabAAABbBAabBBaaaABABBaaAababBaABaAaBbbBbAABAtAaAbBabaAABABaABBAaaABbAababAABAbabAbBabAaaAaaaBaAAbabBaBAaaBbbaababbbBBBbbaAbbAbbBaAbaBebbaBAbaBBBBAABAAAAaaABAAbaAabAbaBabABabAbbabBaaBbBABAbBABaAAaBbAABBabBabABAaBAbBbAbaABBaBbaAAaAAaaAbAaaaBbbaBAAbAAbBBBjaABAAbaAbAbAabbBBaABBbBBbaaaaBaAbABBBAABbabaaBbBBbBAbbbbBbaaBBaaaaAbAbBBaAABaABAbAaaAAaAbbbAbaaBBBbAABBbBaaaBBbBBAAaBbaaBaaBaBaABaAbBbBAAbBbabAAAbaBaaabAaabBBAbABbaaBBBAaBBAaBABaaAbbBBBAaaaAbabaBAABabbbabABAbaaBbBbbaaBBbbaAaabAaVaAAbbbBaBbAAaaaBABBaabSAaBBbbBAbBaEaAbBBaBAaAAAABbBABabbaaAABabaBaaBBbABaBaaBbbbbBbBbaababAaBbbAaaAbABaAbaaaaAAaBBaaaaBABbabaAbabBAaabbaBaBABaAbaBBaBaAabBaBBAbaAAabAAbaaAAbAabbASbBBbaabbbbbAABbbAbbAaaAaBAaabAAbbabBBBbBBAabBAbbBBAaBaAbAbAbABAbbAaBABAABaBAaAabAbAaAaauBaAbAbAbaBbabbbBbBabaBAbaBAbAbbaBabbAAABBaABAabbbBbaABBbBAaABABbazbBbaBaBbbbbAAAaBbBABABababaBbABBBBaAAAaaAbaBaabAABBBbAAAAAbABbbAbaaABbABBaBBAABBAaABaBaAbbabbABAabABaBaAbBaaaAaAbAABAaBABABAAABbABBbMaAbaaBlBBbbbBAAbbabaABagabbabABBABabbAbbbbABbbbBaAabBbAAABbAbbbbAbbbAbbBAbBbbBaABbBAABbBbAAbAabBBaAAAbBbbAbaABAAaAbAaAbABAAabaBBabaaABAAbaAAaaBBAAaaaabBAABBBBaBAABBaBAABbabBBAabbAaAAbBBBbAbAbAbbABBAAABaBaAAaAbabbbBABAbTAbaBbsAaAabababAbBABBabAAaBAaAbABbaBbAbaAaBAbababaBbAAAABaaaaaaaAbBabaAbAaaabABAaBaBAAaabABABBbbbBaobBaAbabAaBAaaaBaabbBABBBAaaBAAAaBaaAABAabbbbababaaBBaBabBbBBABAABbAABAbAabAaaAbBbbbbabaAbabBBbaAAbABababBbBAbbaAaBAbaaABAAbBBbBAAbaBbBBabBBBBbaBBaAAAabABaaaBBbAbabBABBabBbBBBBbbbAaBaBbaaAAAbaAAaBBbBabbBaaBAbABAAbAAbBbbAaAaAbsAbABaABaBBbABbaaBABAaBBabaAAAABbaBBaAABbaBabaBaAaAAAaaaaabaaABAAaBbBAbbBAAabBbaabAaabBBAbaaaabBBbbaBBABaBBbAAaBbbaABAbabAAaBbBAaABbbBaBAbAbaAAabAABaAABBaBabABBbaABbAABABAaBAAABabaAaaBBTAaAAABAbbbaAAaABABaBaBAAABBbBBBBBabAAbABaaaBBaaabAABbbBBBAbABabBABaBBAbaAAAaaJbaAbABbaAaAbaBAaAbbAAAbBaabbBABBaAaAaBBBbAAbaBBbbrBBAaAABABbbbbBbabaBaAbABbbAAbBAAbaBBBAAAAaaAAbBbBaBBABbabbbaABbaaAABABBBaaAABABBABbAbBBaaaBAAbBAAAAaBbbaAbabBaBBAbbaBBAbBbBbABbaaBAnAaaAAbABAaAabaABJaAaaAbBBBbabaBBBbBBaAaBBBBbbbaAbbaaababAbbABbBAaaAaAabaaBbBAbbbbAAAabaBBbABBbAbaAbABbtbbbabbbaAbbbaaaaAbBaaAaAaBAbBABbBBBAAabaaAbbBabaABbABaAbAaBbAbAbBAabAbbaBbbaaBaABAAaAbBAaaabAbaABABAbBBaabAbAAaBAbaAAbAbabaAaAaaAAAabBaaabaBBAababaBAbbbBaBbbbAABBBAabbbaBbabABABBABbAKabbAAaBBaABAaBBbAaabbBBBBBaaAABBBAbaGbAbbaBabABaaBBBbUaaaAAbBBABAAAbBaAAAaBbBBBBABBABAAAbAAABAaaBBbAcAbaBAabABBABbbaBAaABaAabbabAABbBbbbabBbBBBaabABabbAbBaAABBabaaBAbBaBaaBBbBBaBABbabbABbBBABaabAABbBbbABBBABABaabbbBBAABBbAaAaABabbAABAbAbbbBBABBAabBAaLABABaBaBbbaaAaAKABBAbBaABABBaaaaaAaBBaaaBAAbBAABBbaaBBAabABAbBaBbBAbAAaAaAaAbAbAAbBAAAABaaBaBbbbBbaaBbbbAbAbbBbBaAAbaaAaBaAbBAabbaBaabaAbabBAAaabhbbaABBABbaBabAbbaaBBAbbaAbAAabAABbBBAaABBBBAabBBBaBAAaaAAAbAEBabbAaBAAbBAAaBaAAbaAaBaaBaBbbbaAAbBaABBBabaABABbABABBBBaaaAabAAaBBbAaBAaBbAbbaAaabAAaabaAAaBBbbBAAbAbbaAAAAAABbbBabAaBBBbaaBABbaabbBBaAABAbbBaBaabAAbbaAaBABAABBAAABBBbbBbbbxbbABbABBaBabaababbBBBbBBbABBbabaaAbBaAaBBAaBaaBAaAabBaaAbABBbBAAaAaaaBaBAAababBAaabAaBBbbBaaAAABABaaAbbBBababAAbaaaBbAbBaaaAAAbbbbaaabAAaBAabbabBaaAAbAabAaBaaBBaBSaAaaaaaaaaaAbBBBaBaAbABbbBbbBabbAAaabaaAAbaaaaAAbAAABAabBaaAAbbbAAAbAaaAaAbBbBbbAbabbABbBaABbBAbBABBAAAaBBaBbAbbaBBaBAbAbaBABabbBaaabbBaAAaBbAAaabABaBaaAaAbABBabAabABbbaaAabABbbBbabAabAAabAaabbAAbaBaBBBaBBBAbBbbaBBabaaaBbAaAbbBBABbBbAaBaBBABAaaaBbaaBaBBBAaAaAbBABAababbaaAbBbbaabABBABAaNBAaaAAabaBaABabaBaaaBBBABbaBBAAABaAbaAAAbbAAAaAaaaBbAbBbbAbAAabbBBAbaBaABBbbAAAABbabBabaAbaaBAAaaAbAbbAaABbbbBBbBaabBaBbBabBABBbbBAbabBBAaBAbBAAaAABAAaABbbbBABAababAbabABaBaBBAbaAbBbAabBbabAAABABaaBBABbaAaBbBBbKABaAaaBAaAABAbabbaBAbABABbABabABAbbABabbababBBBbaABbABaAaabbbBAAAAaaABaabBAaabBAbaBaBbbBAAbBAbaABaBAbABbaBAABbaaaBABaBBbaBbBBaaAabaABbbBBAABAbbaabbBbaAbBAAbAbaAAabWABAaBAaBabbaAabaAaAaAbbbbAbBBBbvBbbabBaBaAbabBAaBbBAbbbaObaaBbabbabABAAAbAaaaabBabbbabaaBaAABabaaabBBBaaABAbbaBAaAbbAbBabbAbabAAaaBBAaAaaBabaaBbbBAAaAbbABbBBaABabaaAbAaAaBabAAAbAbBAbaABbBAaaABaaBBBBaaBbBABBbBbabABBbbbBaBBaBabaBABaBaBaBbaaAbbAbbBaAbAaBBababaAAAbBbBaaAAABbAbAuBBbaBabbAbAAaaAabaABbbBbbAaBAAAbaaAbbAaBaBBabBaAbbabABBaBbBBAabBIAAbAAaVbaAbAaAaaBaBAbaABaBBbbaABbaBBaBAbAaAABaBABAaBaABAbAAAabaBbBaBAbAabBBBaBABaaaaBaAbAaAbAbAaaABbabAABbbBbAbBBbBAabAAAbaBabaAaabbAAbbAaABAbbBBaAabAaaabbaABbFAABabaabBAbAABaBBBbaAbAbAabaaBbBBbaBAbBaabbAbBAAaBABbabaababBAaABAaBlaaAABaabbaabaBABbAAAbAaBBAAaAaAaBAAbBbabaBbbAbAAbaBbBAaaWaBaBbABHaBBAbBbBbaAAbBbBbAaAaaabbaaaABbAbabBbBbBBAAbABABAAbababaabbABaBaAbbabAabbABabbBBbbbBaAbaabaABAAAbaAbAAKbBAaBboBBAAAabAaBBbbaAbbbaaAAbaaaaBBBBBAAbaBaaaaABBabABBaAbBbabbaBABbBAAbBbbbBAabUAAbbAAbaBAbBBBbbBBBABABbbbBbbbLbAbbAbAbbBAaaaABbaaabABbabBBbBBAabbAABbBabAbbaabAbBABaAbAbaabBABaaBAbbAAaabbAbBBBaAABAabbbAAABaAbaAAAbaABIAbbbBAAbAAabABBBUAAAabbAAAbbbAbAbABBbAABbAABBAbBbbABbaBABaaBBaBAAAaaAaABBabbAaAbBbbabbAaAABAaaabbbBBbBbbBAaBBaBAbaaABABaBaBABABBABAABbbbaabABBaaBAAaAaABaAaAAbABABaBbAAbbaaabAaBbAaaBBabaAAbAabABBbBAbABaBBbabBbaaABaBaBBbbbbaBBAABaaBAabaabABBAAaAbaaAABBBAbaabBBbBabaABBABAabAbabABaBbbBBaAAaBAAaaAbbaaAaBaaBbAAAaaBbabAabAabAbabaBBBAbbaBabbbabAbAAAbaBAbAabaAaaBbaabaaBabBbbbBAABBbaaBbbBaBAaABABbbBbBbabbBBHaaaaaaaaBBbBAaabBAaAbAabAabBaABbAbAaBAbaaABBaBaaabbaBBabBBbAabbabbbaAAbaBAabaABAbbbAABBaAbabaAaAbaBaababbBBaaAababBaAaBabBAAaBaAbbAbAbAAaabBbABaAaAaaAbbAaAAabBabAAabbabaabbAbBAABbaBAbaaBBaAaBaaaBAAaaabbAbABBAABBBBAaaABBBaAbaBaaBaAABBAABBBAbBbbabbBBBbasBABBAbabABbABBaaBBBaaBBBBAbiAAABaabBBAAaBbbABBaBBbabbBaBaBBbbaBAaBaabAAaBbaAABABaBaAaaaAAAbBWaabAbbBbBAaBAAABABBaBaAbAabBabbaBbaaBBBbabbabbbYaBabBBBaABAbAABABbBBabAaBBAbBbBAaBBAAbbaAabBbaaAAabaaBAaAabbbABBAbabABAAaNbaaAaAbAbaBBabBBBBBbaaAbbAbaABABabaaAaBAabABaAbabaBBAaAbBbbbBBabbaABbabbbaBaBaaBAbaaAabaaABAabbbaBaBABBBaBBBBBAaBAbbabbBABbbaAAabAAtbbaaAaABaBaAAbAbBBAbBaBaAbbBBBabbbAabAAbAbBBaBbBbaAbaabbbBABABBAAABaBbABBabABAAABbaBBAAbbBBbaBAAAAbAAbbBBBbBbaabbBbAabaABbBBbaaAAaaBBabaBBbBaabaBbbbbaBAbBBABbbbAaaaaBBBAbaAaBBaBABbBbaBaBabAbbaAaaAbAabbaBAaBBbBABABabaabbAaBabBabbAbaaAbbAaBabAaAbBBBBaABaaBaaAaABBBAaBaAbBAAAaababIAaaabaaaabbBBaabAAbABbbbaaABABaaabBbBBaBaaBBAbBAAAAAbBaBbBaAaAaBBbBBAAaBbaBABBbbbAaaBBaAbAAaBAAAAbAaabbaAbaabBbbbBBaRABbbaaBAbAaBaaAaAbAaAbbABbbbbBABBAbbaaabbbaaABABAAbABbbAaaabBBbbBBbaAaababbaAabBAabaBbAAAAbbBABbabaaaBAbabbbaBaaAbAbiaaaBbbAbAaAAabbbbBbabAabaBbbaAbbbaaabbAbaBBaBabaBBbBbaABBbbabaaBbaBaabaBAbBABbabAAAABbaBbbbabaABBaAaBBaAaBaaaAbBBBAaaBBAaAabAaBBbaAbaAaAaaBAaaBBbBAbbbbaBbBbABAbAAbbbaSbaaBaAaaABBaaaABBBaBBABBaAbbaaBbBabbaBAaBaaabBbAbbAbAAAAAAAABAaaBBbABabAabaaAaaaBoaAaLaaBaBBaaaABbBAKAbbAABaBABAbaBaaAbbAaAabABAAbBbaBbabbAaAabaBbAaBAABbBABaabABbAaAaAaAAAbAaAbbBbbbAaAbBAabaBbaABBABabAbBBBbBAbAbBAaAaaabABbaBabaAaBbBabBBbBaBAbBBAaBbAAaAABabbaBbaAAabBaaaaaBaaBaAABAaBbaBbAaAbaBAaBAbBBBXBbAAaaaAbAaABBABAabbaBbAbbABaaAAAAaAbBaAaBbabBBABaAbBABBbBbBABAAAAbBaabAaaAAbAaaAbAaAaAABBbbAAaAbbBBbCabBabaAVbABBBaBbabBbaAaBBBAaAAaaAbaBAbGaBABbAbbBBabABbBBAaBBBAbbaABabBaaabaaaAbaaBbbAAbAAAaAbabaaABbaBbBAaaabbaAbabBaAAbAgBBBAaAaAbBBBaAAabABaaBbAaBbbbaBbbbBBbBBBABBaaBAABBbbABAaBbAABAbABabbaAAbbABAbBaBAAbaAAABBbTAABbAAAaABBAAAaABbABaAaaaBAABaABAbBaaaaabBabAAbabBaBAaABbAAbaaabBAaaabBBBBBaaAaAbbAaaABAABBbbaaaaBbaBAAaaaAaAaABbBbAaBBBBbbaaabbBBabBbBABbAaBBbaaaBAAabaAaBabBaAAaBaabBAaaBaBbbNbbbBbbBabAaAabBBAAABaBbBBBaabbAAAaBaBAaabBAAbabbAAbaaAbABABaBaBBABAbBbBaAbbbAbBbAaBaBBaaaBBbaAAabABbaBAabBbbaaabaaAabAbBAbAAAAAAbAbAaAbbAaBaBbbbBAbBAAaAaabAaABaBbAAaabaaAaAabABaAabbBBABaBbAaBBBAaAbAAbabAAAaaBBABBBAaAbaaaAaAbbbBbaBBbABBaBaAABbABaAaaABbAaBaBbbaBBBAaaBAaABAABbBBBBbABaBbABababBBAabBbbBBbbaBBAAbbaAaBBAaAbbAaaABbABaABBBBaBBABAbaABBaAbbBabbgBbBAABAAAaBbbAAaAAaaBaBbgAaAaaAAbAbBAaABaaaBaBbBbaAAbbAaeABbaaBABBBbBabABbAbababaaaabbAbABabAaBaaBBaBaAaaAAABABaAabABBBbABabbBBAbaabbbAAbbBbaAbBBbaaaAbaABbBBabbbaAAaBBbAbbbbAAaaABAmbaaABBaaBBaaBabBBAAbAbAabbAaBAABAbBbAaAaaBABaaaABaSbaBbababaBaaAbbbaabBBbaaAbbaAAAabbbaBBBAAABbaaAbBAbbGbBBAaAabAaabAaaaAaaBbbBaAbBabBbbBbaAAbAbABbbbAaAAAbBBbabBaabBbABaAAabBabaabAUBbbbBBAAaaBAAbbAaBaaABabAAAAAaBbaRbBbAbABbAAAbBabBaABHAAbAAABabbabAaaABABaBbbaABBAabAbabBBbbabAaBabbBbabBbBaaBBbBabAaAbAbbabBBbBaAAabBAAaBAbAAaaBaAAAbaAbAAABBAABAbbBABBBAbabaAAbAaBAABBbAaAabbBaAbABAbBbAbaabBabAAbaAAaAAAaBAabAAaAbBAbabAbaBBbBAbBAbbaAbAbabaabbbabBBaABbaBabBaABbABBABABaAaAbBAaBAbAbbBBbabBbBabBBabbBBaBbAABbAaABAabbABBaabAbAbAAbbABAbBbaabbAbBAaBAABabbbbABaOaBbaBaABbbaaBABBBaABaAAaAaAAAbAbBAAABAbABBBAbababABbabAaaABAaBBAABAAaaAAaBBBbbaAbbabAAbBAAAbBBBBaabbAaaaaBbbaaAbBbABbaBAabBaBAAaAAABBaBbBAaAaaBBbbBbAaAabbaaABBBBBBaBABAbbaBBABbAAAbaaabAAbaaAAaAaBbbABaAaAbbaaAaBAaAbAAbaaAaBABBaBbaBaBbAAAaaABbaAAabAabbaaAabAaaAbaBbBAAaaAbbaaABAbbaaAAABaaABAAbABBabbaBBaBbAaBBabbbBAbAbabABBAbBBabaAbbabbABbaAaAaBBbBbbAbaBaAAbabABbabBabBaaABBBABABBBAaABabbBbBaAYafBbAbABBabaBABBbbaAAaAbBbabbaABabbAABBaBbABabAaaAAbaBbBbaAbAbBbbabAbbAbAabBbabbbbaABABBbaBABAabbaAAAbAabBabAaBbabBBbaAbBbbbBbAbaabaaAbbabbaBAaaAbbBAbaBAbbAaabgBaAbABbaaABAabaABaaabbaAABbabBBbbBbabaAABbAbBBAaabababbBAAAabbaaABbbabAbabbabaBBbbbAbaaaAbbABAaAaBABBBBaAAbbbbABAabABAbAbAaaaabABAbBaBBBbbBaBBAaABABbabBaACBbAaBbbbbBbbAaBBaBbbABbAaaAababaBaaAABaBAbBBabAbBBbBAbBABabAAABaAbaBaBAmAaAaabAAbAbbABbbbbBAABBbaaABbaAABBbBBBaaaaABbBaBABaABbbbaaAaBbaHAbbaaanbaaBBBbBabBbabaBBABBAbbaAbbbAAabABBBaBbAbaBabBAaaABBaAbaBbbAaBbABABBbbbbbBABaBAAaABaABbAbAaAaAAaABbabaABAaBbBBbbBbAaaBbBBaBbaBBBAAaAaAaaaaBAbbabBBAbaABabbabaBBaaABBbAaaaabaAbbababaabBabBBbBBababaBBBBABaAAAABbBaBBBbaaaABBbABbBbAbbABbababbBaAAAaBBbaBabAaAbbababABBBbbAaaBBbbbbABaaabbAabbaabBaaaaBbAABbaAbaBAbbaaAAaAaABBbBaBBbBABAbaAAAabBbbBAAAbaaAaABbbbBbABBaBaAbAaAAaABBbBaABbaaAAaaaABabaAaAABAaBBAaBBBbAABaAaBaBbBABABBBbBaAaBaAaaBaBaBAAabABbbbbbBAaAabAbAAbbAabbaABABaABAAABbbAbabaaBaabBABAaABBaaAAalbbbbAaBaABbBBBbbaAbbABbAAAabGBbbaBBbabbAaBabBbaBbaAbABaaaAbBBBbBBAaABAAaBAAbbaAAbBAAAAABbAAABBbAaBbbAAabAAbbBabAaaBAbaaBAaBbAbbAbBBaBbAbBBbBBaAAaAaBBAabbAbAbaAaAaBbBaabaBBBAbBAbbAAAbbBaBbbabAbaabABAAAbBbbaBbaaaabAaaABAAabbbBBaBbbabBAaBabAaAbBbBaaABbBbaAbabAbBaAaBabaBabaaBaaaAaaaabbbbaaBAabAabaaBBaBBbAAbbBAaBaABAbBBbBAaBaABbaaaBbaBBbBbaabBbaaAABAbbbbbAbbaBAaBAbaaBBABBaBAAAbBAbbBABbabBbABaBAAAbAbbbbaBbbABaababAAbaBAaABbAaAbbBAabaAAAaBAbAaAaaaBBbaaabAaBAaBbaaaaBbAABAbbababBBbAaABaABbaaBABbAbBaAABbBBABaAbBBqABAAbbbbBaBbBBabABAbaABAaBbabABBaaBbABBBBbaAaaBBBAAABaBAAabABBaaABABbAbbAabaaBAbaAaAABAbbabBbaABBAaaBBBBBAbAaBAAaaBbAAAbABBAbbAbbBbbBBBABaBAababABaAbbBBaBbbaaaaAabbBAABABaBbaabbaBaBBAAabBbAbbbaABABAaAaBBBbBbBABaaFBbAaBAAaAbabBBBAabaaAbbAbBAaAaABaAAaABaABaBbbBAaABAaaabAABBbAaBBABbaabaBAAAbBabBabAbBWbaBAaabbBAAAabaAAaBABbBbbbAAAaAababbbbBbbbubAAAbBaABBAAAabbAabBAbaaBABbbBAbBaBabBAAbLABbBAbaBbBaABbAAaBBBababbabbbaBbBBaAaBbbAbabbAabaAaaaBAaAAabbaaBAAaBaAbBBbbAaBBaAbbAAAaAAaaaAauBbaAabBbbbBbbbababAAaaBabBbBBABAaBbAABaABBAAaBaBAAaaAaaBBBbbABaBbbaBABBABaaBAbBaABbABABAabbaABbaABbABabAabABaBAbBbAaAAAabbABaBaAbbABBAabAbbbbbBbaaAbAaBbaBBBBBbbBaQBbAbBbbAaaBabbbbaaEaaaBBbBbbbAABAbbbABBBBbbaBaBBBAAAbABAbBAbaBbaBAAAbbBaABBBabABAaaBAAAaabbaAaABbBbBbaBaBABAaaBBbBbbBAAAbABAaAaabbABABBAABAabAAAABAbbAabbbBbabaabbabbAbbBAbbaAaBAbaBAAAaBAbaAbAbbiBbAbaABaBAbbbBbBaabbAABbabaaaABAbaaAaaAaBBbbAABaBbabAbAABBAABbAAbBBAbABaAaBabbAaaaBtABaBAbAbBAaBBaBbBBAaabbBATAbaBBbAbAbaBAaabbbAaBBabBAABBAAaBMaBbbabAaaBbbaBaaAaAaAaabBabBaaAbabYbBbXaBBbBbbDbbAbbaBBbbAaBBbBaBABBabaBaBABbBaaBabBbBbabbaaAAABaabBbAbAzaabBbBaaAbbBBBaAbbBABbAAABaBBaABaaaBaaAABABaAABAaaAbBAAABababAAABBbaABABAaABBBbabbYbaAaBbBbbaBbbABaabAabBbbBaBabBAaBAbaBaabBBBaBBaAAbaBABbbAbabaaaBBBbbaAabABabBBABBAbbabBbbanABBAabaAABbAAaaBbBaababBbABaBbAabAbBABBBAabBAaabAbabBabAbAbaABBAaAbbBbabbbBBbABABAbBbAabbBABaBAabBaBBBaaaaAABiBabAAAbabbAAbaBbABBAAaBbBbBaBAAbbaBAAaAAaBaAabABABaBbabABAbbbaABBaaabBbaabbBaAaaabBAbaaaaLbBAABAABaaAbbBaaAbaBaBBBAbbaBBbabAAABBbbAAAAaAABAAbabbbbAAbabaBaAABBaabBAaaBbBAbAaaabbaBABabABBBaAaBBbabbaAAabAbBbBaAaaaAbAbABBAbaBBBaAaAbbbaBBbbBBAbbaAaAaaAaAABaBAAbaABBaabbBaaaAaBBbIbbbbBabaAAbABaBbaBBBAbbAbabBAAAbBAaAbAAAabaaABAabAAAaWaAAaaBAaAaAABaBbbaAbbbBBaaAabBbaAABaAaBAAbBaaaBbBaaBabBbBbbBAbABAabAaAAabBBaabaBbaAabaaAbBABaBaBBnAaAaBbAbBabbbBBbaaaBbABAAAbAbAbbaABBAAbbbABAAbABbBAabBbabaaAbBAbbaaAaBabbbABBbBABaBbbAAaABBbBBbBabaBBABBbbbBaabaBaaaabBaaBAbaABBBAAaBbbAaABaBBBbBbaabBbbAbbAaAbbBabbBABaAABbBbAAAAaaAABABbBBAbABAABBbBaaBbBbAbAbaaAbBBBBaBAAabaABAbAaBAAaAaABABBaAbBBBBbbbBbbaabBBbbBAaaAabbbaAaAbBaaBBBabbAaBAbbbbAbAABABABBaBAbbbAAAAAbaAbBBAAbBbbBbaABBbAAbABaABBaaBABBaaBAaBaababABaaABAAgAaBAaAbAabABABVABabAaaBbBAAbabbbbbBAAbbbAaAAABAabbAaBAaAbaaBbaBbbbAbaaBAbaaBbBaBBABaabaBbABaAABBBaaaAbabBbBaBbaaAAAbAaAAAbaabbyBbbBbbaABaABBAbbabbaAAAaabaAAbAaAAaaBabbaBBbBBaAAbBbAbbAbAAaaaBbaABBAAaBbaaAbbAAabbaaaBBBbaaAbBbABABBAAaAaAABAbbBAaaBBAaBbbBBaaaAbaaBBAaAabABBbAabAbaAabBbbBaAABBbAabaaaBAbaaAbabaBabBaVABBAAaaAAaBBAAbaAaabAbbaAabbbAAbaABaABABaABAABBABBaAaAABabBbABqbBaBBbAABABbAABaaAaAaaAaaBaAAAabAabbaAaBBaABaBAzaBBbBAiAaBabaABAabaABaaBbbbaaBBAbbAAbBBAAAAAAaAbbabaBbBABABBAaaAABBBAaabbabbbbABaaabBaAaBABBbBbAAaBaAbBbBAaBBBAABbBAaaAABBbAAbbbBAaBbBBaBbBAABBbBAaAABBbbbBAABAawBAaBAbBBBBABBABbBaBBbaBbBBBABAbBbBABaAAbBAbbBaBbBbABaBbBAbAABababAabaaABAaaaabbaBbaaabaaeaBaaAaaaaaBaAbsAaBabbAaAabAAbABbaAABaabaAaBABAAbbBbaBAaAbbBABAAaBAaaaAAbBBABBbABBAbBaaaAABABAabbaBaBAbAaABaBBAABBAAbAbABBAAABBbbaaabBBAabBAaUaBbabABABabbaBbABaBBABAAbBAAaBbaAbABBaAaBBBbbAbbBbaAaAaBbBaaBBbAAabBaBABABaaAbbbVaABAbaBaBaaAbAbAbABbAAAbAbAAAbbBBBBbBBbBaaAkBaBAaaBbBabBAAbbabaAaaBaBaABAbbBAAbAAAAaAabBbaAbaaaAbaBBBbBbaBaBbabBAaaBaabAaAABbbBBBAbbbbABBbABABbBbaBBbABBaAbAbAAbAbAAbAabBABabBaaABaBoBBbAaBaBABABAAabBbAABAAabABaBABaBBbaABbBAaAaAbbbbABBBaBABAbbaAAbBbAbBBaaB"; System.out.print((new Sort_Characters_By_Frequency()).frequencySort(s)); }}
347. Top K Frequent Elements
Given a non-empty array of integers, return the k most frequent elements.For example,Given [1,1,1,2,2,3] and k = 2, return [1,2].Note: You may assume k is always valid, 1 ≤ k ≤ number of unique elements.Your algorithm's time complexity must be better than O(n log n), where n is the array's size.
package com.leetcode.array;import java.util.*;public class Top_K_Frequent_Elements { public List<Integer> topKFrequent(int[] nums, int k) { // 使用 map 统计 nums 中数字出现的频数 Map<Integer, Integer> map = new HashMap<>(); for (int num : nums) { map.put(num, map.getOrDefault(num, 0) + 1); } // 根据数字出现的频数,将 map 中的 key 丢进 桶中 bucket // bucket[] 的下标表示 key 出现的频数 Set<Integer>[] bucket = new HashSet[nums.length + 1]; for (Map.Entry<Integer, Integer> entry : map.entrySet()) { if (bucket[entry.getValue()] == null) { bucket[entry.getValue()] = new HashSet<>(); } bucket[entry.getValue()].add(entry.getKey()); } // 将 前 k 大的数组放入 result 中 List<Integer> result = new ArrayList<>(); int count = 0; for (int i = bucket.length - 1; i >= 0; i--) { if (bucket[i] != null) { for (Integer num: bucket[i]){ if (count >= k) break; result.add(num); count++; } } } return result; } public static void main(String[] args) {// int[] arr = {1, 1, 1, 2, 2, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 6, 5, 4, 43, 23, 2, 2, 1, 23, 2, 2, 1, 3, 2};// int[] arr ={1}; // 注意桶的大小// int k = 1; int[] arr = {4, 1, -1, 2, -1, 2, 3}; int k = 2; // -1 2 1 3 4 输出错误!应该还是 -1,2 List<Integer> result = (new Top_K_Frequent_Elements()).topKFrequent(arr, k); for (Integer num : result) System.out.print(num + " "); }}
阅读全文
0 0
- LeetCode 分类练习(4)—— set 和 map 在解题中的应用
- sicily 1194 Message Flood (STL的map和set应用练习)
- LeetCode 分类练习(2)—— 三向切分 partition 思想的应用
- 数据结构(Java)——Set和Map的应用
- ES6 —(Set 和 Map 数据结构)
- ES6---扩展运算符和rest‘...’(三点运算符),在数组、函数、set/map等中的应用
- LeetCode 分类练习(3)—— 指针碰撞
- list,set练习和Map简述
- set和map中的STL
- STL中的map和set
- Scala中的Map和Set
- STL中的map和set
- ES6中的Map和Set
- STL中的set和map
- LeetCode 分类练习(1)—— 在数组中移动指定元素、删除指定元素、删除重复元素
- 黑马程序员——Map,Set小练习
- Java——Math,Set,List,map相关练习
- 比较器练习(list,set,map...)
- Shell脚本实例(一) 监控一个程序的运行情况
- matlab中plot函数画图的相关问题
- Java 模拟并发操作
- js事件全解
- 关于使用StickyDecoration分组错乱问题
- LeetCode 分类练习(4)—— set 和 map 在解题中的应用
- Ajax
- 每周LeetCode算法题(十二): 647. Palindromic Substrings
- 2017-11-26 DBA日记,oracle闪回查询的源头验证
- 55. Jump Game
- 6.15鸡兔同笼
- Java多线程同步---以银行存取钱的过程的简单代码实例
- 剑指offer每日一刷
- openpoker开源项目 源代码解析