package com.codelicia.advent2021

import kotlin.math.max

class Day13(val input: String) {
    fun solve(folds: Int): Int {
        val (dots, fold) = input.split("\n\n")
        val xs = dots.split("\n").map { it.split(",").map { s -> s.toInt() } }

        val xMax = xs.maxOf { it[0] }
        val yMax = xs.maxOf { it[1] }

        var grid = Array(yMax + 1) { IntArray(xMax + 1) { 0 } }

        for ((x, y) in xs) {
            grid[y][x] = 1;
        }

        val foldInstructions = fold.split("\n").map { it.split(" ").last().split("=") }

        foldInstructions.forEachIndexed { loop, inst ->
            if (loop >= folds) return@forEachIndexed
            val (direction, value) = inst

            // Fold Y
            if (direction == "y") {
                val stay = grid.filterIndexed { k, _ -> k < value.toInt() }
                val fold = grid.filterIndexed { k, _ -> k > value.toInt() }.reversed()

                repeat(stay.size) { index ->
                    grid[index] = stay[index].mapIndexed { i, v -> max(fold[index][i], v) }.toIntArray()
                }
                grid = grid.copyOfRange(0, stay.lastIndex + 1)
            }

            // Fold X
            if (direction == "x") {
                val stay = grid.map { it.filterIndexed { k, _ -> k < value.toInt() } }
                val fold = grid.map { it.filterIndexed { k, _ -> k > value.toInt() }.reversed() }

                repeat(stay.size) { index ->
                    grid[index] = stay[index].mapIndexed { i, v -> max(fold[index][i], v) }.toIntArray()
                }
            }

        }

        return grid.sumOf { row -> row.sum() }
    }
}

Compiled from "Day13.kt"
public final class com.codelicia.advent2021.Day13 {
  private final java.lang.String input;

  public com.codelicia.advent2021.Day13(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #9                  // String input
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokespecial #18                 // Method java/lang/Object."<init>":()V
      10: aload_0
      11: aload_1
      12: putfield      #21                 // Field input:Ljava/lang/String;
      15: return

  public final java.lang.String getInput();
    Code:
       0: aload_0
       1: getfield      #21                 // Field input:Ljava/lang/String;
       4: areturn

  public final int solve(int);
    Code:
       0: aload_0
       1: getfield      #21                 // Field input:Ljava/lang/String;
       4: checkcast     #29                 // class java/lang/CharSequence
       7: iconst_1
       8: anewarray     #31                 // class java/lang/String
      11: astore_3
      12: aload_3
      13: iconst_0
      14: ldc           #33                 // String \n\n
      16: aastore
      17: aload_3
      18: iconst_0
      19: iconst_0
      20: bipush        6
      22: aconst_null
      23: invokestatic  #39                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      26: astore_2
      27: aload_2
      28: iconst_0
      29: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      34: checkcast     #31                 // class java/lang/String
      37: astore_3
      38: aload_2
      39: iconst_1
      40: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      45: checkcast     #31                 // class java/lang/String
      48: astore        4
      50: aload_3
      51: checkcast     #29                 // class java/lang/CharSequence
      54: iconst_1
      55: anewarray     #31                 // class java/lang/String
      58: astore        6
      60: aload         6
      62: iconst_0
      63: ldc           #47                 // String \n
      65: aastore
      66: aload         6
      68: iconst_0
      69: iconst_0
      70: bipush        6
      72: aconst_null
      73: invokestatic  #39                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      76: checkcast     #49                 // class java/lang/Iterable
      79: astore        6
      81: iconst_0
      82: istore        7
      84: aload         6
      86: astore        8
      88: new           #51                 // class java/util/ArrayList
      91: dup
      92: aload         6
      94: bipush        10
      96: invokestatic  #57                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      99: invokespecial #60                 // Method java/util/ArrayList."<init>":(I)V
     102: checkcast     #62                 // class java/util/Collection
     105: astore        9
     107: iconst_0
     108: istore        10
     110: aload         8
     112: invokeinterface #66,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     117: astore        11
     119: aload         11
     121: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     126: ifeq          295
     129: aload         11
     131: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     136: astore        12
     138: aload         9
     140: aload         12
     142: checkcast     #31                 // class java/lang/String
     145: astore        13
     147: astore        50
     149: iconst_0
     150: istore        14
     152: aload         13
     154: checkcast     #29                 // class java/lang/CharSequence
     157: iconst_1
     158: anewarray     #31                 // class java/lang/String
     161: astore        15
     163: aload         15
     165: iconst_0
     166: ldc           #78                 // String ,
     168: aastore
     169: aload         15
     171: iconst_0
     172: iconst_0
     173: bipush        6
     175: aconst_null
     176: invokestatic  #39                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     179: checkcast     #49                 // class java/lang/Iterable
     182: astore        15
     184: iconst_0
     185: istore        16
     187: aload         15
     189: astore        17
     191: new           #51                 // class java/util/ArrayList
     194: dup
     195: aload         15
     197: bipush        10
     199: invokestatic  #57                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     202: invokespecial #60                 // Method java/util/ArrayList."<init>":(I)V
     205: checkcast     #62                 // class java/util/Collection
     208: astore        18
     210: iconst_0
     211: istore        19
     213: aload         17
     215: invokeinterface #66,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     220: astore        20
     222: aload         20
     224: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     229: ifeq          276
     232: aload         20
     234: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     239: astore        21
     241: aload         18
     243: aload         21
     245: checkcast     #31                 // class java/lang/String
     248: astore        22
     250: astore        23
     252: iconst_0
     253: istore        24
     255: aload         22
     257: invokestatic  #84                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     260: nop
     261: invokestatic  #88                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     264: aload         23
     266: swap
     267: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     272: pop
     273: goto          222
     276: aload         18
     278: checkcast     #41                 // class java/util/List
     281: nop
     282: nop
     283: aload         50
     285: swap
     286: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     291: pop
     292: goto          119
     295: aload         9
     297: checkcast     #41                 // class java/util/List
     300: nop
     301: astore        5
     303: aload         5
     305: checkcast     #49                 // class java/lang/Iterable
     308: invokeinterface #66,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     313: astore        8
     315: aload         8
     317: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     322: ifne          333
     325: new           #94                 // class java/util/NoSuchElementException
     328: dup
     329: invokespecial #95                 // Method java/util/NoSuchElementException."<init>":()V
     332: athrow
     333: aload         8
     335: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     340: checkcast     #41                 // class java/util/List
     343: astore        9
     345: iconst_0
     346: istore        10
     348: aload         9
     350: iconst_0
     351: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     356: checkcast     #97                 // class java/lang/Number
     359: invokevirtual #101                // Method java/lang/Number.intValue:()I
     362: istore        9
     364: aload         8
     366: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     371: ifeq          419
     374: aload         8
     376: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     381: checkcast     #41                 // class java/util/List
     384: astore        10
     386: iconst_0
     387: istore        11
     389: aload         10
     391: iconst_0
     392: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     397: checkcast     #97                 // class java/lang/Number
     400: invokevirtual #101                // Method java/lang/Number.intValue:()I
     403: istore        10
     405: iload         9
     407: iload         10
     409: if_icmpge     364
     412: iload         10
     414: istore        9
     416: goto          364
     419: iload         9
     421: istore        6
     423: aload         5
     425: checkcast     #49                 // class java/lang/Iterable
     428: invokeinterface #66,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     433: astore        9
     435: aload         9
     437: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     442: ifne          453
     445: new           #94                 // class java/util/NoSuchElementException
     448: dup
     449: invokespecial #95                 // Method java/util/NoSuchElementException."<init>":()V
     452: athrow
     453: aload         9
     455: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     460: checkcast     #41                 // class java/util/List
     463: astore        10
     465: iconst_0
     466: istore        11
     468: aload         10
     470: iconst_1
     471: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     476: checkcast     #97                 // class java/lang/Number
     479: invokevirtual #101                // Method java/lang/Number.intValue:()I
     482: istore        10
     484: aload         9
     486: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     491: ifeq          539
     494: aload         9
     496: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     501: checkcast     #41                 // class java/util/List
     504: astore        11
     506: iconst_0
     507: istore        12
     509: aload         11
     511: iconst_1
     512: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     517: checkcast     #97                 // class java/lang/Number
     520: invokevirtual #101                // Method java/lang/Number.intValue:()I
     523: istore        11
     525: iload         10
     527: iload         11
     529: if_icmpge     484
     532: iload         11
     534: istore        10
     536: goto          484
     539: iload         10
     541: istore        7
     543: aconst_null
     544: astore        8
     546: iconst_0
     547: istore        9
     549: iload         7
     551: iconst_1
     552: iadd
     553: istore        10
     555: iload         10
     557: anewarray     #103                // class "[I"
     560: astore        11
     562: iload         9
     564: iload         10
     566: if_icmpge     632
     569: iload         9
     571: istore        12
     573: aload         11
     575: iload         12
     577: iconst_0
     578: istore        13
     580: iload         6
     582: iconst_1
     583: iadd
     584: istore        14
     586: iload         14
     588: newarray       int
     590: astore        15
     592: istore        52
     594: astore        51
     596: iload         13
     598: iload         14
     600: if_icmpge     619
     603: iload         13
     605: istore        16
     607: aload         15
     609: iload         16
     611: iconst_0
     612: iastore
     613: iinc          13, 1
     616: goto          596
     619: aload         51
     621: iload         52
     623: aload         15
     625: aastore
     626: iinc          9, 1
     629: goto          562
     632: aload         11
     634: astore        8
     636: aload         5
     638: invokeinterface #104,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     643: astore        9
     645: aload         9
     647: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     652: ifeq          714
     655: aload         9
     657: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     662: checkcast     #41                 // class java/util/List
     665: astore        10
     667: aload         10
     669: iconst_0
     670: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     675: checkcast     #97                 // class java/lang/Number
     678: invokevirtual #101                // Method java/lang/Number.intValue:()I
     681: istore        11
     683: aload         10
     685: iconst_1
     686: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     691: checkcast     #97                 // class java/lang/Number
     694: invokevirtual #101                // Method java/lang/Number.intValue:()I
     697: istore        12
     699: aload         8
     701: checkcast     #106                // class "[[I"
     704: iload         12
     706: aaload
     707: iload         11
     709: iconst_1
     710: iastore
     711: goto          645
     714: aload         4
     716: checkcast     #29                 // class java/lang/CharSequence
     719: iconst_1
     720: anewarray     #31                 // class java/lang/String
     723: astore        10
     725: aload         10
     727: iconst_0
     728: ldc           #47                 // String \n
     730: aastore
     731: aload         10
     733: iconst_0
     734: iconst_0
     735: bipush        6
     737: aconst_null
     738: invokestatic  #39                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     741: checkcast     #49                 // class java/lang/Iterable
     744: astore        10
     746: iconst_0
     747: istore        11
     749: aload         10
     751: astore        12
     753: new           #51                 // class java/util/ArrayList
     756: dup
     757: aload         10
     759: bipush        10
     761: invokestatic  #57                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     764: invokespecial #60                 // Method java/util/ArrayList."<init>":(I)V
     767: checkcast     #62                 // class java/util/Collection
     770: astore        13
     772: iconst_0
     773: istore        14
     775: aload         12
     777: invokeinterface #66,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     782: astore        15
     784: aload         15
     786: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     791: ifeq          884
     794: aload         15
     796: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     801: astore        16
     803: aload         13
     805: aload         16
     807: checkcast     #31                 // class java/lang/String
     810: astore        17
     812: astore        50
     814: iconst_0
     815: istore        18
     817: aload         17
     819: checkcast     #29                 // class java/lang/CharSequence
     822: iconst_1
     823: anewarray     #31                 // class java/lang/String
     826: astore        19
     828: aload         19
     830: iconst_0
     831: ldc           #108                // String
     833: aastore
     834: aload         19
     836: iconst_0
     837: iconst_0
     838: bipush        6
     840: aconst_null
     841: invokestatic  #39                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     844: invokestatic  #112                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     847: checkcast     #29                 // class java/lang/CharSequence
     850: iconst_1
     851: anewarray     #31                 // class java/lang/String
     854: astore        19
     856: aload         19
     858: iconst_0
     859: ldc           #114                // String =
     861: aastore
     862: aload         19
     864: iconst_0
     865: iconst_0
     866: bipush        6
     868: aconst_null
     869: invokestatic  #39                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     872: aload         50
     874: swap
     875: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     880: pop
     881: goto          784
     884: aload         13
     886: checkcast     #41                 // class java/util/List
     889: nop
     890: astore        9
     892: aload         9
     894: checkcast     #49                 // class java/lang/Iterable
     897: astore        10
     899: iconst_0
     900: istore        11
     902: iconst_0
     903: istore        12
     905: aload         10
     907: invokeinterface #66,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     912: astore        13
     914: aload         13
     916: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     921: ifeq          2140
     924: aload         13
     926: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     931: astore        14
     933: iload         12
     935: iinc          12, 1
     938: istore        15
     940: iload         15
     942: ifge          948
     945: invokestatic  #117                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     948: iload         15
     950: aload         14
     952: checkcast     #41                 // class java/util/List
     955: astore        16
     957: istore        17
     959: iconst_0
     960: istore        18
     962: iload         17
     964: iload_1
     965: if_icmpge     2136
     968: aload         16
     970: iconst_0
     971: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     976: checkcast     #31                 // class java/lang/String
     979: astore        19
     981: aload         16
     983: iconst_1
     984: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     989: checkcast     #31                 // class java/lang/String
     992: astore        20
     994: aload         19
     996: ldc           #119                // String y
     998: invokestatic  #123                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
    1001: ifeq          1471
    1004: aload         8
    1006: astore        21
    1008: iconst_0
    1009: istore        22
    1011: aload         21
    1013: astore        23
    1015: new           #51                 // class java/util/ArrayList
    1018: dup
    1019: invokespecial #124                // Method java/util/ArrayList."<init>":()V
    1022: checkcast     #62                 // class java/util/Collection
    1025: astore        24
    1027: iconst_0
    1028: istore        25
    1030: aload         23
    1032: astore        26
    1034: iconst_0
    1035: istore        27
    1037: iconst_0
    1038: istore        28
    1040: iconst_0
    1041: istore        29
    1043: aload         26
    1045: arraylength
    1046: istore        30
    1048: iload         29
    1050: iload         30
    1052: if_icmpge     1125
    1055: aload         26
    1057: iload         29
    1059: aaload
    1060: astore        31
    1062: iload         28
    1064: iinc          28, 1
    1067: aload         31
    1069: astore        32
    1071: istore        33
    1073: iconst_0
    1074: istore        34
    1076: iload         33
    1078: aload         32
    1080: checkcast     #103                // class "[I"
    1083: pop
    1084: istore        35
    1086: iconst_0
    1087: istore        36
    1089: iload         35
    1091: aload         20
    1093: invokestatic  #84                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
    1096: if_icmpge     1103
    1099: iconst_1
    1100: goto          1104
    1103: iconst_0
    1104: ifeq          1117
    1107: aload         24
    1109: aload         32
    1111: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1116: pop
    1117: nop
    1118: nop
    1119: iinc          29, 1
    1122: goto          1048
    1125: nop
    1126: aload         24
    1128: checkcast     #41                 // class java/util/List
    1131: nop
    1132: astore        37
    1134: aload         8
    1136: astore        22
    1138: iconst_0
    1139: istore        23
    1141: aload         22
    1143: astore        24
    1145: new           #51                 // class java/util/ArrayList
    1148: dup
    1149: invokespecial #124                // Method java/util/ArrayList."<init>":()V
    1152: checkcast     #62                 // class java/util/Collection
    1155: astore        25
    1157: iconst_0
    1158: istore        26
    1160: aload         24
    1162: astore        27
    1164: iconst_0
    1165: istore        28
    1167: iconst_0
    1168: istore        29
    1170: iconst_0
    1171: istore        30
    1173: aload         27
    1175: arraylength
    1176: istore        31
    1178: iload         30
    1180: iload         31
    1182: if_icmpge     1255
    1185: aload         27
    1187: iload         30
    1189: aaload
    1190: astore        32
    1192: iload         29
    1194: iinc          29, 1
    1197: aload         32
    1199: astore        33
    1201: istore        34
    1203: iconst_0
    1204: istore        38
    1206: iload         34
    1208: aload         33
    1210: checkcast     #103                // class "[I"
    1213: pop
    1214: istore        36
    1216: iconst_0
    1217: istore        39
    1219: iload         36
    1221: aload         20
    1223: invokestatic  #84                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
    1226: if_icmple     1233
    1229: iconst_1
    1230: goto          1234
    1233: iconst_0
    1234: ifeq          1247
    1237: aload         25
    1239: aload         33
    1241: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1246: pop
    1247: nop
    1248: nop
    1249: iinc          30, 1
    1252: goto          1178
    1255: nop
    1256: aload         25
    1258: checkcast     #41                 // class java/util/List
    1261: nop
    1262: checkcast     #49                 // class java/lang/Iterable
    1265: invokestatic  #128                // Method kotlin/collections/CollectionsKt.reversed:(Ljava/lang/Iterable;)Ljava/util/List;
    1268: astore        21
    1270: aload         37
    1272: invokeinterface #131,  1          // InterfaceMethod java/util/List.size:()I
    1277: istore        22
    1279: iconst_0
    1280: istore        23
    1282: iload         23
    1284: iload         22
    1286: if_icmpge     1456
    1289: iload         23
    1291: istore        24
    1293: iconst_0
    1294: istore        25
    1296: aload         8
    1298: checkcast     #106                // class "[[I"
    1301: iload         24
    1303: aload         37
    1305: iload         24
    1307: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1312: checkcast     #103                // class "[I"
    1315: astore        26
    1317: istore        27
    1319: astore        28
    1321: iconst_0
    1322: istore        29
    1324: aload         26
    1326: astore        30
    1328: new           #51                 // class java/util/ArrayList
    1331: dup
    1332: aload         26
    1334: arraylength
    1335: invokespecial #60                 // Method java/util/ArrayList."<init>":(I)V
    1338: checkcast     #62                 // class java/util/Collection
    1341: astore        31
    1343: iconst_0
    1344: istore        32
    1346: iconst_0
    1347: istore        33
    1349: iconst_0
    1350: istore        34
    1352: aload         30
    1354: arraylength
    1355: istore        38
    1357: iload         34
    1359: iload         38
    1361: if_icmpge     1428
    1364: aload         30
    1366: iload         34
    1368: iaload
    1369: istore        35
    1371: aload         31
    1373: iload         33
    1375: iinc          33, 1
    1378: iload         35
    1380: istore        36
    1382: istore        39
    1384: astore        40
    1386: iconst_0
    1387: istore        41
    1389: aload         21
    1391: iload         24
    1393: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1398: checkcast     #103                // class "[I"
    1401: iload         39
    1403: iaload
    1404: iload         36
    1406: invokestatic  #137                // Method java/lang/Math.max:(II)I
    1409: nop
    1410: invokestatic  #88                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1413: aload         40
    1415: swap
    1416: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1421: pop
    1422: iinc          34, 1
    1425: goto          1357
    1428: aload         31
    1430: checkcast     #41                 // class java/util/List
    1433: nop
    1434: astore        40
    1436: aload         28
    1438: iload         27
    1440: aload         40
    1442: checkcast     #62                 // class java/util/Collection
    1445: invokestatic  #141                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
    1448: aastore
    1449: nop
    1450: iinc          23, 1
    1453: goto          1282
    1456: aload         8
    1458: iconst_0
    1459: aload         37
    1461: invokestatic  #145                // Method kotlin/collections/CollectionsKt.getLastIndex:(Ljava/util/List;)I
    1464: iconst_1
    1465: iadd
    1466: invokestatic  #151                // Method kotlin/collections/ArraysKt.copyOfRange:([Ljava/lang/Object;II)[Ljava/lang/Object;
    1469: astore        8
    1471: aload         19
    1473: ldc           #153                // String x
    1475: invokestatic  #123                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
    1478: ifeq          2135
    1481: aload         8
    1483: astore        21
    1485: iconst_0
    1486: istore        22
    1488: aload         21
    1490: astore        23
    1492: new           #51                 // class java/util/ArrayList
    1495: dup
    1496: aload         21
    1498: arraylength
    1499: invokespecial #60                 // Method java/util/ArrayList."<init>":(I)V
    1502: checkcast     #62                 // class java/util/Collection
    1505: astore        24
    1507: iconst_0
    1508: istore        25
    1510: iconst_0
    1511: istore        26
    1513: aload         23
    1515: arraylength
    1516: istore        27
    1518: iload         26
    1520: iload         27
    1522: if_icmpge     1687
    1525: aload         23
    1527: iload         26
    1529: aaload
    1530: astore        28
    1532: aload         24
    1534: aload         28
    1536: checkcast     #103                // class "[I"
    1539: astore        29
    1541: astore        42
    1543: iconst_0
    1544: istore        30
    1546: aload         29
    1548: astore        31
    1550: iconst_0
    1551: istore        32
    1553: aload         31
    1555: astore        33
    1557: new           #51                 // class java/util/ArrayList
    1560: dup
    1561: invokespecial #124                // Method java/util/ArrayList."<init>":()V
    1564: checkcast     #62                 // class java/util/Collection
    1567: astore        34
    1569: iconst_0
    1570: istore        38
    1572: aload         33
    1574: astore        35
    1576: iconst_0
    1577: istore        36
    1579: iconst_0
    1580: istore        39
    1582: iconst_0
    1583: istore        40
    1585: aload         35
    1587: arraylength
    1588: istore        41
    1590: iload         40
    1592: iload         41
    1594: if_icmpge     1664
    1597: aload         35
    1599: iload         40
    1601: iaload
    1602: istore        43
    1604: iload         39
    1606: iinc          39, 1
    1609: iload         43
    1611: istore        44
    1613: istore        45
    1615: iconst_0
    1616: istore        46
    1618: iload         45
    1620: istore        47
    1622: iconst_0
    1623: istore        48
    1625: iload         47
    1627: aload         20
    1629: invokestatic  #84                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
    1632: if_icmpge     1639
    1635: iconst_1
    1636: goto          1640
    1639: iconst_0
    1640: ifeq          1656
    1643: aload         34
    1645: iload         44
    1647: invokestatic  #88                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1650: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1655: pop
    1656: nop
    1657: nop
    1658: iinc          40, 1
    1661: goto          1590
    1664: nop
    1665: aload         34
    1667: checkcast     #41                 // class java/util/List
    1670: nop
    1671: nop
    1672: aload         42
    1674: swap
    1675: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1680: pop
    1681: iinc          26, 1
    1684: goto          1518
    1687: aload         24
    1689: checkcast     #41                 // class java/util/List
    1692: nop
    1693: astore        37
    1695: aload         8
    1697: astore        22
    1699: iconst_0
    1700: istore        23
    1702: aload         22
    1704: astore        24
    1706: new           #51                 // class java/util/ArrayList
    1709: dup
    1710: aload         22
    1712: arraylength
    1713: invokespecial #60                 // Method java/util/ArrayList."<init>":(I)V
    1716: checkcast     #62                 // class java/util/Collection
    1719: astore        25
    1721: iconst_0
    1722: istore        26
    1724: iconst_0
    1725: istore        27
    1727: aload         24
    1729: arraylength
    1730: istore        28
    1732: iload         27
    1734: iload         28
    1736: if_icmpge     1906
    1739: aload         24
    1741: iload         27
    1743: aaload
    1744: astore        29
    1746: aload         25
    1748: aload         29
    1750: checkcast     #103                // class "[I"
    1753: astore        30
    1755: astore        42
    1757: iconst_0
    1758: istore        31
    1760: aload         30
    1762: astore        32
    1764: iconst_0
    1765: istore        33
    1767: aload         32
    1769: astore        34
    1771: new           #51                 // class java/util/ArrayList
    1774: dup
    1775: invokespecial #124                // Method java/util/ArrayList."<init>":()V
    1778: checkcast     #62                 // class java/util/Collection
    1781: astore        38
    1783: iconst_0
    1784: istore        35
    1786: aload         34
    1788: astore        36
    1790: iconst_0
    1791: istore        39
    1793: iconst_0
    1794: istore        40
    1796: iconst_0
    1797: istore        41
    1799: aload         36
    1801: arraylength
    1802: istore        43
    1804: iload         41
    1806: iload         43
    1808: if_icmpge     1878
    1811: aload         36
    1813: iload         41
    1815: iaload
    1816: istore        44
    1818: iload         40
    1820: iinc          40, 1
    1823: iload         44
    1825: istore        45
    1827: istore        46
    1829: iconst_0
    1830: istore        47
    1832: iload         46
    1834: istore        48
    1836: iconst_0
    1837: istore        49
    1839: iload         48
    1841: aload         20
    1843: invokestatic  #84                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
    1846: if_icmple     1853
    1849: iconst_1
    1850: goto          1854
    1853: iconst_0
    1854: ifeq          1870
    1857: aload         38
    1859: iload         45
    1861: invokestatic  #88                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1864: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1869: pop
    1870: nop
    1871: nop
    1872: iinc          41, 1
    1875: goto          1804
    1878: nop
    1879: aload         38
    1881: checkcast     #41                 // class java/util/List
    1884: nop
    1885: checkcast     #49                 // class java/lang/Iterable
    1888: invokestatic  #128                // Method kotlin/collections/CollectionsKt.reversed:(Ljava/lang/Iterable;)Ljava/util/List;
    1891: aload         42
    1893: swap
    1894: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1899: pop
    1900: iinc          27, 1
    1903: goto          1732
    1906: aload         25
    1908: checkcast     #41                 // class java/util/List
    1911: nop
    1912: astore        21
    1914: aload         37
    1916: invokeinterface #131,  1          // InterfaceMethod java/util/List.size:()I
    1921: istore        22
    1923: iconst_0
    1924: istore        23
    1926: iload         23
    1928: iload         22
    1930: if_icmpge     2135
    1933: iload         23
    1935: istore        24
    1937: iconst_0
    1938: istore        25
    1940: aload         8
    1942: checkcast     #106                // class "[[I"
    1945: iload         24
    1947: aload         37
    1949: iload         24
    1951: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1956: checkcast     #49                 // class java/lang/Iterable
    1959: astore        26
    1961: istore        27
    1963: astore        28
    1965: iconst_0
    1966: istore        29
    1968: aload         26
    1970: astore        30
    1972: new           #51                 // class java/util/ArrayList
    1975: dup
    1976: aload         26
    1978: bipush        10
    1980: invokestatic  #57                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
    1983: invokespecial #60                 // Method java/util/ArrayList."<init>":(I)V
    1986: checkcast     #62                 // class java/util/Collection
    1989: astore        31
    1991: iconst_0
    1992: istore        32
    1994: iconst_0
    1995: istore        33
    1997: aload         30
    1999: invokeinterface #66,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2004: astore        34
    2006: aload         34
    2008: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2013: ifeq          2107
    2016: aload         34
    2018: invokeinterface #76,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2023: astore        38
    2025: aload         31
    2027: iload         33
    2029: iinc          33, 1
    2032: istore        35
    2034: iload         35
    2036: ifge          2042
    2039: invokestatic  #117                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
    2042: iload         35
    2044: aload         38
    2046: checkcast     #97                 // class java/lang/Number
    2049: invokevirtual #101                // Method java/lang/Number.intValue:()I
    2052: istore        36
    2054: istore        39
    2056: astore        40
    2058: iconst_0
    2059: istore        41
    2061: aload         21
    2063: iload         24
    2065: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    2070: checkcast     #41                 // class java/util/List
    2073: iload         39
    2075: invokeinterface #45,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    2080: checkcast     #97                 // class java/lang/Number
    2083: invokevirtual #101                // Method java/lang/Number.intValue:()I
    2086: iload         36
    2088: invokestatic  #137                // Method java/lang/Math.max:(II)I
    2091: nop
    2092: invokestatic  #88                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    2095: aload         40
    2097: swap
    2098: invokeinterface #92,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    2103: pop
    2104: goto          2006
    2107: aload         31
    2109: checkcast     #41                 // class java/util/List
    2112: nop
    2113: astore        40
    2115: aload         28
    2117: iload         27
    2119: aload         40
    2121: checkcast     #62                 // class java/util/Collection
    2124: invokestatic  #141                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
    2127: aastore
    2128: nop
    2129: iinc          23, 1
    2132: goto          1926
    2135: nop
    2136: nop
    2137: goto          914
    2140: nop
    2141: aload         8
    2143: astore        10
    2145: iconst_0
    2146: istore        11
    2148: iconst_0
    2149: istore        12
    2151: aload         10
    2153: arraylength
    2154: istore        13
    2156: iload         12
    2158: iload         13
    2160: if_icmpge     2204
    2163: aload         10
    2165: iload         12
    2167: aaload
    2168: astore        14
    2170: iload         11
    2172: aload         14
    2174: checkcast     #103                // class "[I"
    2177: astore        15
    2179: istore        50
    2181: iconst_0
    2182: istore        16
    2184: aload         15
    2186: invokestatic  #157                // Method kotlin/collections/ArraysKt.sum:([I)I
    2189: istore        51
    2191: iload         50
    2193: iload         51
    2195: iadd
    2196: istore        11
    2198: iinc          12, 1
    2201: goto          2156
    2204: iload         11
    2206: ireturn
}