package solutions.CHK

import kotlin.jvm.internal.Intrinsics.Kotlin

object CheckoutSolution {

    fun checkout(skus: String): Int {
        var total = 0
        val counts = mutableMapOf<Char, Int>()
        val groupDiscountItems = listOf('S', 'T', 'X', 'Y', 'Z')
        val individualPrices = mapOf('S' to 20, 'T' to 20, 'X' to 17, 'Y' to 20, 'Z' to 21)

        for (item in skus) {
            when (item) {
                'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' -> counts[item] =
                    counts.getOrDefault(item, 0) + 1

                else -> return -1
            }
        }

        // Handle group discount offers
        var groupDiscountCount = groupDiscountItems.sumBy { counts.getOrDefault(it, 0) }
        while (groupDiscountCount >= 3) {
            total += 45
            groupDiscountCount -= 3
            // Remove the items that were part of the group discount from the counts map
            for (item in groupDiscountItems) {
                if (counts.getOrDefault(item, 0) > 0) {
                    counts[item] = counts.getOrDefault(item, 0) - 1
                }
            }
        }
        total += groupDiscountItems.sumBy { counts.getOrDefault(it, 0) * individualPrices.getOrDefault(it, 0) }

        // Handle E offers
        while (counts.getOrDefault('E', 0) >= 2) {
            total += 80
            counts['E'] = counts.getOrDefault('E', 0) - 2
            if (counts.getOrDefault('B', 0) > 0) {
                counts['B'] = counts.getOrDefault('B', 0) - 1
            }
        }
        total += counts.getOrDefault('E', 0) * 40

        // Handle F offers
        while (counts.getOrDefault('F', 0) >= 3) {
            total += 20
            counts['F'] = counts.getOrDefault('F', 0) - 3
        }
        total += counts.getOrDefault('F', 0) * 10

        // Handle H offers
        while (counts.getOrDefault('H', 0) >= 10) {
            total += 80
            counts['H'] = counts.getOrDefault('H', 0) - 10
        }
        while (counts.getOrDefault('H', 0) >= 5) {
            total += 45
            counts['H'] = counts.getOrDefault('H', 0) - 5
        }
        total += counts.getOrDefault('H', 0) * 10

        // Handle K offers
        while (counts.getOrDefault('K', 0) >= 2) {
            total += 120
            counts['K'] = counts.getOrDefault('K', 0) - 2
        }
        total += counts.getOrDefault('K', 0) * 70

        // Handle N offers
        while (counts.getOrDefault('N', 0) >= 3) {
            total += 120
            counts['N'] = counts.getOrDefault('N', 0) - 3
            if (counts.getOrDefault('M', 0) > 0) {
                counts['M'] = counts.getOrDefault('M', 0) - 1
            }
        }
        total += counts.getOrDefault('N', 0) * 40

        // Handle P offers
        while (counts.getOrDefault('P', 0) >= 5) {
            total += 200
            counts['P'] = counts.getOrDefault('P', 0) - 5
        }
        total += counts.getOrDefault('P', 0) * 50

        // Handle R offers
        while (counts.getOrDefault('R', 0) >= 3) {
            total += 150
            counts['R'] = counts.getOrDefault('R', 0) - 3
            if (counts.getOrDefault('Q', 0) > 0) {
                counts['Q'] = counts.getOrDefault('Q', 0) - 1
            }
        }
        total += counts.getOrDefault('R', 0) * 50

        // Handle Q offers
        while (counts.getOrDefault('Q', 0) >= 3) {
            total += 80
            counts['Q'] = counts.getOrDefault('Q', 0) - 3
        }
        total += counts.getOrDefault('Q', 0) * 30

        // Handle U offers
        while (counts.getOrDefault('U', 0) >= 4) {
            total += 120
            counts['U'] = counts.getOrDefault('U', 0) - 4
        }
        total += counts.getOrDefault('U', 0) * 40

        // Handle V offers
        while (counts.getOrDefault('V', 0) >= 3) {
            total += 130
            counts['V'] = counts.getOrDefault('V', 0) - 3
        }
        while (counts.getOrDefault('V', 0) >= 2) {
            total += 90
            counts['V'] = counts.getOrDefault('V', 0) - 2
        }
        total += counts.getOrDefault('V', 0) * 50

        // Handle A offers
        total += (counts.getOrDefault('A', 0) / 5) * 200
        counts['A'] = counts.getOrDefault('A', 0) % 5
        total += (counts.getOrDefault('A', 0) / 3) * 130
        counts['A'] = counts.getOrDefault('A', 0) % 3
        total += counts.getOrDefault('A', 0) * 50

        // Handle B offers
        total += (counts.getOrDefault('B', 0) / 2) * 45
        counts['B'] = counts.getOrDefault('B', 0) % 2
        total += counts.getOrDefault('B', 0) * 30

        // Handle C and D
        total += counts.getOrDefault('C', 0) * 20
        total += counts.getOrDefault('D', 0) * 15

        // Handle G, I, J, L, O, S, T, W, Y, Z
        total += counts.getOrDefault('G', 0) * 20
        total += counts.getOrDefault('I', 0) * 35
        total += counts.getOrDefault('J', 0) * 60
        total += counts.getOrDefault('L', 0) * 90
        total += counts.getOrDefault('M', 0) * 15
        total += counts.getOrDefault('O', 0) * 10
        total += counts.getOrDefault('W', 0) * 20

        return total
    }

}

Compiled from "CheckoutSolution.kt"
public final class solutions.CHK.CheckoutSolution {
  public static final solutions.CHK.CheckoutSolution INSTANCE;

  private solutions.CHK.CheckoutSolution();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final int checkout(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #15                 // String skus
       3: invokestatic  #21                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: iconst_0
       7: istore_2
       8: new           #23                 // class java/util/LinkedHashMap
      11: dup
      12: invokespecial #24                 // Method java/util/LinkedHashMap."<init>":()V
      15: checkcast     #26                 // class java/util/Map
      18: astore_3
      19: iconst_5
      20: anewarray     #28                 // class java/lang/Character
      23: astore        5
      25: aload         5
      27: iconst_0
      28: bipush        83
      30: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      33: aastore
      34: aload         5
      36: iconst_1
      37: bipush        84
      39: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      42: aastore
      43: aload         5
      45: iconst_2
      46: bipush        88
      48: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      51: aastore
      52: aload         5
      54: iconst_3
      55: bipush        89
      57: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      60: aastore
      61: aload         5
      63: iconst_4
      64: bipush        90
      66: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      69: aastore
      70: aload         5
      72: invokestatic  #38                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      75: astore        4
      77: iconst_5
      78: anewarray     #40                 // class kotlin/Pair
      81: astore        6
      83: aload         6
      85: iconst_0
      86: bipush        83
      88: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      91: bipush        20
      93: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      96: invokestatic  #51                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      99: aastore
     100: aload         6
     102: iconst_1
     103: bipush        84
     105: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     108: bipush        20
     110: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     113: invokestatic  #51                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     116: aastore
     117: aload         6
     119: iconst_2
     120: bipush        88
     122: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     125: bipush        17
     127: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     130: invokestatic  #51                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     133: aastore
     134: aload         6
     136: iconst_3
     137: bipush        89
     139: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     142: bipush        20
     144: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     147: invokestatic  #51                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     150: aastore
     151: aload         6
     153: iconst_4
     154: bipush        90
     156: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     159: bipush        21
     161: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     164: invokestatic  #51                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     167: aastore
     168: aload         6
     170: invokestatic  #57                 // Method kotlin/collections/MapsKt.mapOf:([Lkotlin/Pair;)Ljava/util/Map;
     173: astore        5
     175: iconst_0
     176: istore        6
     178: aload_1
     179: invokevirtual #63                 // Method java/lang/String.length:()I
     182: istore        7
     184: iload         6
     186: iload         7
     188: if_icmpge     374
     191: aload_1
     192: iload         6
     194: invokevirtual #67                 // Method java/lang/String.charAt:(I)C
     197: istore        8
     199: iload         8
     201: tableswitch   { // 65 to 90
                    65: 320
                    66: 320
                    67: 320
                    68: 320
                    69: 320
                    70: 320
                    71: 320
                    72: 320
                    73: 320
                    74: 320
                    75: 320
                    76: 320
                    77: 320
                    78: 320
                    79: 320
                    80: 320
                    81: 320
                    82: 320
                    83: 320
                    84: 320
                    85: 320
                    86: 320
                    87: 320
                    88: 320
                    89: 320
                    90: 320
               default: 366
          }
     320: iload         8
     322: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     325: astore        11
     327: nop
     328: aload_3
     329: aload         11
     331: aload_3
     332: iload         8
     334: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     337: iconst_0
     338: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     341: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     346: checkcast     #73                 // class java/lang/Number
     349: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     352: iconst_1
     353: iadd
     354: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     357: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     362: pop
     363: goto          368
     366: iconst_m1
     367: ireturn
     368: iinc          6, 1
     371: goto          184
     374: aload         4
     376: checkcast     #81                 // class java/lang/Iterable
     379: astore        7
     381: iconst_0
     382: istore        8
     384: iconst_0
     385: istore        9
     387: aload         7
     389: invokeinterface #85,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     394: astore        10
     396: aload         10
     398: invokeinterface #91,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     403: ifeq          465
     406: aload         10
     408: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     413: astore        11
     415: iload         9
     417: aload         11
     419: checkcast     #28                 // class java/lang/Character
     422: invokevirtual #99                 // Method java/lang/Character.charValue:()C
     425: istore        12
     427: istore        14
     429: iconst_0
     430: istore        13
     432: aload_3
     433: iload         12
     435: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     438: iconst_0
     439: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     442: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     447: checkcast     #73                 // class java/lang/Number
     450: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     453: istore        15
     455: iload         14
     457: iload         15
     459: iadd
     460: istore        9
     462: goto          396
     465: iload         9
     467: istore        6
     469: iload         6
     471: iconst_3
     472: if_icmplt     584
     475: iinc          2, 45
     478: iinc          6, -3
     481: aload         4
     483: invokeinterface #102,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     488: astore        7
     490: aload         7
     492: invokeinterface #91,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     497: ifeq          469
     500: aload         7
     502: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     507: checkcast     #28                 // class java/lang/Character
     510: invokevirtual #99                 // Method java/lang/Character.charValue:()C
     513: istore        8
     515: aload_3
     516: iload         8
     518: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     521: iconst_0
     522: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     525: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     530: checkcast     #73                 // class java/lang/Number
     533: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     536: ifle          490
     539: iload         8
     541: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     544: astore        10
     546: aload_3
     547: aload         10
     549: aload_3
     550: iload         8
     552: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     555: iconst_0
     556: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     559: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     564: checkcast     #73                 // class java/lang/Number
     567: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     570: iconst_1
     571: isub
     572: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     575: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     580: pop
     581: goto          490
     584: iload_2
     585: aload         4
     587: checkcast     #81                 // class java/lang/Iterable
     590: astore        7
     592: istore        14
     594: iconst_0
     595: istore        8
     597: iconst_0
     598: istore        9
     600: aload         7
     602: invokeinterface #85,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     607: astore        10
     609: aload         10
     611: invokeinterface #91,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     616: ifeq          701
     619: aload         10
     621: invokeinterface #95,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     626: astore        11
     628: iload         9
     630: aload         11
     632: checkcast     #28                 // class java/lang/Character
     635: invokevirtual #99                 // Method java/lang/Character.charValue:()C
     638: istore        12
     640: istore        15
     642: iconst_0
     643: istore        13
     645: aload_3
     646: iload         12
     648: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     651: iconst_0
     652: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     655: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     660: checkcast     #73                 // class java/lang/Number
     663: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     666: aload         5
     668: iload         12
     670: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     673: iconst_0
     674: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     677: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     682: checkcast     #73                 // class java/lang/Number
     685: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     688: imul
     689: istore        16
     691: iload         15
     693: iload         16
     695: iadd
     696: istore        9
     698: goto          609
     701: iload         9
     703: istore        15
     705: iload         14
     707: iload         15
     709: iadd
     710: istore_2
     711: aload_3
     712: bipush        69
     714: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     717: iconst_0
     718: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     721: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     726: checkcast     #73                 // class java/lang/Number
     729: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     732: iconst_2
     733: if_icmplt     842
     736: iinc          2, 80
     739: aload_3
     740: bipush        69
     742: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     745: aload_3
     746: bipush        69
     748: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     751: iconst_0
     752: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     755: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     760: checkcast     #73                 // class java/lang/Number
     763: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     766: iconst_2
     767: isub
     768: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     771: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     776: pop
     777: aload_3
     778: bipush        66
     780: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     783: iconst_0
     784: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     787: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     792: checkcast     #73                 // class java/lang/Number
     795: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     798: ifle          711
     801: aload_3
     802: bipush        66
     804: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     807: aload_3
     808: bipush        66
     810: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     813: iconst_0
     814: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     817: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     822: checkcast     #73                 // class java/lang/Number
     825: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     828: iconst_1
     829: isub
     830: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     833: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     838: pop
     839: goto          711
     842: iload_2
     843: aload_3
     844: bipush        69
     846: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     849: iconst_0
     850: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     853: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     858: checkcast     #73                 // class java/lang/Number
     861: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     864: bipush        40
     866: imul
     867: iadd
     868: istore_2
     869: aload_3
     870: bipush        70
     872: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     875: iconst_0
     876: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     879: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     884: checkcast     #73                 // class java/lang/Number
     887: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     890: iconst_3
     891: if_icmplt     938
     894: iinc          2, 20
     897: aload_3
     898: bipush        70
     900: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     903: aload_3
     904: bipush        70
     906: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     909: iconst_0
     910: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     913: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     918: checkcast     #73                 // class java/lang/Number
     921: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     924: iconst_3
     925: isub
     926: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     929: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     934: pop
     935: goto          869
     938: iload_2
     939: aload_3
     940: bipush        70
     942: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     945: iconst_0
     946: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     949: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     954: checkcast     #73                 // class java/lang/Number
     957: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     960: bipush        10
     962: imul
     963: iadd
     964: istore_2
     965: aload_3
     966: bipush        72
     968: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     971: iconst_0
     972: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     975: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     980: checkcast     #73                 // class java/lang/Number
     983: invokevirtual #76                 // Method java/lang/Number.intValue:()I
     986: bipush        10
     988: if_icmplt     1036
     991: iinc          2, 80
     994: aload_3
     995: bipush        72
     997: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1000: aload_3
    1001: bipush        72
    1003: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1006: iconst_0
    1007: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1010: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1015: checkcast     #73                 // class java/lang/Number
    1018: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1021: bipush        10
    1023: isub
    1024: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1027: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1032: pop
    1033: goto          965
    1036: aload_3
    1037: bipush        72
    1039: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1042: iconst_0
    1043: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1046: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1051: checkcast     #73                 // class java/lang/Number
    1054: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1057: iconst_5
    1058: if_icmplt     1105
    1061: iinc          2, 45
    1064: aload_3
    1065: bipush        72
    1067: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1070: aload_3
    1071: bipush        72
    1073: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1076: iconst_0
    1077: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1080: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1085: checkcast     #73                 // class java/lang/Number
    1088: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1091: iconst_5
    1092: isub
    1093: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1096: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1101: pop
    1102: goto          1036
    1105: iload_2
    1106: aload_3
    1107: bipush        72
    1109: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1112: iconst_0
    1113: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1116: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1121: checkcast     #73                 // class java/lang/Number
    1124: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1127: bipush        10
    1129: imul
    1130: iadd
    1131: istore_2
    1132: aload_3
    1133: bipush        75
    1135: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1138: iconst_0
    1139: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1142: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1147: checkcast     #73                 // class java/lang/Number
    1150: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1153: iconst_2
    1154: if_icmplt     1201
    1157: iinc          2, 120
    1160: aload_3
    1161: bipush        75
    1163: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1166: aload_3
    1167: bipush        75
    1169: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1172: iconst_0
    1173: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1176: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1181: checkcast     #73                 // class java/lang/Number
    1184: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1187: iconst_2
    1188: isub
    1189: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1192: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1197: pop
    1198: goto          1132
    1201: iload_2
    1202: aload_3
    1203: bipush        75
    1205: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1208: iconst_0
    1209: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1212: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1217: checkcast     #73                 // class java/lang/Number
    1220: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1223: bipush        70
    1225: imul
    1226: iadd
    1227: istore_2
    1228: aload_3
    1229: bipush        78
    1231: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1234: iconst_0
    1235: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1238: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1243: checkcast     #73                 // class java/lang/Number
    1246: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1249: iconst_3
    1250: if_icmplt     1359
    1253: iinc          2, 120
    1256: aload_3
    1257: bipush        78
    1259: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1262: aload_3
    1263: bipush        78
    1265: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1268: iconst_0
    1269: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1272: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1277: checkcast     #73                 // class java/lang/Number
    1280: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1283: iconst_3
    1284: isub
    1285: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1288: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1293: pop
    1294: aload_3
    1295: bipush        77
    1297: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1300: iconst_0
    1301: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1304: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1309: checkcast     #73                 // class java/lang/Number
    1312: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1315: ifle          1228
    1318: aload_3
    1319: bipush        77
    1321: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1324: aload_3
    1325: bipush        77
    1327: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1330: iconst_0
    1331: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1334: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1339: checkcast     #73                 // class java/lang/Number
    1342: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1345: iconst_1
    1346: isub
    1347: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1350: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1355: pop
    1356: goto          1228
    1359: iload_2
    1360: aload_3
    1361: bipush        78
    1363: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1366: iconst_0
    1367: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1370: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1375: checkcast     #73                 // class java/lang/Number
    1378: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1381: bipush        40
    1383: imul
    1384: iadd
    1385: istore_2
    1386: aload_3
    1387: bipush        80
    1389: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1392: iconst_0
    1393: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1396: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1401: checkcast     #73                 // class java/lang/Number
    1404: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1407: iconst_5
    1408: if_icmplt     1458
    1411: iload_2
    1412: sipush        200
    1415: iadd
    1416: istore_2
    1417: aload_3
    1418: bipush        80
    1420: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1423: aload_3
    1424: bipush        80
    1426: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1429: iconst_0
    1430: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1433: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1438: checkcast     #73                 // class java/lang/Number
    1441: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1444: iconst_5
    1445: isub
    1446: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1449: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1454: pop
    1455: goto          1386
    1458: iload_2
    1459: aload_3
    1460: bipush        80
    1462: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1465: iconst_0
    1466: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1469: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1474: checkcast     #73                 // class java/lang/Number
    1477: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1480: bipush        50
    1482: imul
    1483: iadd
    1484: istore_2
    1485: aload_3
    1486: bipush        82
    1488: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1491: iconst_0
    1492: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1495: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1500: checkcast     #73                 // class java/lang/Number
    1503: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1506: iconst_3
    1507: if_icmplt     1619
    1510: iload_2
    1511: sipush        150
    1514: iadd
    1515: istore_2
    1516: aload_3
    1517: bipush        82
    1519: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1522: aload_3
    1523: bipush        82
    1525: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1528: iconst_0
    1529: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1532: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1537: checkcast     #73                 // class java/lang/Number
    1540: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1543: iconst_3
    1544: isub
    1545: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1548: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1553: pop
    1554: aload_3
    1555: bipush        81
    1557: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1560: iconst_0
    1561: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1564: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1569: checkcast     #73                 // class java/lang/Number
    1572: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1575: ifle          1485
    1578: aload_3
    1579: bipush        81
    1581: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1584: aload_3
    1585: bipush        81
    1587: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1590: iconst_0
    1591: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1594: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1599: checkcast     #73                 // class java/lang/Number
    1602: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1605: iconst_1
    1606: isub
    1607: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1610: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1615: pop
    1616: goto          1485
    1619: iload_2
    1620: aload_3
    1621: bipush        82
    1623: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1626: iconst_0
    1627: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1630: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1635: checkcast     #73                 // class java/lang/Number
    1638: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1641: bipush        50
    1643: imul
    1644: iadd
    1645: istore_2
    1646: aload_3
    1647: bipush        81
    1649: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1652: iconst_0
    1653: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1656: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1661: checkcast     #73                 // class java/lang/Number
    1664: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1667: iconst_3
    1668: if_icmplt     1715
    1671: iinc          2, 80
    1674: aload_3
    1675: bipush        81
    1677: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1680: aload_3
    1681: bipush        81
    1683: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1686: iconst_0
    1687: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1690: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1695: checkcast     #73                 // class java/lang/Number
    1698: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1701: iconst_3
    1702: isub
    1703: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1706: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1711: pop
    1712: goto          1646
    1715: iload_2
    1716: aload_3
    1717: bipush        81
    1719: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1722: iconst_0
    1723: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1726: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1731: checkcast     #73                 // class java/lang/Number
    1734: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1737: bipush        30
    1739: imul
    1740: iadd
    1741: istore_2
    1742: aload_3
    1743: bipush        85
    1745: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1748: iconst_0
    1749: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1752: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1757: checkcast     #73                 // class java/lang/Number
    1760: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1763: iconst_4
    1764: if_icmplt     1811
    1767: iinc          2, 120
    1770: aload_3
    1771: bipush        85
    1773: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1776: aload_3
    1777: bipush        85
    1779: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1782: iconst_0
    1783: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1786: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1791: checkcast     #73                 // class java/lang/Number
    1794: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1797: iconst_4
    1798: isub
    1799: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1802: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1807: pop
    1808: goto          1742
    1811: iload_2
    1812: aload_3
    1813: bipush        85
    1815: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1818: iconst_0
    1819: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1822: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1827: checkcast     #73                 // class java/lang/Number
    1830: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1833: bipush        40
    1835: imul
    1836: iadd
    1837: istore_2
    1838: aload_3
    1839: bipush        86
    1841: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1844: iconst_0
    1845: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1848: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1853: checkcast     #73                 // class java/lang/Number
    1856: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1859: iconst_3
    1860: if_icmplt     1910
    1863: iload_2
    1864: sipush        130
    1867: iadd
    1868: istore_2
    1869: aload_3
    1870: bipush        86
    1872: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1875: aload_3
    1876: bipush        86
    1878: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1881: iconst_0
    1882: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1885: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1890: checkcast     #73                 // class java/lang/Number
    1893: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1896: iconst_3
    1897: isub
    1898: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1901: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1906: pop
    1907: goto          1838
    1910: aload_3
    1911: bipush        86
    1913: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1916: iconst_0
    1917: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1920: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1925: checkcast     #73                 // class java/lang/Number
    1928: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1931: iconst_2
    1932: if_icmplt     1979
    1935: iinc          2, 90
    1938: aload_3
    1939: bipush        86
    1941: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1944: aload_3
    1945: bipush        86
    1947: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1950: iconst_0
    1951: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1954: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1959: checkcast     #73                 // class java/lang/Number
    1962: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    1965: iconst_2
    1966: isub
    1967: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1970: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1975: pop
    1976: goto          1910
    1979: iload_2
    1980: aload_3
    1981: bipush        86
    1983: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1986: iconst_0
    1987: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1990: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1995: checkcast     #73                 // class java/lang/Number
    1998: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2001: bipush        50
    2003: imul
    2004: iadd
    2005: istore_2
    2006: iload_2
    2007: aload_3
    2008: bipush        65
    2010: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2013: iconst_0
    2014: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2017: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2022: checkcast     #73                 // class java/lang/Number
    2025: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2028: iconst_5
    2029: idiv
    2030: sipush        200
    2033: imul
    2034: iadd
    2035: istore_2
    2036: aload_3
    2037: bipush        65
    2039: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2042: aload_3
    2043: bipush        65
    2045: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2048: iconst_0
    2049: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2052: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2057: checkcast     #73                 // class java/lang/Number
    2060: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2063: iconst_5
    2064: irem
    2065: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2068: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2073: pop
    2074: iload_2
    2075: aload_3
    2076: bipush        65
    2078: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2081: iconst_0
    2082: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2085: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2090: checkcast     #73                 // class java/lang/Number
    2093: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2096: iconst_3
    2097: idiv
    2098: sipush        130
    2101: imul
    2102: iadd
    2103: istore_2
    2104: aload_3
    2105: bipush        65
    2107: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2110: aload_3
    2111: bipush        65
    2113: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2116: iconst_0
    2117: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2120: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2125: checkcast     #73                 // class java/lang/Number
    2128: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2131: iconst_3
    2132: irem
    2133: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2136: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2141: pop
    2142: iload_2
    2143: aload_3
    2144: bipush        65
    2146: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2149: iconst_0
    2150: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2153: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2158: checkcast     #73                 // class java/lang/Number
    2161: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2164: bipush        50
    2166: imul
    2167: iadd
    2168: istore_2
    2169: iload_2
    2170: aload_3
    2171: bipush        66
    2173: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2176: iconst_0
    2177: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2180: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2185: checkcast     #73                 // class java/lang/Number
    2188: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2191: iconst_2
    2192: idiv
    2193: bipush        45
    2195: imul
    2196: iadd
    2197: istore_2
    2198: aload_3
    2199: bipush        66
    2201: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2204: aload_3
    2205: bipush        66
    2207: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2210: iconst_0
    2211: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2214: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2219: checkcast     #73                 // class java/lang/Number
    2222: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2225: iconst_2
    2226: irem
    2227: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2230: invokeinterface #79,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2235: pop
    2236: iload_2
    2237: aload_3
    2238: bipush        66
    2240: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2243: iconst_0
    2244: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2247: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2252: checkcast     #73                 // class java/lang/Number
    2255: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2258: bipush        30
    2260: imul
    2261: iadd
    2262: istore_2
    2263: iload_2
    2264: aload_3
    2265: bipush        67
    2267: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2270: iconst_0
    2271: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2274: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2279: checkcast     #73                 // class java/lang/Number
    2282: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2285: bipush        20
    2287: imul
    2288: iadd
    2289: istore_2
    2290: iload_2
    2291: aload_3
    2292: bipush        68
    2294: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2297: iconst_0
    2298: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2301: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2306: checkcast     #73                 // class java/lang/Number
    2309: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2312: bipush        15
    2314: imul
    2315: iadd
    2316: istore_2
    2317: iload_2
    2318: aload_3
    2319: bipush        71
    2321: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2324: iconst_0
    2325: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2328: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2333: checkcast     #73                 // class java/lang/Number
    2336: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2339: bipush        20
    2341: imul
    2342: iadd
    2343: istore_2
    2344: iload_2
    2345: aload_3
    2346: bipush        73
    2348: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2351: iconst_0
    2352: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2355: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2360: checkcast     #73                 // class java/lang/Number
    2363: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2366: bipush        35
    2368: imul
    2369: iadd
    2370: istore_2
    2371: iload_2
    2372: aload_3
    2373: bipush        74
    2375: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2378: iconst_0
    2379: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2382: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2387: checkcast     #73                 // class java/lang/Number
    2390: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2393: bipush        60
    2395: imul
    2396: iadd
    2397: istore_2
    2398: iload_2
    2399: aload_3
    2400: bipush        76
    2402: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2405: iconst_0
    2406: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2409: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2414: checkcast     #73                 // class java/lang/Number
    2417: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2420: bipush        90
    2422: imul
    2423: iadd
    2424: istore_2
    2425: iload_2
    2426: aload_3
    2427: bipush        77
    2429: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2432: iconst_0
    2433: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2436: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2441: checkcast     #73                 // class java/lang/Number
    2444: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2447: bipush        15
    2449: imul
    2450: iadd
    2451: istore_2
    2452: iload_2
    2453: aload_3
    2454: bipush        79
    2456: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2459: iconst_0
    2460: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2463: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2468: checkcast     #73                 // class java/lang/Number
    2471: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2474: bipush        10
    2476: imul
    2477: iadd
    2478: istore_2
    2479: iload_2
    2480: aload_3
    2481: bipush        87
    2483: invokestatic  #32                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2486: iconst_0
    2487: invokestatic  #45                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2490: invokeinterface #71,  3           // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2495: checkcast     #73                 // class java/lang/Number
    2498: invokevirtual #76                 // Method java/lang/Number.intValue:()I
    2501: bipush        20
    2503: imul
    2504: iadd
    2505: istore_2
    2506: iload_2
    2507: ireturn

  static {};
    Code:
       0: new           #2                  // class solutions/CHK/CheckoutSolution
       3: dup
       4: invokespecial #124                // Method "<init>":()V
       7: putstatic     #127                // Field INSTANCE:Lsolutions/CHK/CheckoutSolution;
      10: return
}


package day3

enum class Direction { RIGHT, UP, LEFT, DOWN }

var n = 100
val grid = Array(n) { Array(n, { "" }) }

fun surroundingsSum(x: Int, y: Int): Int {
    var sum = 0

    if (y > 0 && x > 0) {
        if (grid[y - 1][x - 1] != "") {
            val add = grid[y - 1][x - 1].trim().toInt()
            sum += add
        }
    }
    if (y > 0 && x <= n - 1) {
        if (grid[y - 1][x] != "") {
            val add = grid[y - 1][x].trim().toInt()
            sum += add
        }
    }
    if (y > 0 && x < n - 1) {
        if (grid[y - 1][x + 1] != "") {
            val add = grid[y - 1][x + 1].trim().toInt()
            sum += add
        }
    }
    if (x > 0 && y <= n - 1) {
        if (grid[y][x - 1] != "") {
            val add = grid[y][x - 1].trim().toInt()
            sum += add
        }
    }
    if (x < n - 1 && y <= n - 1) {
        if (grid[y][x + 1] != "") {
            val add = grid[y][x + 1].trim().toInt()
            sum += add
        }
    }
    if (y < n - 1 && x > 0) {
        if (grid[y + 1][x - 1] != "") {
            val add = grid[y + 1][x - 1].trim().toInt()
            sum += add
        }
    }
    if (x <= n - 1 && y < n - 1) {
        if (grid[y + 1][x] != "") {
            val add = grid[y + 1][x].trim().toInt()
            sum += add
        }
    }
    if (y < n - 1 && x < n - 1) {
        if (grid[y + 1][x + 1] != "") {
            val add = grid[y + 1][x + 1].trim().toInt()
            sum += add
        }
    }

    return sum
}

fun main(args: Array<String>) {
    var dir = Direction.RIGHT

    var y = n / 2
    var x = if (n % 2 == 0) y - 1 else y

    var iteration = 0;
    for (j in 1..n * n - 1 + 1) {
        iteration++;
        if (iteration == 1) {
            grid[y][x] = "1"
        } else {
            val s = surroundingsSum(x, y)
            if (s > 265149) {
                println(s)
                break
            }
            grid[y][x] = "%d".format(s)
        }

        when (dir) {
            Direction.RIGHT -> if (x <= n - 1 && grid[y - 1][x].none() && j > 1) dir = Direction.UP
            Direction.UP -> if (grid[y][x - 1].none()) dir = Direction.LEFT
            Direction.LEFT -> if (x == 0 || grid[y + 1][x].none()) dir = Direction.DOWN
            Direction.DOWN -> if (grid[y][x + 1].none()) dir = Direction.RIGHT
        }

        when (dir) {
            Direction.RIGHT -> x++
            Direction.UP -> y--
            Direction.LEFT -> x--
            Direction.DOWN -> y++
        }
    }

    for (row in grid) println(row.joinToString("") { s -> "[%6d]".format(s.toInt()) })
    println()
}

Compiled from "p2.kt"
public final class day3.P2Kt$WhenMappings {
  public static final int[] $EnumSwitchMapping$0;

  static {};
    Code:
       0: invokestatic  #14                 // Method day3/Direction.values:()[Lday3/Direction;
       3: arraylength
       4: newarray       int
       6: astore_0
       7: nop
       8: aload_0
       9: getstatic     #18                 // Field day3/Direction.RIGHT:Lday3/Direction;
      12: invokevirtual #22                 // Method day3/Direction.ordinal:()I
      15: iconst_1
      16: iastore
      17: goto          21
      20: astore_1
      21: nop
      22: aload_0
      23: getstatic     #25                 // Field day3/Direction.UP:Lday3/Direction;
      26: invokevirtual #22                 // Method day3/Direction.ordinal:()I
      29: iconst_2
      30: iastore
      31: goto          35
      34: astore_1
      35: nop
      36: aload_0
      37: getstatic     #28                 // Field day3/Direction.LEFT:Lday3/Direction;
      40: invokevirtual #22                 // Method day3/Direction.ordinal:()I
      43: iconst_3
      44: iastore
      45: goto          49
      48: astore_1
      49: nop
      50: aload_0
      51: getstatic     #31                 // Field day3/Direction.DOWN:Lday3/Direction;
      54: invokevirtual #22                 // Method day3/Direction.ordinal:()I
      57: iconst_4
      58: iastore
      59: goto          63
      62: astore_1
      63: aload_0
      64: putstatic     #35                 // Field $EnumSwitchMapping$0:[I
      67: return
    Exception table:
       from    to  target type
           7    17    20   Class java/lang/NoSuchFieldError
          21    31    34   Class java/lang/NoSuchFieldError
          35    45    48   Class java/lang/NoSuchFieldError
          49    59    62   Class java/lang/NoSuchFieldError
}

Compiled from "p2.kt"
public final class day3.P2Kt {
  private static int n;

  private static final java.lang.String[][] grid;

  public static final int getN();
    Code:
       0: getstatic     #10                 // Field n:I
       3: ireturn

  public static final void setN(int);
    Code:
       0: iload_0
       1: putstatic     #10                 // Field n:I
       4: return

  public static final java.lang.String[][] getGrid();
    Code:
       0: getstatic     #20                 // Field grid:[[Ljava/lang/String;
       3: areturn

  public static final int surroundingsSum(int, int);
    Code:
       0: iconst_0
       1: istore_2
       2: iload_1
       3: ifle          58
       6: iload_0
       7: ifle          58
      10: getstatic     #20                 // Field grid:[[Ljava/lang/String;
      13: iload_1
      14: iconst_1
      15: isub
      16: aaload
      17: iload_0
      18: iconst_1
      19: isub
      20: aaload
      21: ldc           #24                 // String
      23: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      26: ifne          58
      29: nop
      30: getstatic     #20                 // Field grid:[[Ljava/lang/String;
      33: iload_1
      34: iconst_1
      35: isub
      36: aaload
      37: iload_0
      38: iconst_1
      39: isub
      40: aaload
      41: checkcast     #32                 // class java/lang/CharSequence
      44: invokestatic  #38                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
      47: invokevirtual #42                 // Method java/lang/Object.toString:()Ljava/lang/String;
      50: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
      53: istore_3
      54: iload_2
      55: iload_3
      56: iadd
      57: istore_2
      58: iload_1
      59: ifle          115
      62: iload_0
      63: getstatic     #10                 // Field n:I
      66: iconst_1
      67: isub
      68: if_icmpgt     115
      71: getstatic     #20                 // Field grid:[[Ljava/lang/String;
      74: iload_1
      75: iconst_1
      76: isub
      77: aaload
      78: iload_0
      79: aaload
      80: ldc           #24                 // String
      82: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      85: ifne          115
      88: nop
      89: getstatic     #20                 // Field grid:[[Ljava/lang/String;
      92: iload_1
      93: iconst_1
      94: isub
      95: aaload
      96: iload_0
      97: aaload
      98: checkcast     #32                 // class java/lang/CharSequence
     101: invokestatic  #38                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     104: invokevirtual #42                 // Method java/lang/Object.toString:()Ljava/lang/String;
     107: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     110: istore_3
     111: iload_2
     112: iload_3
     113: iadd
     114: istore_2
     115: iload_1
     116: ifle          176
     119: iload_0
     120: getstatic     #10                 // Field n:I
     123: iconst_1
     124: isub
     125: if_icmpge     176
     128: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     131: iload_1
     132: iconst_1
     133: isub
     134: aaload
     135: iload_0
     136: iconst_1
     137: iadd
     138: aaload
     139: ldc           #24                 // String
     141: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     144: ifne          176
     147: nop
     148: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     151: iload_1
     152: iconst_1
     153: isub
     154: aaload
     155: iload_0
     156: iconst_1
     157: iadd
     158: aaload
     159: checkcast     #32                 // class java/lang/CharSequence
     162: invokestatic  #38                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     165: invokevirtual #42                 // Method java/lang/Object.toString:()Ljava/lang/String;
     168: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     171: istore_3
     172: iload_2
     173: iload_3
     174: iadd
     175: istore_2
     176: iload_0
     177: ifle          233
     180: iload_1
     181: getstatic     #10                 // Field n:I
     184: iconst_1
     185: isub
     186: if_icmpgt     233
     189: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     192: iload_1
     193: aaload
     194: iload_0
     195: iconst_1
     196: isub
     197: aaload
     198: ldc           #24                 // String
     200: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     203: ifne          233
     206: nop
     207: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     210: iload_1
     211: aaload
     212: iload_0
     213: iconst_1
     214: isub
     215: aaload
     216: checkcast     #32                 // class java/lang/CharSequence
     219: invokestatic  #38                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     222: invokevirtual #42                 // Method java/lang/Object.toString:()Ljava/lang/String;
     225: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     228: istore_3
     229: iload_2
     230: iload_3
     231: iadd
     232: istore_2
     233: iload_0
     234: getstatic     #10                 // Field n:I
     237: iconst_1
     238: isub
     239: if_icmpge     295
     242: iload_1
     243: getstatic     #10                 // Field n:I
     246: iconst_1
     247: isub
     248: if_icmpgt     295
     251: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     254: iload_1
     255: aaload
     256: iload_0
     257: iconst_1
     258: iadd
     259: aaload
     260: ldc           #24                 // String
     262: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     265: ifne          295
     268: nop
     269: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     272: iload_1
     273: aaload
     274: iload_0
     275: iconst_1
     276: iadd
     277: aaload
     278: checkcast     #32                 // class java/lang/CharSequence
     281: invokestatic  #38                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     284: invokevirtual #42                 // Method java/lang/Object.toString:()Ljava/lang/String;
     287: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     290: istore_3
     291: iload_2
     292: iload_3
     293: iadd
     294: istore_2
     295: iload_1
     296: getstatic     #10                 // Field n:I
     299: iconst_1
     300: isub
     301: if_icmpge     356
     304: iload_0
     305: ifle          356
     308: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     311: iload_1
     312: iconst_1
     313: iadd
     314: aaload
     315: iload_0
     316: iconst_1
     317: isub
     318: aaload
     319: ldc           #24                 // String
     321: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     324: ifne          356
     327: nop
     328: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     331: iload_1
     332: iconst_1
     333: iadd
     334: aaload
     335: iload_0
     336: iconst_1
     337: isub
     338: aaload
     339: checkcast     #32                 // class java/lang/CharSequence
     342: invokestatic  #38                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     345: invokevirtual #42                 // Method java/lang/Object.toString:()Ljava/lang/String;
     348: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     351: istore_3
     352: iload_2
     353: iload_3
     354: iadd
     355: istore_2
     356: iload_0
     357: getstatic     #10                 // Field n:I
     360: iconst_1
     361: isub
     362: if_icmpgt     418
     365: iload_1
     366: getstatic     #10                 // Field n:I
     369: iconst_1
     370: isub
     371: if_icmpge     418
     374: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     377: iload_1
     378: iconst_1
     379: iadd
     380: aaload
     381: iload_0
     382: aaload
     383: ldc           #24                 // String
     385: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     388: ifne          418
     391: nop
     392: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     395: iload_1
     396: iconst_1
     397: iadd
     398: aaload
     399: iload_0
     400: aaload
     401: checkcast     #32                 // class java/lang/CharSequence
     404: invokestatic  #38                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     407: invokevirtual #42                 // Method java/lang/Object.toString:()Ljava/lang/String;
     410: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     413: istore_3
     414: iload_2
     415: iload_3
     416: iadd
     417: istore_2
     418: iload_1
     419: getstatic     #10                 // Field n:I
     422: iconst_1
     423: isub
     424: if_icmpge     484
     427: iload_0
     428: getstatic     #10                 // Field n:I
     431: iconst_1
     432: isub
     433: if_icmpge     484
     436: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     439: iload_1
     440: iconst_1
     441: iadd
     442: aaload
     443: iload_0
     444: iconst_1
     445: iadd
     446: aaload
     447: ldc           #24                 // String
     449: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     452: ifne          484
     455: nop
     456: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     459: iload_1
     460: iconst_1
     461: iadd
     462: aaload
     463: iload_0
     464: iconst_1
     465: iadd
     466: aaload
     467: checkcast     #32                 // class java/lang/CharSequence
     470: invokestatic  #38                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     473: invokevirtual #42                 // Method java/lang/Object.toString:()Ljava/lang/String;
     476: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     479: istore_3
     480: iload_2
     481: iload_3
     482: iadd
     483: istore_2
     484: iload_2
     485: ireturn

  public static final void main(java.lang.String[]);
    Code:
       0: aload_0
       1: ldc           #56                 // String args
       3: invokestatic  #60                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: getstatic     #66                 // Field day3/Direction.RIGHT:Lday3/Direction;
       9: astore_1
      10: getstatic     #10                 // Field n:I
      13: iconst_2
      14: idiv
      15: istore_2
      16: getstatic     #10                 // Field n:I
      19: iconst_2
      20: irem
      21: ifne          30
      24: iload_2
      25: iconst_1
      26: isub
      27: goto          31
      30: iload_2
      31: istore_3
      32: iconst_0
      33: istore        4
      35: iconst_1
      36: istore        5
      38: getstatic     #10                 // Field n:I
      41: getstatic     #10                 // Field n:I
      44: imul
      45: iconst_1
      46: isub
      47: iconst_1
      48: iadd
      49: istore        6
      51: iload         5
      53: iload         6
      55: if_icmpgt     405
      58: iinc          4, 1
      61: iload         4
      63: iconst_1
      64: if_icmpne     79
      67: getstatic     #20                 // Field grid:[[Ljava/lang/String;
      70: iload_2
      71: aaload
      72: iload_3
      73: ldc           #68                 // String 1
      75: aastore
      76: goto          153
      79: iload_3
      80: iload_2
      81: invokestatic  #70                 // Method surroundingsSum:(II)I
      84: istore        7
      86: iload         7
      88: ldc           #71                 // int 265149
      90: if_icmple     104
      93: getstatic     #77                 // Field java/lang/System.out:Ljava/io/PrintStream;
      96: iload         7
      98: invokevirtual #82                 // Method java/io/PrintStream.println:(I)V
     101: goto          405
     104: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     107: iload_2
     108: aaload
     109: iload_3
     110: ldc           #84                 // String %d
     112: astore        8
     114: iconst_1
     115: anewarray     #4                  // class java/lang/Object
     118: astore        9
     120: aload         9
     122: iconst_0
     123: iload         7
     125: invokestatic  #88                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     128: aastore
     129: aload         9
     131: astore        9
     133: aload         8
     135: aload         9
     137: aload         9
     139: arraylength
     140: invokestatic  #94                 // Method java/util/Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
     143: invokestatic  #100                // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
     146: dup
     147: ldc           #102                // String format(...)
     149: invokestatic  #105                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     152: aastore
     153: aload_1
     154: getstatic     #111                // Field day3/P2Kt$WhenMappings.$EnumSwitchMapping$0:[I
     157: swap
     158: invokevirtual #114                // Method day3/Direction.ordinal:()I
     161: iaload
     162: tableswitch   { // 1 to 4
                     1: 192
                     2: 232
                     3: 257
                     4: 286
               default: 311
          }
     192: iload_3
     193: getstatic     #10                 // Field n:I
     196: iconst_1
     197: isub
     198: if_icmpgt     319
     201: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     204: iload_2
     205: iconst_1
     206: isub
     207: aaload
     208: iload_3
     209: aaload
     210: checkcast     #32                 // class java/lang/CharSequence
     213: invokestatic  #118                // Method kotlin/text/StringsKt.none:(Ljava/lang/CharSequence;)Z
     216: ifeq          319
     219: iload         5
     221: iconst_1
     222: if_icmple     319
     225: getstatic     #121                // Field day3/Direction.UP:Lday3/Direction;
     228: astore_1
     229: goto          319
     232: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     235: iload_2
     236: aaload
     237: iload_3
     238: iconst_1
     239: isub
     240: aaload
     241: checkcast     #32                 // class java/lang/CharSequence
     244: invokestatic  #118                // Method kotlin/text/StringsKt.none:(Ljava/lang/CharSequence;)Z
     247: ifeq          319
     250: getstatic     #124                // Field day3/Direction.LEFT:Lday3/Direction;
     253: astore_1
     254: goto          319
     257: iload_3
     258: ifeq          279
     261: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     264: iload_2
     265: iconst_1
     266: iadd
     267: aaload
     268: iload_3
     269: aaload
     270: checkcast     #32                 // class java/lang/CharSequence
     273: invokestatic  #118                // Method kotlin/text/StringsKt.none:(Ljava/lang/CharSequence;)Z
     276: ifeq          319
     279: getstatic     #127                // Field day3/Direction.DOWN:Lday3/Direction;
     282: astore_1
     283: goto          319
     286: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     289: iload_2
     290: aaload
     291: iload_3
     292: iconst_1
     293: iadd
     294: aaload
     295: checkcast     #32                 // class java/lang/CharSequence
     298: invokestatic  #118                // Method kotlin/text/StringsKt.none:(Ljava/lang/CharSequence;)Z
     301: ifeq          319
     304: getstatic     #66                 // Field day3/Direction.RIGHT:Lday3/Direction;
     307: astore_1
     308: goto          319
     311: new           #129                // class kotlin/NoWhenBranchMatchedException
     314: dup
     315: invokespecial #133                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     318: athrow
     319: aload_1
     320: getstatic     #111                // Field day3/P2Kt$WhenMappings.$EnumSwitchMapping$0:[I
     323: swap
     324: invokevirtual #114                // Method day3/Direction.ordinal:()I
     327: iaload
     328: tableswitch   { // 1 to 4
                     1: 360
                     2: 366
                     3: 372
                     4: 378
               default: 384
          }
     360: iinc          3, 1
     363: goto          392
     366: iinc          2, -1
     369: goto          392
     372: iinc          3, -1
     375: goto          392
     378: iinc          2, 1
     381: goto          392
     384: new           #129                // class kotlin/NoWhenBranchMatchedException
     387: dup
     388: invokespecial #133                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     391: athrow
     392: iload         5
     394: iload         6
     396: if_icmpeq     405
     399: iinc          5, 1
     402: goto          58
     405: getstatic     #20                 // Field grid:[[Ljava/lang/String;
     408: astore        5
     410: iconst_0
     411: istore        6
     413: aload         5
     415: checkcast     #135                // class "[Ljava/lang/Object;"
     418: arraylength
     419: istore        7
     421: iload         6
     423: iload         7
     425: if_icmpge     470
     428: aload         5
     430: iload         6
     432: aaload
     433: astore        8
     435: aload         8
     437: ldc           #24                 // String
     439: checkcast     #32                 // class java/lang/CharSequence
     442: aconst_null
     443: aconst_null
     444: iconst_0
     445: aconst_null
     446: invokedynamic #154,  0            // InvokeDynamic #0:invoke:()Lkotlin/jvm/functions/Function1;
     451: bipush        30
     453: aconst_null
     454: invokestatic  #160                // Method kotlin/collections/ArraysKt.joinToString$default:([Ljava/lang/Object;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
     457: getstatic     #77                 // Field java/lang/System.out:Ljava/io/PrintStream;
     460: swap
     461: invokevirtual #163                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     464: iinc          6, 1
     467: goto          421
     470: getstatic     #77                 // Field java/lang/System.out:Ljava/io/PrintStream;
     473: invokevirtual #165                // Method java/io/PrintStream.println:()V
     476: return

  private static final java.lang.CharSequence main$lambda$0(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #174                // String s
       3: invokestatic  #60                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: ldc           #176                // String [%6d]
       8: astore_1
       9: iconst_1
      10: anewarray     #4                  // class java/lang/Object
      13: astore_2
      14: aload_2
      15: iconst_0
      16: aload_0
      17: invokestatic  #48                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
      20: invokestatic  #88                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      23: aastore
      24: aload_2
      25: astore_2
      26: aload_1
      27: aload_2
      28: aload_2
      29: arraylength
      30: invokestatic  #94                 // Method java/util/Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
      33: invokestatic  #100                // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      36: dup
      37: ldc           #102                // String format(...)
      39: invokestatic  #105                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      42: checkcast     #32                 // class java/lang/CharSequence
      45: areturn

  static {};
    Code:
       0: bipush        100
       2: putstatic     #10                 // Field n:I
       5: iconst_0
       6: istore_0
       7: getstatic     #10                 // Field n:I
      10: istore_1
      11: iload_1
      12: anewarray     #172                // class "[Ljava/lang/String;"
      15: astore_2
      16: iload_0
      17: iload_1
      18: if_icmpge     81
      21: iload_0
      22: istore_3
      23: aload_2
      24: iload_3
      25: iconst_0
      26: istore        4
      28: getstatic     #10                 // Field n:I
      31: istore        5
      33: iload         5
      35: anewarray     #96                 // class java/lang/String
      38: astore        6
      40: istore        9
      42: astore        8
      44: iload         4
      46: iload         5
      48: if_icmpge     68
      51: iload         4
      53: istore        7
      55: aload         6
      57: iload         7
      59: ldc           #24                 // String
      61: aastore
      62: iinc          4, 1
      65: goto          44
      68: aload         8
      70: iload         9
      72: aload         6
      74: aastore
      75: iinc          0, 1
      78: goto          16
      81: aload_2
      82: putstatic     #20                 // Field grid:[[Ljava/lang/String;
      85: return
}