package day14

import java.io.File
import kotlin.math.max
import kotlin.math.min

fun main() {
    val rocks = File("src/day14/input.txt").readLines().map { line ->
        Rock(line.split(" -> ").map { coord -> coord.split(",").let { Pair(it[0].toInt(), it[1].toInt()) } })
    }

    println(solve(rocks, false))
    println(solve(rocks, true))
}

fun solve(rocks: List<Rock>, floor: Boolean): Int {

    val rocksBoundary = rocks.map { it.boundary }.reduce(Box::merge)

    val settledSand = mutableSetOf<Pair<Int, Int>>()
    val start = Pair(500, 0)
    outer@ while (true) {
        var sand = start
        while (true) {
            sand = listOf(Pair(0, 1), Pair(-1, 1), Pair(1, 1)).map { delta -> sand + delta }
                .firstOrNull { option ->
                    option !in settledSand
                            && (!rocksBoundary.contains(option) || rocks.none { rock -> rock.hit(option) })
                            && (!floor || option.second != rocksBoundary.bottom + 2)
                } ?: break
            if (!floor && sand.second > rocksBoundary.bottom) break@outer
        }
        settledSand.add(sand)
        if (sand == start) break
    }

    return settledSand.size
}

operator fun Pair<Int, Int>.plus(other: Pair<Int, Int>): Pair<Int, Int> {
    return Pair(first + other.first, second + other.second)
}

data class Box(val a: Pair<Int, Int>, val b: Pair<Int, Int>) {
    private val topLeft = Pair(min(a.first, b.first), min(a.second, b.second))
    private val bottomRight = Pair(max(a.first, b.first), max(a.second, b.second))
    val bottom = bottomRight.second

    fun contains(coord: Pair<Int, Int>): Boolean =
        coord.first >= topLeft.first && coord.first <= bottomRight.first &&
                coord.second >= topLeft.second && coord.second <= bottomRight.second

    fun merge(other: Box): Box =
        Box(
            Pair(min(topLeft.first, other.topLeft.first), min(topLeft.second, other.topLeft.second)),
            Pair(max(bottomRight.first, other.bottomRight.first), max(bottomRight.second, other.bottomRight.second))
        )
}

data class Rock(val coords: List<Pair<Int, Int>>) {
    private val boxes = coords.zipWithNext().map { pair -> Box(pair.first, pair.second) }
    val boundary = boxes.reduce(Box::merge)
    fun hit(coord: Pair<Int, Int>): Boolean {
        return boundary.contains(coord) && boxes.any { it.contains(coord) }
    }
}

Compiled from "Day14.kt"
public final class day14.Day14Kt {
  public static final void main();
    Code:
       0: new           #8                  // class java/io/File
       3: dup
       4: ldc           #10                 // String src/day14/input.txt
       6: invokespecial #14                 // Method java/io/File."<init>":(Ljava/lang/String;)V
       9: aconst_null
      10: iconst_1
      11: aconst_null
      12: invokestatic  #20                 // Method kotlin/io/FilesKt.readLines$default:(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/util/List;
      15: checkcast     #22                 // class java/lang/Iterable
      18: astore_1
      19: iconst_0
      20: istore_2
      21: aload_1
      22: astore_3
      23: new           #24                 // class java/util/ArrayList
      26: dup
      27: aload_1
      28: bipush        10
      30: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      33: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
      36: checkcast     #35                 // class java/util/Collection
      39: astore        4
      41: iconst_0
      42: istore        5
      44: aload_3
      45: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      50: astore        6
      52: aload         6
      54: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      59: ifeq          304
      62: aload         6
      64: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      69: astore        7
      71: aload         4
      73: aload         7
      75: checkcast     #51                 // class java/lang/String
      78: astore        8
      80: astore        23
      82: iconst_0
      83: istore        9
      85: aload         8
      87: checkcast     #53                 // class java/lang/CharSequence
      90: iconst_1
      91: anewarray     #51                 // class java/lang/String
      94: astore        10
      96: aload         10
      98: iconst_0
      99: ldc           #55                 // String  ->
     101: aastore
     102: aload         10
     104: iconst_0
     105: iconst_0
     106: bipush        6
     108: aconst_null
     109: invokestatic  #61                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     112: checkcast     #22                 // class java/lang/Iterable
     115: astore        10
     117: iconst_0
     118: istore        11
     120: aload         10
     122: astore        12
     124: new           #24                 // class java/util/ArrayList
     127: dup
     128: aload         10
     130: bipush        10
     132: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     135: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
     138: checkcast     #35                 // class java/util/Collection
     141: astore        13
     143: iconst_0
     144: istore        14
     146: aload         12
     148: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     153: astore        15
     155: aload         15
     157: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     162: ifeq          275
     165: aload         15
     167: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     172: astore        16
     174: aload         13
     176: aload         16
     178: checkcast     #51                 // class java/lang/String
     181: astore        17
     183: astore        18
     185: iconst_0
     186: istore        19
     188: aload         17
     190: checkcast     #53                 // class java/lang/CharSequence
     193: iconst_1
     194: anewarray     #51                 // class java/lang/String
     197: astore        20
     199: aload         20
     201: iconst_0
     202: ldc           #63                 // String ,
     204: aastore
     205: aload         20
     207: iconst_0
     208: iconst_0
     209: bipush        6
     211: aconst_null
     212: invokestatic  #61                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     215: astore        21
     217: iconst_0
     218: istore        22
     220: new           #65                 // class kotlin/Pair
     223: dup
     224: aload         21
     226: iconst_0
     227: invokeinterface #71,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     232: checkcast     #51                 // class java/lang/String
     235: invokestatic  #77                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     238: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     241: aload         21
     243: iconst_1
     244: invokeinterface #71,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     249: checkcast     #51                 // class java/lang/String
     252: invokestatic  #77                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     255: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     258: invokespecial #84                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     261: nop
     262: nop
     263: aload         18
     265: swap
     266: invokeinterface #88,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     271: pop
     272: goto          155
     275: aload         13
     277: checkcast     #67                 // class java/util/List
     280: nop
     281: astore        24
     283: new           #90                 // class day14/Rock
     286: dup
     287: aload         24
     289: invokespecial #93                 // Method day14/Rock."<init>":(Ljava/util/List;)V
     292: aload         23
     294: swap
     295: invokeinterface #88,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     300: pop
     301: goto          52
     304: aload         4
     306: checkcast     #67                 // class java/util/List
     309: nop
     310: astore_0
     311: aload_0
     312: iconst_0
     313: invokestatic  #97                 // Method solve:(Ljava/util/List;Z)I
     316: istore_1
     317: getstatic     #103                // Field java/lang/System.out:Ljava/io/PrintStream;
     320: iload_1
     321: invokevirtual #108                // Method java/io/PrintStream.println:(I)V
     324: aload_0
     325: iconst_1
     326: invokestatic  #97                 // Method solve:(Ljava/util/List;Z)I
     329: istore_1
     330: getstatic     #103                // Field java/lang/System.out:Ljava/io/PrintStream;
     333: iload_1
     334: invokevirtual #108                // Method java/io/PrintStream.println:(I)V
     337: return

  public static final int solve(java.util.List<day14.Rock>, boolean);
    Code:
       0: aload_0
       1: ldc           #130                // String rocks
       3: invokestatic  #136                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: checkcast     #22                 // class java/lang/Iterable
      10: astore_3
      11: iconst_0
      12: istore        4
      14: aload_3
      15: astore        5
      17: new           #24                 // class java/util/ArrayList
      20: dup
      21: aload_3
      22: bipush        10
      24: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      27: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
      30: checkcast     #35                 // class java/util/Collection
      33: astore        6
      35: iconst_0
      36: istore        7
      38: aload         5
      40: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      45: astore        8
      47: aload         8
      49: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifeq          97
      57: aload         8
      59: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: astore        9
      66: aload         6
      68: aload         9
      70: checkcast     #90                 // class day14/Rock
      73: astore        10
      75: astore        19
      77: iconst_0
      78: istore        11
      80: aload         10
      82: invokevirtual #140                // Method day14/Rock.getBoundary:()Lday14/Box;
      85: aload         19
      87: swap
      88: invokeinterface #88,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      93: pop
      94: goto          47
      97: aload         6
      99: checkcast     #67                 // class java/util/List
     102: nop
     103: checkcast     #22                 // class java/lang/Iterable
     106: astore_3
     107: nop
     108: iconst_0
     109: istore        4
     111: aload_3
     112: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     117: astore        5
     119: aload         5
     121: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     126: ifne          139
     129: new           #142                // class java/lang/UnsupportedOperationException
     132: dup
     133: ldc           #144                // String Empty collection can\'t be reduced.
     135: invokespecial #145                // Method java/lang/UnsupportedOperationException."<init>":(Ljava/lang/String;)V
     138: athrow
     139: aload         5
     141: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     146: astore        6
     148: aload         5
     150: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     155: ifeq          192
     158: aload         6
     160: aload         5
     162: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     167: checkcast     #147                // class day14/Box
     170: astore        7
     172: checkcast     #147                // class day14/Box
     175: astore        8
     177: iconst_0
     178: istore        9
     180: aload         8
     182: aload         7
     184: invokevirtual #151                // Method day14/Box.merge:(Lday14/Box;)Lday14/Box;
     187: astore        6
     189: goto          148
     192: aload         6
     194: checkcast     #147                // class day14/Box
     197: astore_2
     198: new           #153                // class java/util/LinkedHashSet
     201: dup
     202: invokespecial #155                // Method java/util/LinkedHashSet."<init>":()V
     205: checkcast     #157                // class java/util/Set
     208: astore_3
     209: new           #65                 // class kotlin/Pair
     212: dup
     213: sipush        500
     216: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     219: iconst_0
     220: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     223: invokespecial #84                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     226: astore        4
     228: nop
     229: aconst_null
     230: astore        5
     232: aload         4
     234: astore        5
     236: nop
     237: iconst_3
     238: anewarray     #65                 // class kotlin/Pair
     241: astore        7
     243: aload         7
     245: iconst_0
     246: new           #65                 // class kotlin/Pair
     249: dup
     250: iconst_0
     251: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     254: iconst_1
     255: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     258: invokespecial #84                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     261: aastore
     262: aload         7
     264: iconst_1
     265: new           #65                 // class kotlin/Pair
     268: dup
     269: iconst_m1
     270: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     273: iconst_1
     274: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     277: invokespecial #84                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     280: aastore
     281: aload         7
     283: iconst_2
     284: new           #65                 // class kotlin/Pair
     287: dup
     288: iconst_1
     289: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     292: iconst_1
     293: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     296: invokespecial #84                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     299: aastore
     300: aload         7
     302: invokestatic  #161                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     305: checkcast     #22                 // class java/lang/Iterable
     308: astore        7
     310: iconst_0
     311: istore        8
     313: aload         7
     315: astore        9
     317: new           #24                 // class java/util/ArrayList
     320: dup
     321: aload         7
     323: bipush        10
     325: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     328: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
     331: checkcast     #35                 // class java/util/Collection
     334: astore        10
     336: iconst_0
     337: istore        11
     339: aload         9
     341: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     346: astore        12
     348: aload         12
     350: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     355: ifeq          400
     358: aload         12
     360: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     365: astore        13
     367: aload         10
     369: aload         13
     371: checkcast     #65                 // class kotlin/Pair
     374: astore        14
     376: astore        20
     378: iconst_0
     379: istore        15
     381: aload         5
     383: aload         14
     385: invokestatic  #165                // Method plus:(Lkotlin/Pair;Lkotlin/Pair;)Lkotlin/Pair;
     388: aload         20
     390: swap
     391: invokeinterface #88,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     396: pop
     397: goto          348
     400: aload         10
     402: checkcast     #67                 // class java/util/List
     405: nop
     406: checkcast     #22                 // class java/lang/Iterable
     409: astore        7
     411: nop
     412: iconst_0
     413: istore        8
     415: aload         7
     417: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     422: astore        9
     424: aload         9
     426: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     431: ifeq          600
     434: aload         9
     436: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     441: astore        10
     443: aload         10
     445: checkcast     #65                 // class kotlin/Pair
     448: astore        11
     450: iconst_0
     451: istore        12
     453: aload_3
     454: aload         11
     456: invokeinterface #168,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     461: ifne          591
     464: aload_2
     465: aload         11
     467: invokevirtual #171                // Method day14/Box.contains:(Lkotlin/Pair;)Z
     470: ifeq          563
     473: aload_0
     474: checkcast     #22                 // class java/lang/Iterable
     477: astore        13
     479: iconst_0
     480: istore        14
     482: aload         13
     484: instanceof    #35                 // class java/util/Collection
     487: ifeq          507
     490: aload         13
     492: checkcast     #35                 // class java/util/Collection
     495: invokeinterface #174,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     500: ifeq          507
     503: iconst_1
     504: goto          560
     507: aload         13
     509: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     514: astore        15
     516: aload         15
     518: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     523: ifeq          559
     526: aload         15
     528: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     533: astore        16
     535: aload         16
     537: checkcast     #90                 // class day14/Rock
     540: astore        17
     542: iconst_0
     543: istore        18
     545: aload         17
     547: aload         11
     549: invokevirtual #177                // Method day14/Rock.hit:(Lkotlin/Pair;)Z
     552: ifeq          516
     555: iconst_0
     556: goto          560
     559: iconst_1
     560: ifeq          591
     563: iload_1
     564: ifeq          587
     567: aload         11
     569: invokevirtual #180                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     572: checkcast     #182                // class java/lang/Number
     575: invokevirtual #186                // Method java/lang/Number.intValue:()I
     578: aload_2
     579: invokevirtual #189                // Method day14/Box.getBottom:()I
     582: iconst_2
     583: iadd
     584: if_icmpeq     591
     587: iconst_1
     588: goto          592
     591: iconst_0
     592: ifeq          424
     595: aload         10
     597: goto          601
     600: aconst_null
     601: checkcast     #65                 // class kotlin/Pair
     604: dup
     605: ifnonnull     612
     608: pop
     609: goto          639
     612: astore        5
     614: iload_1
     615: ifne          236
     618: aload         5
     620: invokevirtual #180                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     623: checkcast     #182                // class java/lang/Number
     626: invokevirtual #186                // Method java/lang/Number.intValue:()I
     629: aload_2
     630: invokevirtual #189                // Method day14/Box.getBottom:()I
     633: if_icmple     236
     636: goto          661
     639: aload_3
     640: aload         5
     642: invokeinterface #190,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
     647: pop
     648: aload         5
     650: aload         4
     652: invokestatic  #194                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     655: ifeq          228
     658: goto          661
     661: aload_3
     662: invokeinterface #197,  1          // InterfaceMethod java/util/Set.size:()I
     667: ireturn

  public static final kotlin.Pair<java.lang.Integer, java.lang.Integer> plus(kotlin.Pair<java.lang.Integer, java.lang.Integer>, kotlin.Pair<java.lang.Integer, java.lang.Integer>);
    Code:
       0: aload_0
       1: ldc           #230                // String <this>
       3: invokestatic  #136                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #232                // String other
       9: invokestatic  #136                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: new           #65                 // class kotlin/Pair
      15: dup
      16: aload_0
      17: invokevirtual #235                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      20: checkcast     #182                // class java/lang/Number
      23: invokevirtual #186                // Method java/lang/Number.intValue:()I
      26: aload_1
      27: invokevirtual #235                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      30: checkcast     #182                // class java/lang/Number
      33: invokevirtual #186                // Method java/lang/Number.intValue:()I
      36: iadd
      37: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      40: aload_0
      41: invokevirtual #180                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
      44: checkcast     #182                // class java/lang/Number
      47: invokevirtual #186                // Method java/lang/Number.intValue:()I
      50: aload_1
      51: invokevirtual #180                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
      54: checkcast     #182                // class java/lang/Number
      57: invokevirtual #186                // Method java/lang/Number.intValue:()I
      60: iadd
      61: invokestatic  #81                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      64: invokespecial #84                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
      67: areturn

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


package day13

import java.io.File

fun main() {
    val pairs = File("src/day13/input.txt").readText().split("\n\n")
        .map { it.split("\n") }
        .map { listOf(parse(it[0]), parse(it[1])) }

    println(pairs.mapIndexed { index, pair -> if (check(pair[0], pair[1])!!) index + 1 else 0 }.sumOf { it })

    val dividers = listOf(mutableListOf(mutableListOf(2)), mutableListOf(mutableListOf(6)))

    val packets = pairs.flatten().toMutableList()
    packets.addAll(dividers)
    packets.sortWith { left, right -> if (check(left, right)!!) -1 else 1 }

    println(packets.mapIndexed { i, p -> if (p in dividers) i + 1 else 1 }.fold(1, Int::times))
}

fun check(left: MutableList<*>, right: MutableList<*>): Boolean? {
    for (i in left.indices) {
        var l = left[i]
        if (i == right.size) return false
        var r = right[i]
        if (l is Int && r is Int) {
            if (l < r) {
                return true
            } else if (l > r) {
                return false
            }
        } else {
            if (l is Int) {
                l = mutableListOf(l)
            }
            if (r is Int) {
                r = mutableListOf(r)
            }
            if (l is MutableList<*> && r is MutableList<*>) {
                val check = check(l, r)
                if (check != null) return check
            }
        }
    }
    if (right.size > left.size) return true
    return null
}

fun parse(s: String): MutableList<*> {
    val stack = mutableListOf<MutableList<Any>>()
    var n: Int? = null
    var result: MutableList<Any>? = null
    for (c in s) {
        when (c) {
            '[' -> {
                val list = mutableListOf<Any>()
                if (stack.isEmpty()) {
                    result = list
                } else {
                    stack.last().add(list)
                }
                stack.add(list)
                n = null
            }
            ']' -> {
                if (n != null) {
                    stack.last().add(n)
                }
                n = null
                stack.removeLast()
            }
            ',' -> {
                if (n != null) {
                    stack.last().add(n)
                }
                n = null
            }
            else -> {
                n = if (n != null) (10 * n) else 0
                n += c.toString().toInt()
            }
        }
    }
    return result!!
}

Compiled from "Day13.kt"
public final class day13.Day13Kt {
  public static final void main();
    Code:
       0: new           #8                  // class java/io/File
       3: dup
       4: ldc           #10                 // String src/day13/input.txt
       6: invokespecial #14                 // Method java/io/File."<init>":(Ljava/lang/String;)V
       9: aconst_null
      10: iconst_1
      11: aconst_null
      12: invokestatic  #20                 // Method kotlin/io/FilesKt.readText$default:(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String;
      15: checkcast     #22                 // class java/lang/CharSequence
      18: iconst_1
      19: anewarray     #24                 // class java/lang/String
      22: astore_1
      23: aload_1
      24: iconst_0
      25: ldc           #26                 // String \n\n
      27: aastore
      28: aload_1
      29: iconst_0
      30: iconst_0
      31: bipush        6
      33: aconst_null
      34: invokestatic  #32                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      37: checkcast     #34                 // class java/lang/Iterable
      40: astore_1
      41: nop
      42: iconst_0
      43: istore_2
      44: aload_1
      45: astore_3
      46: new           #36                 // class java/util/ArrayList
      49: dup
      50: aload_1
      51: bipush        10
      53: invokestatic  #42                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      56: invokespecial #45                 // Method java/util/ArrayList."<init>":(I)V
      59: checkcast     #47                 // class java/util/Collection
      62: astore        4
      64: iconst_0
      65: istore        5
      67: aload_3
      68: invokeinterface #51,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      73: astore        6
      75: aload         6
      77: invokeinterface #57,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      82: ifeq          147
      85: aload         6
      87: invokeinterface #61,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      92: astore        7
      94: aload         4
      96: aload         7
      98: checkcast     #24                 // class java/lang/String
     101: astore        8
     103: astore        15
     105: iconst_0
     106: istore        9
     108: aload         8
     110: checkcast     #22                 // class java/lang/CharSequence
     113: iconst_1
     114: anewarray     #24                 // class java/lang/String
     117: astore        10
     119: aload         10
     121: iconst_0
     122: ldc           #63                 // String \n
     124: aastore
     125: aload         10
     127: iconst_0
     128: iconst_0
     129: bipush        6
     131: aconst_null
     132: invokestatic  #32                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     135: aload         15
     137: swap
     138: invokeinterface #67,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     143: pop
     144: goto          75
     147: aload         4
     149: checkcast     #69                 // class java/util/List
     152: nop
     153: checkcast     #34                 // class java/lang/Iterable
     156: astore_1
     157: nop
     158: iconst_0
     159: istore_2
     160: aload_1
     161: astore_3
     162: new           #36                 // class java/util/ArrayList
     165: dup
     166: aload_1
     167: bipush        10
     169: invokestatic  #42                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     172: invokespecial #45                 // Method java/util/ArrayList."<init>":(I)V
     175: checkcast     #47                 // class java/util/Collection
     178: astore        4
     180: iconst_0
     181: istore        5
     183: aload_3
     184: invokeinterface #51,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     189: astore        6
     191: aload         6
     193: invokeinterface #57,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     198: ifeq          283
     201: aload         6
     203: invokeinterface #61,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     208: astore        7
     210: aload         4
     212: aload         7
     214: checkcast     #69                 // class java/util/List
     217: astore        8
     219: astore        15
     221: iconst_0
     222: istore        9
     224: iconst_2
     225: anewarray     #69                 // class java/util/List
     228: astore        10
     230: aload         10
     232: iconst_0
     233: aload         8
     235: iconst_0
     236: invokeinterface #73,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     241: checkcast     #24                 // class java/lang/String
     244: invokestatic  #77                 // Method parse:(Ljava/lang/String;)Ljava/util/List;
     247: aastore
     248: aload         10
     250: iconst_1
     251: aload         8
     253: iconst_1
     254: invokeinterface #73,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     259: checkcast     #24                 // class java/lang/String
     262: invokestatic  #77                 // Method parse:(Ljava/lang/String;)Ljava/util/List;
     265: aastore
     266: aload         10
     268: invokestatic  #81                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     271: aload         15
     273: swap
     274: invokeinterface #67,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     279: pop
     280: goto          191
     283: aload         4
     285: checkcast     #69                 // class java/util/List
     288: nop
     289: astore_0
     290: aload_0
     291: checkcast     #34                 // class java/lang/Iterable
     294: astore_1
     295: iconst_0
     296: istore_2
     297: aload_1
     298: astore_3
     299: new           #36                 // class java/util/ArrayList
     302: dup
     303: aload_1
     304: bipush        10
     306: invokestatic  #42                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     309: invokespecial #45                 // Method java/util/ArrayList."<init>":(I)V
     312: checkcast     #47                 // class java/util/Collection
     315: astore        4
     317: iconst_0
     318: istore        5
     320: iconst_0
     321: istore        6
     323: aload_3
     324: invokeinterface #51,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     329: astore        7
     331: aload         7
     333: invokeinterface #57,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     338: ifeq          441
     341: aload         7
     343: invokeinterface #61,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     348: astore        8
     350: aload         4
     352: iload         6
     354: iinc          6, 1
     357: istore        9
     359: iload         9
     361: ifge          367
     364: invokestatic  #84                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     367: iload         9
     369: aload         8
     371: checkcast     #69                 // class java/util/List
     374: astore        10
     376: istore        11
     378: astore        15
     380: iconst_0
     381: istore        12
     383: aload         10
     385: iconst_0
     386: invokeinterface #73,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     391: checkcast     #69                 // class java/util/List
     394: aload         10
     396: iconst_1
     397: invokeinterface #73,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     402: checkcast     #69                 // class java/util/List
     405: invokestatic  #88                 // Method check:(Ljava/util/List;Ljava/util/List;)Ljava/lang/Boolean;
     408: dup
     409: invokestatic  #94                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     412: invokevirtual #99                 // Method java/lang/Boolean.booleanValue:()Z
     415: ifeq          425
     418: iload         11
     420: iconst_1
     421: iadd
     422: goto          426
     425: iconst_0
     426: invokestatic  #105                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     429: aload         15
     431: swap
     432: invokeinterface #67,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     437: pop
     438: goto          331
     441: aload         4
     443: checkcast     #69                 // class java/util/List
     446: nop
     447: checkcast     #34                 // class java/lang/Iterable
     450: astore_1
     451: iconst_0
     452: istore_2
     453: aload_1
     454: invokeinterface #51,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     459: astore_3
     460: aload_3
     461: invokeinterface #57,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     466: ifeq          506
     469: aload_3
     470: invokeinterface #61,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     475: astore        4
     477: iload_2
     478: aload         4
     480: checkcast     #107                // class java/lang/Number
     483: invokevirtual #111                // Method java/lang/Number.intValue:()I
     486: istore        5
     488: istore        15
     490: iconst_0
     491: istore        6
     493: iload         5
     495: istore        16
     497: iload         15
     499: iload         16
     501: iadd
     502: istore_2
     503: goto          460
     506: iload_2
     507: istore_1
     508: getstatic     #117                // Field java/lang/System.out:Ljava/io/PrintStream;
     511: iload_1
     512: invokevirtual #122                // Method java/io/PrintStream.println:(I)V
     515: iconst_2
     516: anewarray     #69                 // class java/util/List
     519: astore_2
     520: aload_2
     521: iconst_0
     522: iconst_1
     523: anewarray     #69                 // class java/util/List
     526: astore_3
     527: aload_3
     528: iconst_0
     529: iconst_1
     530: anewarray     #101                // class java/lang/Integer
     533: astore        4
     535: aload         4
     537: iconst_0
     538: iconst_2
     539: invokestatic  #105                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     542: aastore
     543: aload         4
     545: invokestatic  #125                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
     548: aastore
     549: aload_3
     550: invokestatic  #125                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
     553: aastore
     554: aload_2
     555: iconst_1
     556: iconst_1
     557: anewarray     #69                 // class java/util/List
     560: astore_3
     561: aload_3
     562: iconst_0
     563: iconst_1
     564: anewarray     #101                // class java/lang/Integer
     567: astore        4
     569: aload         4
     571: iconst_0
     572: bipush        6
     574: invokestatic  #105                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     577: aastore
     578: aload         4
     580: invokestatic  #125                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
     583: aastore
     584: aload_3
     585: invokestatic  #125                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
     588: aastore
     589: aload_2
     590: invokestatic  #81                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     593: astore_1
     594: aload_0
     595: checkcast     #34                 // class java/lang/Iterable
     598: invokestatic  #129                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     601: checkcast     #47                 // class java/util/Collection
     604: invokestatic  #133                // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
     607: astore_2
     608: aload_2
     609: aload_1
     610: checkcast     #47                 // class java/util/Collection
     613: invokeinterface #137,  2          // InterfaceMethod java/util/List.addAll:(Ljava/util/Collection;)Z
     618: pop
     619: aload_2
     620: invokedynamic #157,  0            // InvokeDynamic #0:invoke:()Lkotlin/jvm/functions/Function2;
     625: invokedynamic #168,  0            // InvokeDynamic #1:compare:(Lkotlin/jvm/functions/Function2;)Ljava/util/Comparator;
     630: invokestatic  #172                // Method kotlin/collections/CollectionsKt.sortWith:(Ljava/util/List;Ljava/util/Comparator;)V
     633: aload_2
     634: checkcast     #34                 // class java/lang/Iterable
     637: astore_3
     638: iconst_0
     639: istore        4
     641: aload_3
     642: astore        5
     644: new           #36                 // class java/util/ArrayList
     647: dup
     648: aload_3
     649: bipush        10
     651: invokestatic  #42                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     654: invokespecial #45                 // Method java/util/ArrayList."<init>":(I)V
     657: checkcast     #47                 // class java/util/Collection
     660: astore        6
     662: iconst_0
     663: istore        7
     665: iconst_0
     666: istore        8
     668: aload         5
     670: invokeinterface #51,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     675: astore        9
     677: aload         9
     679: invokeinterface #57,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     684: ifeq          764
     687: aload         9
     689: invokeinterface #61,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     694: astore        10
     696: aload         6
     698: iload         8
     700: iinc          8, 1
     703: istore        11
     705: iload         11
     707: ifge          713
     710: invokestatic  #84                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     713: iload         11
     715: aload         10
     717: checkcast     #69                 // class java/util/List
     720: astore        12
     722: istore        13
     724: astore        15
     726: iconst_0
     727: istore        14
     729: aload_1
     730: checkcast     #34                 // class java/lang/Iterable
     733: aload         12
     735: invokestatic  #176                // Method kotlin/collections/CollectionsKt.contains:(Ljava/lang/Iterable;Ljava/lang/Object;)Z
     738: ifeq          748
     741: iload         13
     743: iconst_1
     744: iadd
     745: goto          749
     748: iconst_1
     749: invokestatic  #105                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     752: aload         15
     754: swap
     755: invokeinterface #67,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     760: pop
     761: goto          677
     764: aload         6
     766: checkcast     #69                 // class java/util/List
     769: nop
     770: checkcast     #34                 // class java/lang/Iterable
     773: astore_3
     774: iconst_1
     775: istore        4
     777: iconst_0
     778: istore        5
     780: iload         4
     782: istore        6
     784: aload_3
     785: invokeinterface #51,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     790: astore        7
     792: aload         7
     794: invokeinterface #57,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     799: ifeq          838
     802: aload         7
     804: invokeinterface #61,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     809: astore        8
     811: iload         6
     813: aload         8
     815: checkcast     #107                // class java/lang/Number
     818: invokevirtual #111                // Method java/lang/Number.intValue:()I
     821: istore        9
     823: istore        10
     825: iconst_0
     826: istore        11
     828: iload         10
     830: iload         9
     832: imul
     833: istore        6
     835: goto          792
     838: iload         6
     840: istore_3
     841: getstatic     #117                // Field java/lang/System.out:Ljava/io/PrintStream;
     844: iload_3
     845: invokevirtual #122                // Method java/io/PrintStream.println:(I)V
     848: return

  public static final java.lang.Boolean check(java.util.List<?>, java.util.List<?>);
    Code:
       0: aload_0
       1: ldc           #219                // String left
       3: invokestatic  #223                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #225                // String right
       9: invokestatic  #223                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: iconst_0
      13: istore_2
      14: aload_0
      15: checkcast     #47                 // class java/util/Collection
      18: invokeinterface #228,  1          // InterfaceMethod java/util/Collection.size:()I
      23: istore_3
      24: iload_2
      25: iload_3
      26: if_icmpge     225
      29: aload_0
      30: iload_2
      31: invokeinterface #73,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      36: astore        4
      38: iload_2
      39: aload_1
      40: invokeinterface #229,  1          // InterfaceMethod java/util/List.size:()I
      45: if_icmpne     53
      48: iconst_0
      49: invokestatic  #232                // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
      52: areturn
      53: aload_1
      54: iload_2
      55: invokeinterface #73,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      60: astore        5
      62: aload         4
      64: instanceof    #101                // class java/lang/Integer
      67: ifeq          126
      70: aload         5
      72: instanceof    #101                // class java/lang/Integer
      75: ifeq          126
      78: aload         4
      80: checkcast     #107                // class java/lang/Number
      83: invokevirtual #111                // Method java/lang/Number.intValue:()I
      86: aload         5
      88: checkcast     #107                // class java/lang/Number
      91: invokevirtual #111                // Method java/lang/Number.intValue:()I
      94: if_icmpge     102
      97: iconst_1
      98: invokestatic  #232                // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     101: areturn
     102: aload         4
     104: checkcast     #107                // class java/lang/Number
     107: invokevirtual #111                // Method java/lang/Number.intValue:()I
     110: aload         5
     112: checkcast     #107                // class java/lang/Number
     115: invokevirtual #111                // Method java/lang/Number.intValue:()I
     118: if_icmple     219
     121: iconst_0
     122: invokestatic  #232                // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     125: areturn
     126: aload         4
     128: instanceof    #101                // class java/lang/Integer
     131: ifeq          153
     134: iconst_1
     135: anewarray     #101                // class java/lang/Integer
     138: astore        6
     140: aload         6
     142: iconst_0
     143: aload         4
     145: aastore
     146: aload         6
     148: invokestatic  #125                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
     151: astore        4
     153: aload         5
     155: instanceof    #101                // class java/lang/Integer
     158: ifeq          180
     161: iconst_1
     162: anewarray     #101                // class java/lang/Integer
     165: astore        6
     167: aload         6
     169: iconst_0
     170: aload         5
     172: aastore
     173: aload         6
     175: invokestatic  #125                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
     178: astore        5
     180: aload         4
     182: invokestatic  #237                // Method kotlin/jvm/internal/TypeIntrinsics.isMutableList:(Ljava/lang/Object;)Z
     185: ifeq          219
     188: aload         5
     190: invokestatic  #237                // Method kotlin/jvm/internal/TypeIntrinsics.isMutableList:(Ljava/lang/Object;)Z
     193: ifeq          219
     196: aload         4
     198: checkcast     #69                 // class java/util/List
     201: aload         5
     203: checkcast     #69                 // class java/util/List
     206: invokestatic  #88                 // Method check:(Ljava/util/List;Ljava/util/List;)Ljava/lang/Boolean;
     209: astore        6
     211: aload         6
     213: ifnull        219
     216: aload         6
     218: areturn
     219: iinc          2, 1
     222: goto          24
     225: aload_1
     226: invokeinterface #229,  1          // InterfaceMethod java/util/List.size:()I
     231: aload_0
     232: invokeinterface #229,  1          // InterfaceMethod java/util/List.size:()I
     237: if_icmple     245
     240: iconst_1
     241: invokestatic  #232                // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     244: areturn
     245: aconst_null
     246: areturn

  public static final java.util.List<?> parse(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #243                // String s
       3: invokestatic  #223                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #36                 // class java/util/ArrayList
       9: dup
      10: invokespecial #245                // Method java/util/ArrayList."<init>":()V
      13: checkcast     #69                 // class java/util/List
      16: astore_1
      17: aconst_null
      18: astore_2
      19: aconst_null
      20: astore_3
      21: iconst_0
      22: istore        4
      24: aload_0
      25: invokevirtual #248                // Method java/lang/String.length:()I
      28: istore        5
      30: iload         4
      32: iload         5
      34: if_icmpge     240
      37: aload_0
      38: iload         4
      40: invokevirtual #252                // Method java/lang/String.charAt:(I)C
      43: istore        6
      45: iload         6
      47: lookupswitch  { // 3
                    44: 172
                    91: 80
                    93: 136
               default: 195
          }
      80: new           #36                 // class java/util/ArrayList
      83: dup
      84: invokespecial #245                // Method java/util/ArrayList."<init>":()V
      87: checkcast     #69                 // class java/util/List
      90: astore        7
      92: aload_1
      93: invokeinterface #255,  1          // InterfaceMethod java/util/List.isEmpty:()Z
      98: ifeq          107
     101: aload         7
     103: astore_3
     104: goto          122
     107: aload_1
     108: invokestatic  #259                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     111: checkcast     #69                 // class java/util/List
     114: aload         7
     116: invokeinterface #260,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     121: pop
     122: aload_1
     123: aload         7
     125: invokeinterface #260,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     130: pop
     131: aconst_null
     132: astore_2
     133: goto          234
     136: aload_2
     137: ifnull        154
     140: aload_1
     141: invokestatic  #259                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     144: checkcast     #69                 // class java/util/List
     147: aload_2
     148: invokeinterface #260,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     153: pop
     154: aconst_null
     155: astore_2
     156: aload_1
     157: invokeinterface #263,  1          // InterfaceMethod java/util/List.removeLast:()Ljava/lang/Object;
     162: astore        7
     164: aload         7
     166: invokestatic  #94                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     169: goto          234
     172: aload_2
     173: ifnull        190
     176: aload_1
     177: invokestatic  #259                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     180: checkcast     #69                 // class java/util/List
     183: aload_2
     184: invokeinterface #260,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     189: pop
     190: aconst_null
     191: astore_2
     192: goto          234
     195: aload_2
     196: ifnull        212
     199: bipush        10
     201: aload_2
     202: invokevirtual #264                // Method java/lang/Integer.intValue:()I
     205: imul
     206: invokestatic  #105                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     209: goto          216
     212: iconst_0
     213: invokestatic  #105                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     216: astore_2
     217: aload_2
     218: invokevirtual #264                // Method java/lang/Integer.intValue:()I
     221: iload         6
     223: invokestatic  #267                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
     226: invokestatic  #271                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     229: iadd
     230: invokestatic  #105                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     233: astore_2
     234: iinc          4, 1
     237: goto          30
     240: aload_3
     241: dup
     242: invokestatic  #94                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     245: areturn

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

  private static final int main$lambda$4(java.util.List, java.util.List);
    Code:
       0: aload_0
       1: invokestatic  #94                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
       4: aload_0
       5: aload_1
       6: invokestatic  #94                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
       9: aload_1
      10: invokestatic  #88                 // Method check:(Ljava/util/List;Ljava/util/List;)Ljava/lang/Boolean;
      13: dup
      14: invokestatic  #94                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      17: invokevirtual #99                 // Method java/lang/Boolean.booleanValue:()Z
      20: ifeq          27
      23: iconst_m1
      24: goto          28
      27: iconst_1
      28: ireturn

  private static final int main$lambda$5(kotlin.jvm.functions.Function2, java.lang.Object, java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: aload_2
       3: invokeinterface #287,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
       8: checkcast     #107                // class java/lang/Number
      11: invokevirtual #111                // Method java/lang/Number.intValue:()I
      14: ireturn
}