/**
 * Given an array of strings strs, group the anagrams together. You can return the answer in any order.
 *
 * An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase,
 * typically using all the original letters exactly once.
 *
 *
 *
 * Example 1:
 *
 * Input: strs = ["eat","tea","tan","ate","nat","bat"]
 * Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
 * Example 2:
 *
 * Input: strs = [""]
 * Output: [[""]]
 * Example 3:
 *
 * Input: strs = ["a"]
 * Output: [["a"]]
 *
 *
 * Constraints:
 *
 * 1 <= strs.length <= 10^4
 * 0 <= strs[i].length <= 100
 * strs[i] consists of lowercase English letters.
 * @see LeetCode
 */
fun groupAnagrams(strs: Array<String>): List<List<String>> {
    val resultMap = mutableMapOf<List<Int>, MutableList<String>>()
    strs.forEach { string ->
        val countArray = IntArray(26)
        string.forEach { char ->
            countArray[char - 'a'] += 1
        }
        val key = countArray.toList()
        val currentList = resultMap.getOrDefault(key, mutableListOf())
        currentList.add(string)
        resultMap[key] = currentList
    }
    val resultList = mutableListOf<List<String>>()
    resultMap.values.forEach { listOfString ->
        resultList.add(listOfString)
    }
    return resultList
}

Compiled from "GroupAnagrams.kt"
public final class GroupAnagramsKt {
  public static final java.util.List<java.util.List<java.lang.String>> groupAnagrams(java.lang.String[]);
    Code:
       0: aload_0
       1: ldc           #10                 // String strs
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #18                 // class java/util/LinkedHashMap
       9: dup
      10: invokespecial #22                 // Method java/util/LinkedHashMap."<init>":()V
      13: checkcast     #24                 // class java/util/Map
      16: astore_1
      17: aload_0
      18: astore_2
      19: iconst_0
      20: istore_3
      21: iconst_0
      22: istore        4
      24: aload_2
      25: arraylength
      26: istore        5
      28: iload         4
      30: iload         5
      32: if_icmpge     184
      35: aload_2
      36: iload         4
      38: aaload
      39: astore        6
      41: aload         6
      43: astore        7
      45: iconst_0
      46: istore        8
      48: bipush        26
      50: newarray       int
      52: astore        9
      54: aload         7
      56: checkcast     #26                 // class java/lang/CharSequence
      59: astore        10
      61: iconst_0
      62: istore        11
      64: iconst_0
      65: istore        12
      67: iload         12
      69: aload         10
      71: invokeinterface #30,  1           // InterfaceMethod java/lang/CharSequence.length:()I
      76: if_icmpge     124
      79: aload         10
      81: iload         12
      83: invokeinterface #34,  2           // InterfaceMethod java/lang/CharSequence.charAt:(I)C
      88: istore        13
      90: iload         13
      92: istore        14
      94: iconst_0
      95: istore        15
      97: iload         14
      99: bipush        97
     101: isub
     102: istore        16
     104: aload         9
     106: iload         16
     108: aload         9
     110: iload         16
     112: iaload
     113: iconst_1
     114: iadd
     115: iastore
     116: nop
     117: nop
     118: iinc          12, 1
     121: goto          67
     124: nop
     125: aload         9
     127: invokestatic  #40                 // Method kotlin/collections/ArraysKt.toList:([I)Ljava/util/List;
     130: astore        10
     132: aload_1
     133: aload         10
     135: new           #42                 // class java/util/ArrayList
     138: dup
     139: invokespecial #43                 // Method java/util/ArrayList."<init>":()V
     142: checkcast     #45                 // class java/util/List
     145: invokeinterface #49,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     150: checkcast     #45                 // class java/util/List
     153: astore        11
     155: aload         11
     157: aload         7
     159: invokeinterface #53,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     164: pop
     165: aload_1
     166: aload         10
     168: aload         11
     170: invokeinterface #56,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     175: pop
     176: nop
     177: nop
     178: iinc          4, 1
     181: goto          28
     184: nop
     185: new           #42                 // class java/util/ArrayList
     188: dup
     189: invokespecial #43                 // Method java/util/ArrayList."<init>":()V
     192: checkcast     #45                 // class java/util/List
     195: astore_2
     196: aload_1
     197: invokeinterface #60,  1           // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     202: checkcast     #62                 // class java/lang/Iterable
     205: astore_3
     206: iconst_0
     207: istore        4
     209: aload_3
     210: invokeinterface #66,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     215: astore        5
     217: aload         5
     219: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     224: ifeq          260
     227: aload         5
     229: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     234: astore        6
     236: aload         6
     238: checkcast     #45                 // class java/util/List
     241: astore        7
     243: iconst_0
     244: istore        8
     246: aload_2
     247: aload         7
     249: invokeinterface #53,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     254: pop
     255: nop
     256: nop
     257: goto          217
     260: nop
     261: aload_2
     262: areturn
}


/**
 * Given an array of integers nums and an integer k, return the total number of subarrays whose sum equals to k.
 *
 * A subarray is a contiguous non-empty sequence of elements within an array.
 *
 *
 *
 * Example 1:
 *
 * Input: nums = [1,1,1], k = 2
 * Output: 2
 * Example 2:
 *
 * Input: nums = [1,2,3], k = 3
 * Output: 2
 *
 *
 * Constraints:
 *
 * 1 <= nums.length <= 2 * 10^4
 * -1000 <= nums[i] <= 1000
 * -10^7 <= k <= 10^7
 */
fun subarraySum(nums: IntArray, k: Int): Int {
    val prefixSumCount = mutableMapOf<Int, Int>()
    prefixSumCount[0] = 1
    var currentPrefixSum = 0
    var subarraysWithSumK = 0
    for (number in nums) {
        currentPrefixSum += number
        val complement = currentPrefixSum - k
        subarraysWithSumK += prefixSumCount.getOrDefault(complement, 0)
        prefixSumCount[currentPrefixSum] = prefixSumCount.getOrDefault(currentPrefixSum, 0) + 1
    }
    return subarraysWithSumK
}

Compiled from "SubarraySumEqualsK.kt"
public final class SubarraySumEqualsKKt {
  public static final int subarraySum(int[], int);
    Code:
       0: aload_0
       1: ldc           #9                  // String nums
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #17                 // class java/util/LinkedHashMap
       9: dup
      10: invokespecial #21                 // Method java/util/LinkedHashMap."<init>":()V
      13: checkcast     #23                 // class java/util/Map
      16: astore_2
      17: aload_2
      18: iconst_0
      19: invokestatic  #29                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      22: iconst_1
      23: invokestatic  #29                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      26: invokeinterface #33,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      31: pop
      32: iconst_0
      33: istore_3
      34: iconst_0
      35: istore        4
      37: iconst_0
      38: istore        5
      40: aload_0
      41: arraylength
      42: istore        6
      44: iload         5
      46: iload         6
      48: if_icmpge     139
      51: aload_0
      52: iload         5
      54: iaload
      55: istore        7
      57: iload_3
      58: iload         7
      60: iadd
      61: istore_3
      62: iload_3
      63: iload_1
      64: isub
      65: istore        8
      67: iload         4
      69: aload_2
      70: iload         8
      72: invokestatic  #29                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      75: iconst_0
      76: invokestatic  #29                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      79: invokeinterface #36,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      84: checkcast     #38                 // class java/lang/Number
      87: invokevirtual #42                 // Method java/lang/Number.intValue:()I
      90: iadd
      91: istore        4
      93: iload_3
      94: invokestatic  #29                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      97: astore        9
      99: aload_2
     100: aload         9
     102: aload_2
     103: iload_3
     104: invokestatic  #29                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     107: iconst_0
     108: invokestatic  #29                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     111: invokeinterface #36,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     116: checkcast     #38                 // class java/lang/Number
     119: invokevirtual #42                 // Method java/lang/Number.intValue:()I
     122: iconst_1
     123: iadd
     124: invokestatic  #29                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     127: invokeinterface #33,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     132: pop
     133: iinc          5, 1
     136: goto          44
     139: iload         4
     141: ireturn
}


/**
 * Given an integer n, return the least number of perfect square numbers that sum to n.
 *
 * A perfect square is an integer that is the square of an integer;
 * in other words, it is the product of some integer with itself.
 * For example, 1, 4, 9, and 16 are perfect squares while 3 and 11 are not.
 *
 *
 *
 * Example 1:
 *
 * Input: n = 12
 * Output: 3
 * Explanation: 12 = 4 + 4 + 4.
 * Example 2:
 *
 * Input: n = 13
 * Output: 2
 * Explanation: 13 = 4 + 9.
 *
 *
 * Constraints:
 *
 * 1 <= n <= 10^4
 * @see LeetCode
 */
fun numSquares(n: Int): Int {
    val resultList = IntArray(n + 1) { Int.MAX_VALUE }
    resultList[0] = 0
    for (index in 1..n) {
        var squareNum = 1
        while (index >= squareNum * squareNum) {
            resultList[index] = minOf(resultList[index], 1 + resultList[index - squareNum * squareNum])
            squareNum++
        }
    }
    return resultList[n]
}

Compiled from "PerfectSquares.kt"
public final class PerfectSquaresKt {
  public static final int numSquares(int);
    Code:
       0: iconst_0
       1: istore_2
       2: iload_0
       3: iconst_1
       4: iadd
       5: istore_3
       6: iload_3
       7: newarray       int
       9: astore        4
      11: iload_2
      12: iload_3
      13: if_icmpge     32
      16: iload_2
      17: istore        5
      19: aload         4
      21: iload         5
      23: ldc           #7                  // int 2147483647
      25: iastore
      26: iinc          2, 1
      29: goto          11
      32: aload         4
      34: astore_1
      35: aload_1
      36: iconst_0
      37: iconst_0
      38: iastore
      39: iconst_1
      40: istore_2
      41: iload_2
      42: iload_0
      43: if_icmpgt     90
      46: iconst_1
      47: istore_3
      48: iload_2
      49: iload_3
      50: iload_3
      51: imul
      52: if_icmplt     79
      55: aload_1
      56: iload_2
      57: aload_1
      58: iload_2
      59: iaload
      60: iconst_1
      61: aload_1
      62: iload_2
      63: iload_3
      64: iload_3
      65: imul
      66: isub
      67: iaload
      68: iadd
      69: invokestatic  #13                 // Method java/lang/Math.min:(II)I
      72: iastore
      73: iinc          3, 1
      76: goto          48
      79: iload_2
      80: iload_0
      81: if_icmpeq     90
      84: iinc          2, 1
      87: goto          46
      90: aload_1
      91: iload_0
      92: iaload
      93: ireturn
}


/**
 * Given two strings text1 and text2, return the length of their longest common subsequence.
 * If there is no common subsequence, return 0.
 *
 * A subsequence of a string is a new string generated from the original string with some characters (can be none) deleted without changing the relative order of the remaining characters.
 *
 * For example, "ace" is a subsequence of "abcde".
 * A common subsequence of two strings is a subsequence that is common to both strings.
 *
 *
 *
 * Example 1:
 *
 * Input: text1 = "abcde", text2 = "ace"
 * Output: 3
 * Explanation: The longest common subsequence is "ace" and its length is 3.
 * Example 2:
 *
 * Input: text1 = "abc", text2 = "abc"
 * Output: 3
 * Explanation: The longest common subsequence is "abc" and its length is 3.
 * Example 3:
 *
 * Input: text1 = "abc", text2 = "def"
 * Output: 0
 * Explanation: There is no such common subsequence, so the result is 0.
 *
 *
 * Constraints:
 *
 * 1 <= text1.length, text2.length <= 1000
 * text1 and text2 consist of only lowercase English characters.
 * @see <a https://leetcode.com/problems/longest-common-subsequence/">LeetCode</a>
 */
fun longestCommonSubsequence(text1: String, text2: String): Int {
    if (text1.isEmpty() || text2.isEmpty()) {
        return 0
    }

    val memoryArray = Array<IntArray>(text1.length + 1) { IntArray(text2.length + 1) }

    for (index1 in (0 until text1.length).reversed()) {
        for (index2 in (0 until text2.length).reversed()) {
            val length = if (text1[index1] == text2[index2]) {
                1 + memoryArray[index1 + 1][index2 + 1]
            } else {
                maxOf(memoryArray[index1 + 1][index2], memoryArray[index1][index2 + 1])
            }
            memoryArray[index1][index2] = length
        }
    }
    return memoryArray[0][0]
}

Compiled from "LongestCommonSubsequence.kt"
public final class LongestCommonSubsequenceKt {
  public static final int longestCommonSubsequence(java.lang.String, java.lang.String);
    Code:
       0: aload_0
       1: ldc           #9                  // String text1
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #17                 // String text2
       9: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_0
      13: checkcast     #19                 // class java/lang/CharSequence
      16: invokeinterface #23,  1           // InterfaceMethod java/lang/CharSequence.length:()I
      21: ifne          28
      24: iconst_1
      25: goto          29
      28: iconst_0
      29: ifne          52
      32: aload_1
      33: checkcast     #19                 // class java/lang/CharSequence
      36: invokeinterface #23,  1           // InterfaceMethod java/lang/CharSequence.length:()I
      41: ifne          48
      44: iconst_1
      45: goto          49
      48: iconst_0
      49: ifeq          54
      52: iconst_0
      53: ireturn
      54: iconst_0
      55: istore_3
      56: aload_0
      57: invokevirtual #26                 // Method java/lang/String.length:()I
      60: iconst_1
      61: iadd
      62: istore        4
      64: iload         4
      66: anewarray     #28                 // class "[I"
      69: astore        5
      71: iload_3
      72: iload         4
      74: if_icmpge     99
      77: iload_3
      78: istore        6
      80: aload         5
      82: iload         6
      84: aload_1
      85: invokevirtual #26                 // Method java/lang/String.length:()I
      88: iconst_1
      89: iadd
      90: newarray       int
      92: aastore
      93: iinc          3, 1
      96: goto          71
      99: aload         5
     101: astore_2
     102: iconst_0
     103: aload_0
     104: invokevirtual #26                 // Method java/lang/String.length:()I
     107: invokestatic  #34                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     110: checkcast     #36                 // class kotlin/ranges/IntProgression
     113: invokestatic  #40                 // Method kotlin/ranges/RangesKt.reversed:(Lkotlin/ranges/IntProgression;)Lkotlin/ranges/IntProgression;
     116: astore_3
     117: aload_3
     118: invokevirtual #43                 // Method kotlin/ranges/IntProgression.getFirst:()I
     121: istore        4
     123: aload_3
     124: invokevirtual #46                 // Method kotlin/ranges/IntProgression.getLast:()I
     127: istore        5
     129: aload_3
     130: invokevirtual #49                 // Method kotlin/ranges/IntProgression.getStep:()I
     133: istore        6
     135: iload         6
     137: ifle          147
     140: iload         4
     142: iload         5
     144: if_icmple     159
     147: iload         6
     149: ifge          317
     152: iload         5
     154: iload         4
     156: if_icmpgt     317
     159: iconst_0
     160: aload_1
     161: invokevirtual #26                 // Method java/lang/String.length:()I
     164: invokestatic  #34                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     167: checkcast     #36                 // class kotlin/ranges/IntProgression
     170: invokestatic  #40                 // Method kotlin/ranges/RangesKt.reversed:(Lkotlin/ranges/IntProgression;)Lkotlin/ranges/IntProgression;
     173: astore        7
     175: aload         7
     177: invokevirtual #43                 // Method kotlin/ranges/IntProgression.getFirst:()I
     180: istore        8
     182: aload         7
     184: invokevirtual #46                 // Method kotlin/ranges/IntProgression.getLast:()I
     187: istore        9
     189: aload         7
     191: invokevirtual #49                 // Method kotlin/ranges/IntProgression.getStep:()I
     194: istore        10
     196: iload         10
     198: ifle          208
     201: iload         8
     203: iload         9
     205: if_icmple     220
     208: iload         10
     210: ifge          300
     213: iload         9
     215: iload         8
     217: if_icmpgt     300
     220: aload_0
     221: iload         4
     223: invokevirtual #53                 // Method java/lang/String.charAt:(I)C
     226: aload_1
     227: iload         8
     229: invokevirtual #53                 // Method java/lang/String.charAt:(I)C
     232: if_icmpne     251
     235: iconst_1
     236: aload_2
     237: iload         4
     239: iconst_1
     240: iadd
     241: aaload
     242: iload         8
     244: iconst_1
     245: iadd
     246: iaload
     247: iadd
     248: goto          272
     251: aload_2
     252: iload         4
     254: iconst_1
     255: iadd
     256: aaload
     257: iload         8
     259: iaload
     260: aload_2
     261: iload         4
     263: aaload
     264: iload         8
     266: iconst_1
     267: iadd
     268: iaload
     269: invokestatic  #59                 // Method java/lang/Math.max:(II)I
     272: istore        11
     274: aload_2
     275: iload         4
     277: aaload
     278: iload         8
     280: iload         11
     282: iastore
     283: iload         8
     285: iload         9
     287: if_icmpeq     300
     290: iload         8
     292: iload         10
     294: iadd
     295: istore        8
     297: goto          220
     300: iload         4
     302: iload         5
     304: if_icmpeq     317
     307: iload         4
     309: iload         6
     311: iadd
     312: istore        4
     314: goto          159
     317: aload_2
     318: iconst_0
     319: aaload
     320: iconst_0
     321: iaload
     322: ireturn
}


/**
 * Given a string s, return the number of palindromic substrings in it.
 *
 * A string is a palindrome when it reads the same backward as forward.
 *
 * A substring is a contiguous sequence of characters within the string.
 *
 *
 *
 * Example 1:
 *
 * Input: s = "abc"
 * Output: 3
 * Explanation: Three palindromic strings: "a", "b", "c".
 * Example 2:
 *
 * Input: s = "aaa"
 * Output: 6
 * Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".
 *
 *
 * Constraints:
 *
 * 1 <= s.length <= 1000
 * s consists of lowercase English letters.
 * @see LeetCode
 */
fun countSubstrings(s: String): Int {
    var substringCount = 0
    for (index in s.indices) {
        substringCount += countSubstringsWithCenter(s, index, index)
        substringCount += countSubstringsWithCenter(s, index, index + 1)
    }
    return substringCount
}

private fun countSubstringsWithCenter(s: String, start: Int, end: Int): Int {
    var count = 0
    var startIndex = start
    var endIndex = end
    while (startIndex >= 0 && endIndex < s.length && s[startIndex] == s[endIndex]) {
        count++
        startIndex--
        endIndex++
    }
    return count
}

Compiled from "PalindromicSubstrings.kt"
public final class PalindromicSubstringsKt {
  public static final int countSubstrings(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #9                  // String s
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: iconst_0
       7: istore_1
       8: iconst_0
       9: istore_2
      10: aload_0
      11: checkcast     #17                 // class java/lang/CharSequence
      14: invokeinterface #21,  1           // InterfaceMethod java/lang/CharSequence.length:()I
      19: istore_3
      20: iload_2
      21: iload_3
      22: if_icmpge     51
      25: iload_1
      26: aload_0
      27: iload_2
      28: iload_2
      29: invokestatic  #25                 // Method countSubstringsWithCenter:(Ljava/lang/String;II)I
      32: iadd
      33: istore_1
      34: iload_1
      35: aload_0
      36: iload_2
      37: iload_2
      38: iconst_1
      39: iadd
      40: invokestatic  #25                 // Method countSubstringsWithCenter:(Ljava/lang/String;II)I
      43: iadd
      44: istore_1
      45: iinc          2, 1
      48: goto          20
      51: iload_1
      52: ireturn

  private static final int countSubstringsWithCenter(java.lang.String, int, int);
    Code:
       0: iconst_0
       1: istore_3
       2: iload_1
       3: istore        4
       5: iload_2
       6: istore        5
       8: iload         4
      10: iflt          49
      13: iload         5
      15: aload_0
      16: invokevirtual #32                 // Method java/lang/String.length:()I
      19: if_icmpge     49
      22: aload_0
      23: iload         4
      25: invokevirtual #36                 // Method java/lang/String.charAt:(I)C
      28: aload_0
      29: iload         5
      31: invokevirtual #36                 // Method java/lang/String.charAt:(I)C
      34: if_icmpne     49
      37: iinc          3, 1
      40: iinc          4, -1
      43: iinc          5, 1
      46: goto          8
      49: iload_3
      50: ireturn
}


/**
 * Swap two elements in an array.
 */
private fun swap(arr: Array<Int>, i: Int, j: Int) {
    val temp = arr[i]
    arr[i] = arr[j]
    arr[j] = temp
}

/**
 * Partition the array around a randomly selected pivot.
 * Return the index of the pivot.
 */
private fun partition(arr: Array<Int>, left: Int, right: Int): Int {
    val randomIndex = (left..right).random()
    swap(arr, randomIndex, right)
    val pivot = arr[right]

    var pivotIndex = left - 1
    for (index in left..right) {
        if (arr[index] <= pivot) {
            pivotIndex++
            swap(arr, pivotIndex, index)
        }
    }
    return pivotIndex
}

/**
 * Quick sort the array.
 */
private fun quickSort(arr: Array<Int>, left: Int, right: Int) {
    if (left < right) {
        val pivotIndex = partition(arr, left, right)
        quickSort(arr, left, pivotIndex - 1)
        quickSort(arr, pivotIndex + 1, right)
    }
}

fun main() {

    val arrayOfIntegers = readLine()?.trimEnd()?.split(" ")?.map { it.toInt() }?.toTypedArray() ?: return

    quickSort(arrayOfIntegers, 0, arrayOfIntegers.size-1)

    arrayOfIntegers.forEach { print("$it ") }
}

Compiled from "QuickSort.kt"
public final class QuickSortKt {
  private static final void swap(java.lang.Integer[], int, int);
    Code:
       0: aload_0
       1: iload_1
       2: aaload
       3: invokevirtual #12                 // Method java/lang/Integer.intValue:()I
       6: istore_3
       7: aload_0
       8: iload_1
       9: aload_0
      10: iload_2
      11: aaload
      12: aastore
      13: aload_0
      14: iload_2
      15: iload_3
      16: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      19: aastore
      20: return

  private static final int partition(java.lang.Integer[], int, int);
    Code:
       0: new           #26                 // class kotlin/ranges/IntRange
       3: dup
       4: iload_1
       5: iload_2
       6: invokespecial #30                 // Method kotlin/ranges/IntRange."<init>":(II)V
       9: getstatic     #36                 // Field kotlin/random/Random.Default:Lkotlin/random/Random$Default;
      12: checkcast     #32                 // class kotlin/random/Random
      15: invokestatic  #42                 // Method kotlin/ranges/RangesKt.random:(Lkotlin/ranges/IntRange;Lkotlin/random/Random;)I
      18: istore_3
      19: aload_0
      20: iload_3
      21: iload_2
      22: invokestatic  #44                 // Method swap:([Ljava/lang/Integer;II)V
      25: aload_0
      26: iload_2
      27: aaload
      28: invokevirtual #12                 // Method java/lang/Integer.intValue:()I
      31: istore        4
      33: iload_1
      34: iconst_1
      35: isub
      36: istore        5
      38: iload_1
      39: istore        6
      41: iload         6
      43: iload_2
      44: if_icmpgt     82
      47: aload_0
      48: iload         6
      50: aaload
      51: invokevirtual #12                 // Method java/lang/Integer.intValue:()I
      54: iload         4
      56: if_icmpgt     70
      59: iinc          5, 1
      62: aload_0
      63: iload         5
      65: iload         6
      67: invokestatic  #44                 // Method swap:([Ljava/lang/Integer;II)V
      70: iload         6
      72: iload_2
      73: if_icmpeq     82
      76: iinc          6, 1
      79: goto          47
      82: iload         5
      84: ireturn

  private static final void quickSort(java.lang.Integer[], int, int);
    Code:
       0: iload_1
       1: iload_2
       2: if_icmpge     28
       5: aload_0
       6: iload_1
       7: iload_2
       8: invokestatic  #54                 // Method partition:([Ljava/lang/Integer;II)I
      11: istore_3
      12: aload_0
      13: iload_1
      14: iload_3
      15: iconst_1
      16: isub
      17: invokestatic  #56                 // Method quickSort:([Ljava/lang/Integer;II)V
      20: aload_0
      21: iload_3
      22: iconst_1
      23: iadd
      24: iload_2
      25: invokestatic  #56                 // Method quickSort:([Ljava/lang/Integer;II)V
      28: return

  public static final void main();
    Code:
       0: invokestatic  #64                 // Method kotlin/io/ConsoleKt.readLine:()Ljava/lang/String;
       3: dup
       4: ifnull        182
       7: checkcast     #66                 // class java/lang/CharSequence
      10: invokestatic  #72                 // Method kotlin/text/StringsKt.trimEnd:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
      13: invokevirtual #75                 // Method java/lang/Object.toString:()Ljava/lang/String;
      16: dup
      17: ifnull        182
      20: checkcast     #66                 // class java/lang/CharSequence
      23: iconst_1
      24: anewarray     #77                 // class java/lang/String
      27: astore        4
      29: aload         4
      31: iconst_0
      32: ldc           #79                 // String
      34: aastore
      35: aload         4
      37: iconst_0
      38: iconst_0
      39: bipush        6
      41: aconst_null
      42: invokestatic  #83                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      45: dup
      46: ifnull        182
      49: checkcast     #85                 // class java/lang/Iterable
      52: astore        5
      54: iconst_0
      55: istore        6
      57: aload         5
      59: astore        7
      61: new           #87                 // class java/util/ArrayList
      64: dup
      65: aload         5
      67: bipush        10
      69: invokestatic  #93                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      72: invokespecial #96                 // Method java/util/ArrayList."<init>":(I)V
      75: checkcast     #98                 // class java/util/Collection
      78: astore        8
      80: iconst_0
      81: istore        9
      83: aload         7
      85: invokeinterface #102,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      90: astore        10
      92: aload         10
      94: invokeinterface #108,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      99: ifeq          146
     102: aload         10
     104: invokeinterface #112,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     109: astore        11
     111: aload         8
     113: aload         11
     115: checkcast     #77                 // class java/lang/String
     118: astore        12
     120: astore        14
     122: iconst_0
     123: istore        13
     125: aload         12
     127: invokestatic  #116                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     130: nop
     131: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     134: aload         14
     136: swap
     137: invokeinterface #120,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     142: pop
     143: goto          92
     146: aload         8
     148: checkcast     #122                // class java/util/List
     151: nop
     152: checkcast     #98                 // class java/util/Collection
     155: astore        6
     157: iconst_0
     158: istore        7
     160: aload         6
     162: astore        8
     164: aload         8
     166: iconst_0
     167: anewarray     #8                  // class java/lang/Integer
     170: invokeinterface #126,  2          // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
     175: checkcast     #51                 // class "[Ljava/lang/Integer;"
     178: dup
     179: ifnonnull     184
     182: pop
     183: return
     184: astore_0
     185: aload_0
     186: iconst_0
     187: aload_0
     188: arraylength
     189: iconst_1
     190: isub
     191: invokestatic  #56                 // Method quickSort:([Ljava/lang/Integer;II)V
     194: aload_0
     195: astore_1
     196: iconst_0
     197: istore_2
     198: iconst_0
     199: istore_3
     200: aload_1
     201: arraylength
     202: istore        4
     204: iload_3
     205: iload         4
     207: if_icmpge     263
     210: aload_1
     211: iload_3
     212: aaload
     213: astore        5
     215: aload         5
     217: checkcast     #128                // class java/lang/Number
     220: invokevirtual #129                // Method java/lang/Number.intValue:()I
     223: istore        6
     225: iconst_0
     226: istore        7
     228: new           #131                // class java/lang/StringBuilder
     231: dup
     232: invokespecial #133                // Method java/lang/StringBuilder."<init>":()V
     235: iload         6
     237: invokevirtual #137                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     240: bipush        32
     242: invokevirtual #140                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     245: invokevirtual #141                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     248: getstatic     #147                // Field java/lang/System.out:Ljava/io/PrintStream;
     251: swap
     252: invokevirtual #153                // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     255: nop
     256: nop
     257: iinc          3, 1
     260: goto          204
     263: nop
     264: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #179                // Method main:()V
       3: return
}


data class MinesweeperBoard(val inputBoard: List<String>) {
    fun withNumbers(): List<String> =
        inputBoard.mapIndexed { row, str ->
            str.mapIndexed { col, cell -> when (cell) {
                '.' -> adjacentMines(row, col)
                else -> cell
            }
            }.joinToString("")
        }
    private fun adjacentMines(row: Int, col: Int): Char {
        val count =
            (Math.max(0, row - 1)..Math.min(inputBoard.size - 1, row + 1))
                .flatMap { i ->
                    (Math.max(0, col - 1)..Math.min(inputBoard[i].length - 1, col + 1))
                        .map { j ->
                            if (inputBoard[i][j] == '*') 1 else 0
                        }
                }
                .sum()
        return if (count > 0) (count + 48).toChar() else '.'
    }
}

fun main(args: Array<String>) {
    val a = MinesweeperBoard(
        listOf<String>(".", "*", ".", "*", ".", ".", ".", "*", ".", ".",
            ".", ".", "*", ".", ".", ".", ".", ".", ".", "."))
    println("Minesweeper board:")
    println(a.withNumbers())
}

Compiled from "Minesweeper.kt"
public final class MinesweeperKt {
  public static final void main(java.lang.String[]);
    Code:
       0: aload_0
       1: ldc           #9                  // String args
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #17                 // class MinesweeperBoard
       9: dup
      10: bipush        20
      12: anewarray     #19                 // class java/lang/String
      15: astore_2
      16: aload_2
      17: iconst_0
      18: ldc           #21                 // String .
      20: aastore
      21: aload_2
      22: iconst_1
      23: ldc           #23                 // String *
      25: aastore
      26: aload_2
      27: iconst_2
      28: ldc           #21                 // String .
      30: aastore
      31: aload_2
      32: iconst_3
      33: ldc           #23                 // String *
      35: aastore
      36: aload_2
      37: iconst_4
      38: ldc           #21                 // String .
      40: aastore
      41: aload_2
      42: iconst_5
      43: ldc           #21                 // String .
      45: aastore
      46: aload_2
      47: bipush        6
      49: ldc           #21                 // String .
      51: aastore
      52: aload_2
      53: bipush        7
      55: ldc           #23                 // String *
      57: aastore
      58: aload_2
      59: bipush        8
      61: ldc           #21                 // String .
      63: aastore
      64: aload_2
      65: bipush        9
      67: ldc           #21                 // String .
      69: aastore
      70: aload_2
      71: bipush        10
      73: ldc           #21                 // String .
      75: aastore
      76: aload_2
      77: bipush        11
      79: ldc           #21                 // String .
      81: aastore
      82: aload_2
      83: bipush        12
      85: ldc           #23                 // String *
      87: aastore
      88: aload_2
      89: bipush        13
      91: ldc           #21                 // String .
      93: aastore
      94: aload_2
      95: bipush        14
      97: ldc           #21                 // String .
      99: aastore
     100: aload_2
     101: bipush        15
     103: ldc           #21                 // String .
     105: aastore
     106: aload_2
     107: bipush        16
     109: ldc           #21                 // String .
     111: aastore
     112: aload_2
     113: bipush        17
     115: ldc           #21                 // String .
     117: aastore
     118: aload_2
     119: bipush        18
     121: ldc           #21                 // String .
     123: aastore
     124: aload_2
     125: bipush        19
     127: ldc           #21                 // String .
     129: aastore
     130: aload_2
     131: invokestatic  #29                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     134: invokespecial #33                 // Method MinesweeperBoard."<init>":(Ljava/util/List;)V
     137: astore_1
     138: ldc           #35                 // String Minesweeper board:
     140: getstatic     #41                 // Field java/lang/System.out:Ljava/io/PrintStream;
     143: swap
     144: invokevirtual #47                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     147: aload_1
     148: invokevirtual #51                 // Method MinesweeperBoard.withNumbers:()Ljava/util/List;
     151: getstatic     #41                 // Field java/lang/System.out:Ljava/io/PrintStream;
     154: swap
     155: invokevirtual #47                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     158: return
}


fun valArray(): IntArray
{
    val arr = IntArray(256)
    for (i in arr.indices) {
        arr[i] = i
    }

    return arr
}

fun hash(input: IntArray, values: IntArray, index: Int, skip: Int): Pair<Int, Int> {
    var curIndex = index
    var curSkip = skip
    for (range in input) {
        val halfRange = range / 2

        for (i in 0..(halfRange - 1)) {
            val i1 = (curIndex + i) % values.size
            val i2 = (curIndex + range - i - 1) % values.size

            values[i1] = values[i2].also { values[i2] = values[i1] }
        }

        curIndex = (curIndex + range + curSkip) % values.size
        curSkip++
    }

    return Pair(curIndex, curSkip)
}

fun solve(input: String)
{
    // Part 1
    val part1input = input.split(",").map { it.toInt() }.toIntArray()
    val values = valArray()
    hash(part1input, values, 0, 0)
    println(values[0] * values[1])

    // Part 2
    val part2input = ArrayList(List(input.length) { input[it].toInt()})
    part2input.addAll(arrayOf(17, 31, 73, 47, 23))

    val values2 = valArray()
    var skip = 0
    var index = 0

    // Repeat hash 64 times
    for (i in 1..64) {
        val (newIndex, newSkip) = hash(part2input.toIntArray(), values2, index, skip)
        index = newIndex
        skip = newSkip
    }

    for (i in 0..15) {
        val startIndex = 16 * i
        val endIndex = startIndex + 15

        val currentNum = values2.slice(startIndex..endIndex).reduce{a, b -> a.xor(b)}
        print("%02x".format(currentNum))
    }
    println()

}

fun main(args: Array<String>)
{
    solve(readLine()!!)
}

Compiled from "solution.kt"
public final class SolutionKt {
  public static final int[] valArray();
    Code:
       0: sipush        256
       3: newarray       int
       5: astore_0
       6: iconst_0
       7: istore_1
       8: aload_0
       9: arraylength
      10: istore_2
      11: iload_1
      12: iload_2
      13: if_icmpge     26
      16: aload_0
      17: iload_1
      18: iload_1
      19: iastore
      20: iinc          1, 1
      23: goto          11
      26: aload_0
      27: areturn

  public static final kotlin.Pair<java.lang.Integer, java.lang.Integer> hash(int[], int[], int, int);
    Code:
       0: aload_0
       1: ldc           #17                 // String input
       3: invokestatic  #23                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #25                 // String values
       9: invokestatic  #23                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: iload_2
      13: istore        4
      15: iload_3
      16: istore        5
      18: iconst_0
      19: istore        6
      21: aload_0
      22: arraylength
      23: istore        7
      25: iload         6
      27: iload         7
      29: if_icmpge     160
      32: aload_0
      33: iload         6
      35: iaload
      36: istore        8
      38: iload         8
      40: iconst_2
      41: idiv
      42: istore        9
      44: iconst_0
      45: istore        10
      47: iload         9
      49: iconst_1
      50: isub
      51: istore        11
      53: iload         10
      55: iload         11
      57: if_icmpgt     138
      60: iload         4
      62: iload         10
      64: iadd
      65: aload_1
      66: arraylength
      67: irem
      68: istore        12
      70: iload         4
      72: iload         8
      74: iadd
      75: iload         10
      77: isub
      78: iconst_1
      79: isub
      80: aload_1
      81: arraylength
      82: irem
      83: istore        13
      85: aload_1
      86: iload         12
      88: aload_1
      89: iload         13
      91: iaload
      92: istore        14
      94: iload         14
      96: istore        15
      98: istore        18
     100: astore        17
     102: iconst_0
     103: istore        16
     105: aload_1
     106: iload         13
     108: aload_1
     109: iload         12
     111: iaload
     112: iastore
     113: getstatic     #31                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     116: astore        19
     118: aload         17
     120: iload         18
     122: iload         14
     124: iastore
     125: iload         10
     127: iload         11
     129: if_icmpeq     138
     132: iinc          10, 1
     135: goto          60
     138: iload         4
     140: iload         8
     142: iadd
     143: iload         5
     145: iadd
     146: aload_1
     147: arraylength
     148: irem
     149: istore        4
     151: iinc          5, 1
     154: iinc          6, 1
     157: goto          25
     160: new           #33                 // class kotlin/Pair
     163: dup
     164: iload         4
     166: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     169: iload         5
     171: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     174: invokespecial #43                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     177: areturn

  public static final void solve(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #17                 // String input
       3: invokestatic  #23                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: checkcast     #57                 // class java/lang/CharSequence
      10: iconst_1
      11: anewarray     #59                 // class java/lang/String
      14: astore_2
      15: aload_2
      16: iconst_0
      17: ldc           #61                 // String ,
      19: aastore
      20: aload_2
      21: iconst_0
      22: iconst_0
      23: bipush        6
      25: aconst_null
      26: invokestatic  #67                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      29: checkcast     #69                 // class java/lang/Iterable
      32: astore_2
      33: iconst_0
      34: istore_3
      35: aload_2
      36: astore        4
      38: new           #71                 // class java/util/ArrayList
      41: dup
      42: aload_2
      43: bipush        10
      45: invokestatic  #77                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      48: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
      51: checkcast     #82                 // class java/util/Collection
      54: astore        5
      56: iconst_0
      57: istore        6
      59: aload         4
      61: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      66: astore        7
      68: aload         7
      70: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      75: ifeq          122
      78: aload         7
      80: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      85: astore        8
      87: aload         5
      89: aload         8
      91: checkcast     #59                 // class java/lang/String
      94: astore        9
      96: astore        18
      98: iconst_0
      99: istore        10
     101: aload         9
     103: invokestatic  #100                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     106: nop
     107: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     110: aload         18
     112: swap
     113: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     118: pop
     119: goto          68
     122: aload         5
     124: checkcast     #106                // class java/util/List
     127: nop
     128: checkcast     #82                 // class java/util/Collection
     131: invokestatic  #110                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     134: astore_1
     135: invokestatic  #112                // Method valArray:()[I
     138: astore_2
     139: aload_1
     140: aload_2
     141: iconst_0
     142: iconst_0
     143: invokestatic  #114                // Method hash:([I[III)Lkotlin/Pair;
     146: pop
     147: aload_2
     148: iconst_0
     149: iaload
     150: aload_2
     151: iconst_1
     152: iaload
     153: imul
     154: istore_3
     155: getstatic     #120                // Field java/lang/System.out:Ljava/io/PrintStream;
     158: iload_3
     159: invokevirtual #125                // Method java/io/PrintStream.println:(I)V
     162: aload_0
     163: invokevirtual #129                // Method java/lang/String.length:()I
     166: istore        4
     168: new           #71                 // class java/util/ArrayList
     171: dup
     172: iload         4
     174: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     177: astore        5
     179: iconst_0
     180: istore        6
     182: iload         6
     184: iload         4
     186: if_icmpge     226
     189: iload         6
     191: istore        7
     193: aload         5
     195: iload         7
     197: istore        8
     199: astore        19
     201: iconst_0
     202: istore        9
     204: aload_0
     205: iload         8
     207: invokevirtual #133                // Method java/lang/String.charAt:(I)C
     210: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     213: aload         19
     215: swap
     216: invokevirtual #134                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     219: pop
     220: iinc          6, 1
     223: goto          182
     226: aload         5
     228: checkcast     #106                // class java/util/List
     231: checkcast     #82                 // class java/util/Collection
     234: astore        20
     236: new           #71                 // class java/util/ArrayList
     239: dup
     240: aload         20
     242: invokespecial #137                // Method java/util/ArrayList."<init>":(Ljava/util/Collection;)V
     245: astore_3
     246: aload_3
     247: checkcast     #82                 // class java/util/Collection
     250: iconst_5
     251: anewarray     #35                 // class java/lang/Integer
     254: astore        4
     256: aload         4
     258: iconst_0
     259: bipush        17
     261: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     264: aastore
     265: aload         4
     267: iconst_1
     268: bipush        31
     270: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     273: aastore
     274: aload         4
     276: iconst_2
     277: bipush        73
     279: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     282: aastore
     283: aload         4
     285: iconst_3
     286: bipush        47
     288: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     291: aastore
     292: aload         4
     294: iconst_4
     295: bipush        23
     297: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     300: aastore
     301: aload         4
     303: invokestatic  #141                // Method kotlin/collections/CollectionsKt.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
     306: pop
     307: invokestatic  #112                // Method valArray:()[I
     310: astore        4
     312: iconst_0
     313: istore        5
     315: iconst_0
     316: istore        6
     318: iconst_1
     319: istore        7
     321: iload         7
     323: bipush        65
     325: if_icmpge     386
     328: aload_3
     329: checkcast     #82                 // class java/util/Collection
     332: invokestatic  #110                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     335: aload         4
     337: iload         6
     339: iload         5
     341: invokestatic  #114                // Method hash:([I[III)Lkotlin/Pair;
     344: astore        8
     346: aload         8
     348: invokevirtual #144                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     351: checkcast     #146                // class java/lang/Number
     354: invokevirtual #149                // Method java/lang/Number.intValue:()I
     357: istore        9
     359: aload         8
     361: invokevirtual #152                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     364: checkcast     #146                // class java/lang/Number
     367: invokevirtual #149                // Method java/lang/Number.intValue:()I
     370: istore        10
     372: iload         9
     374: istore        6
     376: iload         10
     378: istore        5
     380: iinc          7, 1
     383: goto          321
     386: iconst_0
     387: istore        7
     389: iload         7
     391: bipush        16
     393: if_icmpge     591
     396: bipush        16
     398: iload         7
     400: imul
     401: istore        8
     403: iload         8
     405: bipush        15
     407: iadd
     408: istore        9
     410: aload         4
     412: new           #154                // class kotlin/ranges/IntRange
     415: dup
     416: iload         8
     418: iload         9
     420: invokespecial #157                // Method kotlin/ranges/IntRange."<init>":(II)V
     423: invokestatic  #163                // Method kotlin/collections/ArraysKt.slice:([ILkotlin/ranges/IntRange;)Ljava/util/List;
     426: checkcast     #69                 // class java/lang/Iterable
     429: astore        11
     431: iconst_0
     432: istore        12
     434: aload         11
     436: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     441: astore        13
     443: aload         13
     445: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     450: ifne          463
     453: new           #165                // class java/lang/UnsupportedOperationException
     456: dup
     457: ldc           #167                // String Empty collection can\'t be reduced.
     459: invokespecial #169                // Method java/lang/UnsupportedOperationException."<init>":(Ljava/lang/String;)V
     462: athrow
     463: aload         13
     465: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     470: astore        14
     472: aload         13
     474: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     479: ifeq          523
     482: aload         14
     484: aload         13
     486: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     491: checkcast     #146                // class java/lang/Number
     494: invokevirtual #149                // Method java/lang/Number.intValue:()I
     497: istore        15
     499: checkcast     #146                // class java/lang/Number
     502: invokevirtual #149                // Method java/lang/Number.intValue:()I
     505: istore        16
     507: iconst_0
     508: istore        17
     510: iload         16
     512: iload         15
     514: ixor
     515: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     518: astore        14
     520: goto          472
     523: aload         14
     525: checkcast     #146                // class java/lang/Number
     528: invokevirtual #149                // Method java/lang/Number.intValue:()I
     531: istore        10
     533: ldc           #171                // String %02x
     535: astore        11
     537: iconst_1
     538: anewarray     #4                  // class java/lang/Object
     541: astore        12
     543: aload         12
     545: iconst_0
     546: iload         10
     548: invokestatic  #39                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     551: aastore
     552: aload         12
     554: astore        12
     556: aload         11
     558: aload         12
     560: aload         12
     562: arraylength
     563: invokestatic  #177                // Method java/util/Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
     566: invokestatic  #181                // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
     569: dup
     570: ldc           #183                // String format(...)
     572: invokestatic  #186                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     575: astore        11
     577: getstatic     #120                // Field java/lang/System.out:Ljava/io/PrintStream;
     580: aload         11
     582: invokevirtual #190                // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     585: iinc          7, 1
     588: goto          389
     591: getstatic     #120                // Field java/lang/System.out:Ljava/io/PrintStream;
     594: invokevirtual #193                // Method java/io/PrintStream.println:()V
     597: return

  public static final void main(java.lang.String[]);
    Code:
       0: aload_0
       1: ldc           #226                // String args
       3: invokestatic  #23                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: invokestatic  #232                // Method kotlin/io/ConsoleKt.readLine:()Ljava/lang/String;
       9: dup
      10: invokestatic  #235                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      13: invokestatic  #237                // Method solve:(Ljava/lang/String;)V
      16: return
}


/**
 * Given map is how to encode any character in alphabet.
 * Write a decode function, that will return all possible variant that can be encoded for a given string
 * Example: for a given string "12", possible values [ab,l]
 * for "1213" --> [abac, abm, auc, lac, lm]
 */

val map = mapOf(
    "a" to "1", "b" to "2", "c" to "3", "d" to "4", "e" to "5",
    "f" to "6", "g" to "7", "h" to "8", "i" to "9", "j" to "10",
    "k" to "11", "l" to "12", "m" to "13", "n" to "14", "o" to "15",
    "p" to "16", "q" to "17", "r" to "18", "s" to "19", "t" to "20",
    "u" to "21", "v" to "22", "w" to "23", "x" to "24", "y" to "25", "z" to "26"
)

fun main() {
    println(decode("1213"))
}

val reversedMap = map.entries.associateBy({ it.value }) { it.key }
val abcMaxLength = map["z"]?.length ?: error("Assumption that z is the last character of the alphabet")

fun splitString(str : String,n : Int) : Pair<String,String> = Pair(str.toCharArray().dropLast(str.length-n).joinToString(""),
                                                                str.toCharArray().drop(n).joinToString(""))

tailrec fun decode(str: String) : Set<String> {
    fun aggregate(splitedPair : Pair<String,String>) : Set<String> {
        val set = (1..splitedPair.first.length)
                .map { splitString(splitedPair.first,it) }
                .map { reversedMap[it.first].orEmpty() + reversedMap[it.second].orEmpty() }
                .toSet()
        val set2 = decode(splitedPair.second)
        return set.map {el1 -> set2.map { el1 +it }.toSet() }.flatten().toSet()
    }
    return when {
        str.length <= abcMaxLength -> (1..str.length)
                .map { splitString(str,it) }
                .map { reversedMap[it.first].orEmpty() + reversedMap[it.second].orEmpty() }
                .toSet()
        else -> (1..abcMaxLength).asSequence()
                .map { splitString(str, it) }
                .map { aggregate(it) }
                .toSet().flatten().toSet()
    }
}

Compiled from "LangDecoder.kt"
public final class LangDecoderKt {
  private static final java.util.Map<java.lang.String, java.lang.String> map;

  private static final java.util.Map<java.lang.String, java.lang.String> reversedMap;

  private static final int abcMaxLength;

  public static final java.util.Map<java.lang.String, java.lang.String> getMap();
    Code:
       0: getstatic     #12                 // Field map:Ljava/util/Map;
       3: areturn

  public static final void main();
    Code:
       0: ldc           #16                 // String 1213
       2: invokestatic  #20                 // Method decode:(Ljava/lang/String;)Ljava/util/Set;
       5: getstatic     #26                 // Field java/lang/System.out:Ljava/io/PrintStream;
       8: swap
       9: invokevirtual #32                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      12: return

  public static final java.util.Map<java.lang.String, java.lang.String> getReversedMap();
    Code:
       0: getstatic     #36                 // Field reversedMap:Ljava/util/Map;
       3: areturn

  public static final int getAbcMaxLength();
    Code:
       0: getstatic     #42                 // Field abcMaxLength:I
       3: ireturn

  public static final kotlin.Pair<java.lang.String, java.lang.String> splitString(java.lang.String, int);
    Code:
       0: aload_0
       1: ldc           #47                 // String str
       3: invokestatic  #53                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #55                 // class kotlin/Pair
       9: dup
      10: aload_0
      11: invokevirtual #61                 // Method java/lang/String.toCharArray:()[C
      14: dup
      15: ldc           #63                 // String toCharArray(...)
      17: invokestatic  #66                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      20: aload_0
      21: invokevirtual #69                 // Method java/lang/String.length:()I
      24: iload_1
      25: isub
      26: invokestatic  #75                 // Method kotlin/collections/ArraysKt.dropLast:([CI)Ljava/util/List;
      29: checkcast     #77                 // class java/lang/Iterable
      32: ldc           #79                 // String
      34: checkcast     #81                 // class java/lang/CharSequence
      37: aconst_null
      38: aconst_null
      39: iconst_0
      40: aconst_null
      41: aconst_null
      42: bipush        62
      44: aconst_null
      45: invokestatic  #87                 // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
      48: aload_0
      49: invokevirtual #61                 // Method java/lang/String.toCharArray:()[C
      52: dup
      53: ldc           #63                 // String toCharArray(...)
      55: invokestatic  #66                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      58: iload_1
      59: invokestatic  #90                 // Method kotlin/collections/ArraysKt.drop:([CI)Ljava/util/List;
      62: checkcast     #77                 // class java/lang/Iterable
      65: ldc           #79                 // String
      67: checkcast     #81                 // class java/lang/CharSequence
      70: aconst_null
      71: aconst_null
      72: iconst_0
      73: aconst_null
      74: aconst_null
      75: bipush        62
      77: aconst_null
      78: invokestatic  #87                 // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
      81: invokespecial #94                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
      84: areturn

  public static final java.util.Set<java.lang.String> decode(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #47                 // String str
       3: invokestatic  #53                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: nop
       7: aload_0
       8: invokevirtual #69                 // Method java/lang/String.length:()I
      11: getstatic     #42                 // Field abcMaxLength:I
      14: if_icmpgt     282
      17: new           #99                 // class kotlin/ranges/IntRange
      20: dup
      21: iconst_1
      22: aload_0
      23: invokevirtual #69                 // Method java/lang/String.length:()I
      26: invokespecial #102                // Method kotlin/ranges/IntRange."<init>":(II)V
      29: checkcast     #77                 // class java/lang/Iterable
      32: astore_1
      33: nop
      34: iconst_0
      35: istore_2
      36: aload_1
      37: astore_3
      38: new           #104                // class java/util/ArrayList
      41: dup
      42: aload_1
      43: bipush        10
      45: invokestatic  #108                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      48: invokespecial #111                // Method java/util/ArrayList."<init>":(I)V
      51: checkcast     #113                // class java/util/Collection
      54: astore        4
      56: iconst_0
      57: istore        5
      59: aload_3
      60: invokeinterface #117,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      65: astore        6
      67: aload         6
      69: invokeinterface #123,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      74: ifeq          116
      77: aload         6
      79: checkcast     #125                // class kotlin/collections/IntIterator
      82: invokevirtual #128                // Method kotlin/collections/IntIterator.nextInt:()I
      85: istore        7
      87: aload         4
      89: iload         7
      91: istore        8
      93: astore        10
      95: iconst_0
      96: istore        9
      98: aload_0
      99: iload         8
     101: invokestatic  #130                // Method splitString:(Ljava/lang/String;I)Lkotlin/Pair;
     104: aload         10
     106: swap
     107: invokeinterface #134,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     112: pop
     113: goto          67
     116: aload         4
     118: checkcast     #136                // class java/util/List
     121: nop
     122: checkcast     #77                 // class java/lang/Iterable
     125: astore_1
     126: nop
     127: iconst_0
     128: istore_2
     129: aload_1
     130: astore_3
     131: new           #104                // class java/util/ArrayList
     134: dup
     135: aload_1
     136: bipush        10
     138: invokestatic  #108                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     141: invokespecial #111                // Method java/util/ArrayList."<init>":(I)V
     144: checkcast     #113                // class java/util/Collection
     147: astore        4
     149: iconst_0
     150: istore        5
     152: aload_3
     153: invokeinterface #117,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     158: astore        6
     160: aload         6
     162: invokeinterface #123,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     167: ifeq          267
     170: aload         6
     172: invokeinterface #140,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     177: astore        7
     179: aload         4
     181: aload         7
     183: checkcast     #55                 // class kotlin/Pair
     186: astore        8
     188: astore        10
     190: iconst_0
     191: istore        9
     193: new           #142                // class java/lang/StringBuilder
     196: dup
     197: invokespecial #144                // Method java/lang/StringBuilder."<init>":()V
     200: getstatic     #36                 // Field reversedMap:Ljava/util/Map;
     203: aload         8
     205: invokevirtual #147                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     208: invokeinterface #153,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     213: checkcast     #57                 // class java/lang/String
     216: dup
     217: ifnonnull     223
     220: pop
     221: ldc           #79                 // String
     223: invokevirtual #157                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     226: getstatic     #36                 // Field reversedMap:Ljava/util/Map;
     229: aload         8
     231: invokevirtual #160                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     234: invokeinterface #153,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     239: checkcast     #57                 // class java/lang/String
     242: dup
     243: ifnonnull     249
     246: pop
     247: ldc           #79                 // String
     249: invokevirtual #157                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     252: invokevirtual #164                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     255: aload         10
     257: swap
     258: invokeinterface #134,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     263: pop
     264: goto          160
     267: aload         4
     269: checkcast     #136                // class java/util/List
     272: nop
     273: checkcast     #77                 // class java/lang/Iterable
     276: invokestatic  #168                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     279: goto          331
     282: new           #99                 // class kotlin/ranges/IntRange
     285: dup
     286: iconst_1
     287: getstatic     #42                 // Field abcMaxLength:I
     290: invokespecial #102                // Method kotlin/ranges/IntRange."<init>":(II)V
     293: checkcast     #77                 // class java/lang/Iterable
     296: invokestatic  #172                // Method kotlin/collections/CollectionsKt.asSequence:(Ljava/lang/Iterable;)Lkotlin/sequences/Sequence;
     299: aload_0
     300: invokedynamic #190,  0            // InvokeDynamic #0:invoke:(Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
     305: invokestatic  #195                // Method kotlin/sequences/SequencesKt.map:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
     308: invokedynamic #204,  0            // InvokeDynamic #1:invoke:()Lkotlin/jvm/functions/Function1;
     313: invokestatic  #195                // Method kotlin/sequences/SequencesKt.map:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
     316: invokestatic  #207                // Method kotlin/sequences/SequencesKt.toSet:(Lkotlin/sequences/Sequence;)Ljava/util/Set;
     319: checkcast     #77                 // class java/lang/Iterable
     322: invokestatic  #211                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     325: checkcast     #77                 // class java/lang/Iterable
     328: invokestatic  #168                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     331: areturn

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #229                // Method main:()V
       3: return

  private static final java.util.Set<java.lang.String> decode$aggregate(kotlin.Pair<java.lang.String, java.lang.String>);
    Code:
       0: new           #99                 // class kotlin/ranges/IntRange
       3: dup
       4: iconst_1
       5: aload_0
       6: invokevirtual #147                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
       9: checkcast     #57                 // class java/lang/String
      12: invokevirtual #69                 // Method java/lang/String.length:()I
      15: invokespecial #102                // Method kotlin/ranges/IntRange."<init>":(II)V
      18: checkcast     #77                 // class java/lang/Iterable
      21: astore_2
      22: nop
      23: iconst_0
      24: istore_3
      25: aload_2
      26: astore        4
      28: new           #104                // class java/util/ArrayList
      31: dup
      32: aload_2
      33: bipush        10
      35: invokestatic  #108                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      38: invokespecial #111                // Method java/util/ArrayList."<init>":(I)V
      41: checkcast     #113                // class java/util/Collection
      44: astore        5
      46: iconst_0
      47: istore        6
      49: aload         4
      51: invokeinterface #117,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      56: astore        7
      58: aload         7
      60: invokeinterface #123,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      65: ifeq          113
      68: aload         7
      70: checkcast     #125                // class kotlin/collections/IntIterator
      73: invokevirtual #128                // Method kotlin/collections/IntIterator.nextInt:()I
      76: istore        8
      78: aload         5
      80: iload         8
      82: istore        9
      84: astore        22
      86: iconst_0
      87: istore        10
      89: aload_0
      90: invokevirtual #147                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      93: checkcast     #57                 // class java/lang/String
      96: iload         9
      98: invokestatic  #130                // Method splitString:(Ljava/lang/String;I)Lkotlin/Pair;
     101: aload         22
     103: swap
     104: invokeinterface #134,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     109: pop
     110: goto          58
     113: aload         5
     115: checkcast     #136                // class java/util/List
     118: nop
     119: checkcast     #77                 // class java/lang/Iterable
     122: astore_2
     123: nop
     124: iconst_0
     125: istore_3
     126: aload_2
     127: astore        4
     129: new           #104                // class java/util/ArrayList
     132: dup
     133: aload_2
     134: bipush        10
     136: invokestatic  #108                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     139: invokespecial #111                // Method java/util/ArrayList."<init>":(I)V
     142: checkcast     #113                // class java/util/Collection
     145: astore        5
     147: iconst_0
     148: istore        6
     150: aload         4
     152: invokeinterface #117,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     157: astore        7
     159: aload         7
     161: invokeinterface #123,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     166: ifeq          266
     169: aload         7
     171: invokeinterface #140,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     176: astore        8
     178: aload         5
     180: aload         8
     182: checkcast     #55                 // class kotlin/Pair
     185: astore        9
     187: astore        22
     189: iconst_0
     190: istore        10
     192: new           #142                // class java/lang/StringBuilder
     195: dup
     196: invokespecial #144                // Method java/lang/StringBuilder."<init>":()V
     199: getstatic     #36                 // Field reversedMap:Ljava/util/Map;
     202: aload         9
     204: invokevirtual #147                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     207: invokeinterface #153,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     212: checkcast     #57                 // class java/lang/String
     215: dup
     216: ifnonnull     222
     219: pop
     220: ldc           #79                 // String
     222: invokevirtual #157                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     225: getstatic     #36                 // Field reversedMap:Ljava/util/Map;
     228: aload         9
     230: invokevirtual #160                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     233: invokeinterface #153,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     238: checkcast     #57                 // class java/lang/String
     241: dup
     242: ifnonnull     248
     245: pop
     246: ldc           #79                 // String
     248: invokevirtual #157                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     251: invokevirtual #164                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     254: aload         22
     256: swap
     257: invokeinterface #134,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     262: pop
     263: goto          159
     266: aload         5
     268: checkcast     #136                // class java/util/List
     271: nop
     272: checkcast     #77                 // class java/lang/Iterable
     275: invokestatic  #168                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     278: astore_1
     279: aload_0
     280: invokevirtual #160                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     283: checkcast     #57                 // class java/lang/String
     286: invokestatic  #20                 // Method decode:(Ljava/lang/String;)Ljava/util/Set;
     289: astore_2
     290: aload_1
     291: checkcast     #77                 // class java/lang/Iterable
     294: astore_3
     295: iconst_0
     296: istore        4
     298: aload_3
     299: astore        5
     301: new           #104                // class java/util/ArrayList
     304: dup
     305: aload_3
     306: bipush        10
     308: invokestatic  #108                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     311: invokespecial #111                // Method java/util/ArrayList."<init>":(I)V
     314: checkcast     #113                // class java/util/Collection
     317: astore        6
     319: iconst_0
     320: istore        7
     322: aload         5
     324: invokeinterface #117,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     329: astore        8
     331: aload         8
     333: invokeinterface #123,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     338: ifeq          497
     341: aload         8
     343: invokeinterface #140,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     348: astore        9
     350: aload         6
     352: aload         9
     354: checkcast     #57                 // class java/lang/String
     357: astore        10
     359: astore        22
     361: iconst_0
     362: istore        11
     364: aload_2
     365: checkcast     #77                 // class java/lang/Iterable
     368: astore        12
     370: iconst_0
     371: istore        13
     373: aload         12
     375: astore        14
     377: new           #104                // class java/util/ArrayList
     380: dup
     381: aload         12
     383: bipush        10
     385: invokestatic  #108                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     388: invokespecial #111                // Method java/util/ArrayList."<init>":(I)V
     391: checkcast     #113                // class java/util/Collection
     394: astore        15
     396: iconst_0
     397: istore        16
     399: aload         14
     401: invokeinterface #117,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     406: astore        17
     408: aload         17
     410: invokeinterface #123,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     415: ifeq          473
     418: aload         17
     420: invokeinterface #140,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     425: astore        18
     427: aload         15
     429: aload         18
     431: checkcast     #57                 // class java/lang/String
     434: astore        19
     436: astore        20
     438: iconst_0
     439: istore        21
     441: new           #142                // class java/lang/StringBuilder
     444: dup
     445: invokespecial #144                // Method java/lang/StringBuilder."<init>":()V
     448: aload         10
     450: invokevirtual #157                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     453: aload         19
     455: invokevirtual #157                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     458: invokevirtual #164                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     461: aload         20
     463: swap
     464: invokeinterface #134,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     469: pop
     470: goto          408
     473: aload         15
     475: checkcast     #136                // class java/util/List
     478: nop
     479: checkcast     #77                 // class java/lang/Iterable
     482: invokestatic  #168                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     485: aload         22
     487: swap
     488: invokeinterface #134,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     493: pop
     494: goto          331
     497: aload         6
     499: checkcast     #136                // class java/util/List
     502: nop
     503: checkcast     #77                 // class java/lang/Iterable
     506: invokestatic  #211                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     509: checkcast     #77                 // class java/lang/Iterable
     512: invokestatic  #168                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     515: areturn

  private static final kotlin.Pair decode$lambda$8(java.lang.String, int);
    Code:
       0: aload_0
       1: iload_1
       2: invokestatic  #130                // Method splitString:(Ljava/lang/String;I)Lkotlin/Pair;
       5: areturn

  private static final java.util.Set decode$lambda$9(kotlin.Pair);
    Code:
       0: aload_0
       1: ldc           #244                // String it
       3: invokestatic  #53                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokestatic  #246                // Method decode$aggregate:(Lkotlin/Pair;)Ljava/util/Set;
      10: areturn

  static {};
    Code:
       0: bipush        26
       2: anewarray     #55                 // class kotlin/Pair
       5: astore_0
       6: aload_0
       7: iconst_0
       8: ldc           #249                // String a
      10: ldc           #251                // String 1
      12: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      15: aastore
      16: aload_0
      17: iconst_1
      18: ldc_w         #259                // String b
      21: ldc_w         #261                // String 2
      24: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      27: aastore
      28: aload_0
      29: iconst_2
      30: ldc_w         #263                // String c
      33: ldc_w         #265                // String 3
      36: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      39: aastore
      40: aload_0
      41: iconst_3
      42: ldc_w         #267                // String d
      45: ldc_w         #269                // String 4
      48: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      51: aastore
      52: aload_0
      53: iconst_4
      54: ldc_w         #271                // String e
      57: ldc_w         #273                // String 5
      60: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      63: aastore
      64: aload_0
      65: iconst_5
      66: ldc_w         #275                // String f
      69: ldc_w         #277                // String 6
      72: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      75: aastore
      76: aload_0
      77: bipush        6
      79: ldc_w         #279                // String g
      82: ldc_w         #281                // String 7
      85: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      88: aastore
      89: aload_0
      90: bipush        7
      92: ldc_w         #283                // String h
      95: ldc_w         #285                // String 8
      98: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     101: aastore
     102: aload_0
     103: bipush        8
     105: ldc_w         #287                // String i
     108: ldc_w         #289                // String 9
     111: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     114: aastore
     115: aload_0
     116: bipush        9
     118: ldc_w         #291                // String j
     121: ldc_w         #293                // String 10
     124: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     127: aastore
     128: aload_0
     129: bipush        10
     131: ldc_w         #295                // String k
     134: ldc_w         #297                // String 11
     137: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     140: aastore
     141: aload_0
     142: bipush        11
     144: ldc_w         #299                // String l
     147: ldc_w         #301                // String 12
     150: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     153: aastore
     154: aload_0
     155: bipush        12
     157: ldc_w         #303                // String m
     160: ldc_w         #305                // String 13
     163: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     166: aastore
     167: aload_0
     168: bipush        13
     170: ldc_w         #306                // String n
     173: ldc_w         #308                // String 14
     176: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     179: aastore
     180: aload_0
     181: bipush        14
     183: ldc_w         #310                // String o
     186: ldc_w         #312                // String 15
     189: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     192: aastore
     193: aload_0
     194: bipush        15
     196: ldc_w         #314                // String p
     199: ldc_w         #316                // String 16
     202: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     205: aastore
     206: aload_0
     207: bipush        16
     209: ldc_w         #318                // String q
     212: ldc_w         #320                // String 17
     215: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     218: aastore
     219: aload_0
     220: bipush        17
     222: ldc_w         #322                // String r
     225: ldc_w         #324                // String 18
     228: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     231: aastore
     232: aload_0
     233: bipush        18
     235: ldc_w         #326                // String s
     238: ldc_w         #328                // String 19
     241: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     244: aastore
     245: aload_0
     246: bipush        19
     248: ldc_w         #330                // String t
     251: ldc_w         #332                // String 20
     254: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     257: aastore
     258: aload_0
     259: bipush        20
     261: ldc_w         #334                // String u
     264: ldc_w         #336                // String 21
     267: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     270: aastore
     271: aload_0
     272: bipush        21
     274: ldc_w         #338                // String v
     277: ldc_w         #340                // String 22
     280: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     283: aastore
     284: aload_0
     285: bipush        22
     287: ldc_w         #342                // String w
     290: ldc_w         #344                // String 23
     293: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     296: aastore
     297: aload_0
     298: bipush        23
     300: ldc_w         #346                // String x
     303: ldc_w         #348                // String 24
     306: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     309: aastore
     310: aload_0
     311: bipush        24
     313: ldc_w         #350                // String y
     316: ldc_w         #352                // String 25
     319: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     322: aastore
     323: aload_0
     324: bipush        25
     326: ldc_w         #354                // String z
     329: ldc_w         #356                // String 26
     332: invokestatic  #257                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     335: aastore
     336: aload_0
     337: invokestatic  #362                // Method kotlin/collections/MapsKt.mapOf:([Lkotlin/Pair;)Ljava/util/Map;
     340: putstatic     #12                 // Field map:Ljava/util/Map;
     343: getstatic     #12                 // Field map:Ljava/util/Map;
     346: invokeinterface #366,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     351: checkcast     #77                 // class java/lang/Iterable
     354: astore_0
     355: iconst_0
     356: istore_1
     357: aload_0
     358: bipush        10
     360: invokestatic  #108                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     363: invokestatic  #370                // Method kotlin/collections/MapsKt.mapCapacity:(I)I
     366: bipush        16
     368: invokestatic  #376                // Method kotlin/ranges/RangesKt.coerceAtLeast:(II)I
     371: istore_2
     372: aload_0
     373: astore_3
     374: new           #378                // class java/util/LinkedHashMap
     377: dup
     378: iload_2
     379: invokespecial #379                // Method java/util/LinkedHashMap."<init>":(I)V
     382: checkcast     #149                // class java/util/Map
     385: astore        4
     387: iconst_0
     388: istore        5
     390: aload_3
     391: invokeinterface #117,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     396: astore        6
     398: aload         6
     400: invokeinterface #123,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     405: ifeq          485
     408: aload         6
     410: invokeinterface #140,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     415: astore        7
     417: aload         4
     419: aload         7
     421: checkcast     #381                // class java/util/Map$Entry
     424: astore        8
     426: astore        10
     428: iconst_0
     429: istore        9
     431: aload         8
     433: invokeinterface #384,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     438: checkcast     #57                 // class java/lang/String
     441: aload         10
     443: swap
     444: aload         7
     446: checkcast     #381                // class java/util/Map$Entry
     449: astore        8
     451: astore        11
     453: astore        10
     455: iconst_0
     456: istore        9
     458: aload         8
     460: invokeinterface #387,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     465: checkcast     #57                 // class java/lang/String
     468: astore        12
     470: aload         10
     472: aload         11
     474: aload         12
     476: invokeinterface #391,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     481: pop
     482: goto          398
     485: aload         4
     487: nop
     488: putstatic     #36                 // Field reversedMap:Ljava/util/Map;
     491: getstatic     #12                 // Field map:Ljava/util/Map;
     494: ldc_w         #354                // String z
     497: invokeinterface #153,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     502: checkcast     #57                 // class java/lang/String
     505: dup
     506: ifnull        515
     509: invokevirtual #69                 // Method java/lang/String.length:()I
     512: goto          530
     515: pop
     516: new           #393                // class java/lang/IllegalStateException
     519: dup
     520: ldc_w         #395                // String Assumption that z is the last character of the alphabet
     523: invokevirtual #396                // Method java/lang/Object.toString:()Ljava/lang/String;
     526: invokespecial #399                // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
     529: athrow
     530: putstatic     #42                 // Field abcMaxLength:I
     533: return
}