package day25

import java.nio.file.Files
import java.nio.file.Paths
import kotlin.system.measureTimeMillis

fun main() {
  fun part1(input: Input): Int {
    val field = input.map { it.toCharArray() }
    var moves = 0
    val herds = ">v"
    val di = intArrayOf(0, 1)
    val dj = intArrayOf(1, 0)
    val moved = arrayOf<ArrayList<Pair<Int, Int>>>(arrayListOf(), arrayListOf())
    do {
      moves++
      moved.forEach { it.clear() }
      repeat(2) { herd ->
        for (i in field.indices) {
          for (j in field[i].indices) {
            if (field[i][j] == herds[herd]) {
              val ii = (i + di[herd]) % field.size
              val jj = (j + dj[herd]) % field[ii].size
              if (field[ii][jj] == '.') {
                moved[herd].add(i to j)
              }
            }
          }
        }
        for ((i, j) in moved[herd]) {
          val ii = (i + di[herd]) % field.size
          val jj = (j + dj[herd]) % field[ii].size
          field[ii][jj] = field[i][j]
          field[i][j] = '.'
        }
      }
    } while (moved.any { it.isNotEmpty() })
    return moves
  }

  check(part1(readInput("test-input.txt")) == 58)

  val millis = measureTimeMillis {
    println(part1(readInput("input.txt")))
  }
  System.err.println("Done in $millis ms")
}

private fun readInput(s: String): Input {
  return Files.newBufferedReader(Paths.get("src/day25/$s")).readLines()
}

private typealias Input = List<String>

Compiled from "Solution.kt"
public final class day25.SolutionKt {
  public static final void main();
    Code:
       0: ldc           #8                  // String test-input.txt
       2: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Ljava/util/List;
       5: invokestatic  #16                 // Method main$part1:(Ljava/util/List;)I
       8: bipush        58
      10: if_icmpne     17
      13: iconst_1
      14: goto          18
      17: iconst_0
      18: ifne          31
      21: new           #18                 // class java/lang/IllegalStateException
      24: dup
      25: ldc           #20                 // String Check failed.
      27: invokespecial #24                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
      30: athrow
      31: iconst_0
      32: istore_2
      33: invokestatic  #30                 // Method java/lang/System.currentTimeMillis:()J
      36: lstore_3
      37: iconst_0
      38: istore        5
      40: ldc           #32                 // String input.txt
      42: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Ljava/util/List;
      45: invokestatic  #16                 // Method main$part1:(Ljava/util/List;)I
      48: istore        6
      50: getstatic     #36                 // Field java/lang/System.out:Ljava/io/PrintStream;
      53: iload         6
      55: invokevirtual #42                 // Method java/io/PrintStream.println:(I)V
      58: nop
      59: nop
      60: invokestatic  #30                 // Method java/lang/System.currentTimeMillis:()J
      63: lload_3
      64: lsub
      65: lstore_0
      66: getstatic     #45                 // Field java/lang/System.err:Ljava/io/PrintStream;
      69: new           #47                 // class java/lang/StringBuilder
      72: dup
      73: invokespecial #49                 // Method java/lang/StringBuilder."<init>":()V
      76: ldc           #51                 // String Done in
      78: invokevirtual #55                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      81: lload_0
      82: invokevirtual #58                 // Method java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
      85: ldc           #60                 // String  ms
      87: invokevirtual #55                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      90: invokevirtual #64                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      93: invokevirtual #66                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
      96: return

  private static final java.util.List<java.lang.String> readInput(java.lang.String);
    Code:
       0: new           #47                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #49                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #75                 // String src/day25/
       9: invokevirtual #55                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: invokevirtual #55                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      16: invokevirtual #64                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      19: iconst_0
      20: anewarray     #77                 // class java/lang/String
      23: invokestatic  #83                 // Method java/nio/file/Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
      26: invokestatic  #89                 // Method java/nio/file/Files.newBufferedReader:(Ljava/nio/file/Path;)Ljava/io/BufferedReader;
      29: dup
      30: ldc           #91                 // String newBufferedReader(...)
      32: invokestatic  #97                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      35: checkcast     #99                 // class java/io/Reader
      38: invokestatic  #105                // Method kotlin/io/TextStreamsKt.readLines:(Ljava/io/Reader;)Ljava/util/List;
      41: areturn

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

  private static final int main$part1(java.util.List<java.lang.String>);
    Code:
       0: aload_0
       1: checkcast     #115                // class java/lang/Iterable
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #117                // class java/util/ArrayList
      13: dup
      14: aload_2
      15: bipush        10
      17: invokestatic  #123                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      20: invokespecial #125                // Method java/util/ArrayList."<init>":(I)V
      23: checkcast     #127                // class java/util/Collection
      26: astore        5
      28: iconst_0
      29: istore        6
      31: aload         4
      33: invokeinterface #131,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      38: astore        7
      40: aload         7
      42: invokeinterface #137,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      47: ifeq          97
      50: aload         7
      52: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      57: astore        8
      59: aload         5
      61: aload         8
      63: checkcast     #77                 // class java/lang/String
      66: astore        9
      68: astore        17
      70: iconst_0
      71: istore        10
      73: aload         9
      75: invokevirtual #145                // Method java/lang/String.toCharArray:()[C
      78: dup
      79: ldc           #147                // String toCharArray(...)
      81: invokestatic  #97                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      84: nop
      85: aload         17
      87: swap
      88: invokeinterface #151,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      93: pop
      94: goto          40
      97: aload         5
      99: checkcast     #153                // class java/util/List
     102: nop
     103: astore_1
     104: iconst_0
     105: istore_2
     106: ldc           #155                // String >v
     108: astore_3
     109: iconst_2
     110: newarray       int
     112: astore        5
     114: aload         5
     116: iconst_0
     117: iconst_0
     118: iastore
     119: aload         5
     121: iconst_1
     122: iconst_1
     123: iastore
     124: aload         5
     126: astore        4
     128: iconst_2
     129: newarray       int
     131: astore        6
     133: aload         6
     135: iconst_0
     136: iconst_1
     137: iastore
     138: aload         6
     140: iconst_1
     141: iconst_0
     142: iastore
     143: aload         6
     145: astore        5
     147: iconst_2
     148: anewarray     #117                // class java/util/ArrayList
     151: astore        7
     153: aload         7
     155: iconst_0
     156: new           #117                // class java/util/ArrayList
     159: dup
     160: invokespecial #156                // Method java/util/ArrayList."<init>":()V
     163: aastore
     164: aload         7
     166: iconst_1
     167: new           #117                // class java/util/ArrayList
     170: dup
     171: invokespecial #156                // Method java/util/ArrayList."<init>":()V
     174: aastore
     175: aload         7
     177: astore        6
     179: iinc          2, 1
     182: aload         6
     184: astore        7
     186: iconst_0
     187: istore        8
     189: iconst_0
     190: istore        9
     192: aload         7
     194: arraylength
     195: istore        10
     197: iload         9
     199: iload         10
     201: if_icmpge     230
     204: aload         7
     206: iload         9
     208: aaload
     209: astore        11
     211: aload         11
     213: astore        12
     215: iconst_0
     216: istore        13
     218: aload         12
     220: invokevirtual #159                // Method java/util/ArrayList.clear:()V
     223: nop
     224: iinc          9, 1
     227: goto          197
     230: nop
     231: iconst_2
     232: istore        7
     234: iconst_0
     235: istore        8
     237: iload         8
     239: iload         7
     241: if_icmpge     570
     244: iload         8
     246: istore        9
     248: iconst_0
     249: istore        10
     251: iconst_0
     252: istore        11
     254: aload_1
     255: checkcast     #127                // class java/util/Collection
     258: invokeinterface #163,  1          // InterfaceMethod java/util/Collection.size:()I
     263: istore        12
     265: iload         11
     267: iload         12
     269: if_icmpge     412
     272: iconst_0
     273: istore        13
     275: aload_1
     276: iload         11
     278: invokeinterface #166,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     283: checkcast     #168                // class "[C"
     286: arraylength
     287: istore        14
     289: iload         13
     291: iload         14
     293: if_icmpge     406
     296: aload_1
     297: iload         11
     299: invokeinterface #166,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     304: checkcast     #168                // class "[C"
     307: iload         13
     309: caload
     310: aload_3
     311: iload         9
     313: invokevirtual #172                // Method java/lang/String.charAt:(I)C
     316: if_icmpne     400
     319: iload         11
     321: aload         4
     323: iload         9
     325: iaload
     326: iadd
     327: aload_1
     328: invokeinterface #173,  1          // InterfaceMethod java/util/List.size:()I
     333: irem
     334: istore        15
     336: iload         13
     338: aload         5
     340: iload         9
     342: iaload
     343: iadd
     344: aload_1
     345: iload         15
     347: invokeinterface #166,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     352: checkcast     #168                // class "[C"
     355: arraylength
     356: irem
     357: istore        16
     359: aload_1
     360: iload         15
     362: invokeinterface #166,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     367: checkcast     #168                // class "[C"
     370: iload         16
     372: caload
     373: bipush        46
     375: if_icmpne     400
     378: aload         6
     380: iload         9
     382: aaload
     383: iload         11
     385: invokestatic  #179                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     388: iload         13
     390: invokestatic  #179                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     393: invokestatic  #185                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     396: invokevirtual #186                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     399: pop
     400: iinc          13, 1
     403: goto          289
     406: iinc          11, 1
     409: goto          265
     412: aload         6
     414: iload         9
     416: aaload
     417: invokevirtual #187                // Method java/util/ArrayList.iterator:()Ljava/util/Iterator;
     420: dup
     421: ldc           #189                // String iterator(...)
     423: invokestatic  #97                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     426: astore        11
     428: aload         11
     430: invokeinterface #137,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     435: ifeq          563
     438: aload         11
     440: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     445: checkcast     #191                // class kotlin/Pair
     448: astore        12
     450: aload         12
     452: invokevirtual #194                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     455: checkcast     #196                // class java/lang/Number
     458: invokevirtual #199                // Method java/lang/Number.intValue:()I
     461: istore        13
     463: aload         12
     465: invokevirtual #202                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     468: checkcast     #196                // class java/lang/Number
     471: invokevirtual #199                // Method java/lang/Number.intValue:()I
     474: istore        14
     476: iload         13
     478: aload         4
     480: iload         9
     482: iaload
     483: iadd
     484: aload_1
     485: invokeinterface #173,  1          // InterfaceMethod java/util/List.size:()I
     490: irem
     491: istore        15
     493: iload         14
     495: aload         5
     497: iload         9
     499: iaload
     500: iadd
     501: aload_1
     502: iload         15
     504: invokeinterface #166,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     509: checkcast     #168                // class "[C"
     512: arraylength
     513: irem
     514: istore        16
     516: aload_1
     517: iload         15
     519: invokeinterface #166,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     524: checkcast     #168                // class "[C"
     527: iload         16
     529: aload_1
     530: iload         13
     532: invokeinterface #166,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     537: checkcast     #168                // class "[C"
     540: iload         14
     542: caload
     543: castore
     544: aload_1
     545: iload         13
     547: invokeinterface #166,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     552: checkcast     #168                // class "[C"
     555: iload         14
     557: bipush        46
     559: castore
     560: goto          428
     563: nop
     564: iinc          8, 1
     567: goto          237
     570: aload         6
     572: astore        7
     574: iconst_0
     575: istore        8
     577: iconst_0
     578: istore        9
     580: aload         7
     582: arraylength
     583: istore        10
     585: iload         9
     587: iload         10
     589: if_icmpge     638
     592: aload         7
     594: iload         9
     596: aaload
     597: astore        11
     599: aload         11
     601: astore        12
     603: iconst_0
     604: istore        13
     606: aload         12
     608: checkcast     #127                // class java/util/Collection
     611: invokeinterface #205,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     616: ifne          623
     619: iconst_1
     620: goto          624
     623: iconst_0
     624: nop
     625: ifeq          632
     628: iconst_1
     629: goto          639
     632: iinc          9, 1
     635: goto          585
     638: iconst_0
     639: ifne          179
     642: iload_2
     643: ireturn
}


package day22

import java.nio.file.Files
import java.nio.file.Paths
import kotlin.system.measureTimeMillis

fun main() {
  fun MutableList<Int>.inPlaceDistinct() {
    sort()
    var ptr = 1
    for (i in 1 until this.size) {
      if (this[i] != this[i - 1]) {
        this[ptr++] = this[i]
      }
    }
    while (size > ptr) {
      removeLast()
    }
  }

  fun solve(input: Input): Long {
    val all = Array(3) { mutableListOf<Int>() }
    for ((_, cuboid) in input) {
      for (i in cuboid.indices) {
        all[i].addAll(cuboid[i])
      }
    }
    all.forEach { it.inPlaceDistinct() }
    val (xs, ys, zs) = all
    val state = Array(xs.size - 1) { Array(ys.size - 1) { BooleanArray(zs.size - 1) } }
    for ((on, cuboid) in input) {
      val (xRange, yRange, zRange) = cuboid.mapIndexed { index, interval ->
        val (from, to) = interval.map { all[index].binarySearch(it) }
        from until to
      }
      for (x in xRange) {
        for (y in yRange) {
          for (z in zRange) {
            state[x][y][z] = on
          }
        }
      }
    }
    var answer = 0L
    for (i in state.indices) {
      for (j in state[i].indices) {
        for (k in state[i][j].indices) {
          if (state[i][j][k]) {
            answer += 1L * (xs[i + 1] - xs[i]) * (ys[j + 1] - ys[j]) * (zs[k + 1] - zs[k])
          }
        }
      }
    }
    return answer
  }

  fun part1(input: Input): Int {
    return solve(
      input.filter { (_, cuboid) ->
        cuboid.all { (from, to) -> from in -50..50 && to in -49..51 }
      }
    ).toInt()
  }

  fun part2(input: Input): Long {
    return solve(input)
  }

  check(part1(readInput("test-input.txt")) == 590784)
  check(part2(readInput("test-input2.txt")) == 2758514936282235L)

  val millis = measureTimeMillis {
    println(part1(readInput("input.txt")))
    println(part2(readInput("input.txt")))
  }
  System.err.println("Done in $millis ms")
}

private fun readInput(s: String): Input {
  return Files.newBufferedReader(Paths.get("src/day22/$s")).readLines().map { line ->
    val on = line.startsWith("on ")
    if (!on) check(line.startsWith("off "))
    val list = line.substring(if (on) 3 else 4).split(",").mapIndexed { index, range ->
      check(range.matches("${"xyz"[index]}=-?\\d+..-?\\d+".toRegex()))
      val (from, to) = range.substring(2).split("..").map { it.toInt() }
      listOf(from, to + 1)
    }
    Pair(on, list)
  }
}

private typealias Input = List<Pair<Boolean, List<List<Int>>>>

Compiled from "Solution.kt"
public final class day22.SolutionKt {
  public static final void main();
    Code:
       0: ldc           #8                  // String test-input.txt
       2: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Ljava/util/List;
       5: invokestatic  #16                 // Method main$part1:(Ljava/util/List;)I
       8: ldc           #17                 // int 590784
      10: if_icmpne     17
      13: iconst_1
      14: goto          18
      17: iconst_0
      18: ifne          31
      21: new           #19                 // class java/lang/IllegalStateException
      24: dup
      25: ldc           #21                 // String Check failed.
      27: invokespecial #25                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
      30: athrow
      31: ldc           #27                 // String test-input2.txt
      33: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Ljava/util/List;
      36: invokestatic  #31                 // Method main$part2:(Ljava/util/List;)J
      39: ldc2_w        #32                 // long 2758514936282235l
      42: lcmp
      43: ifne          50
      46: iconst_1
      47: goto          51
      50: iconst_0
      51: ifne          64
      54: new           #19                 // class java/lang/IllegalStateException
      57: dup
      58: ldc           #21                 // String Check failed.
      60: invokespecial #25                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
      63: athrow
      64: iconst_0
      65: istore_2
      66: invokestatic  #39                 // Method java/lang/System.currentTimeMillis:()J
      69: lstore_3
      70: iconst_0
      71: istore        5
      73: ldc           #41                 // String input.txt
      75: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Ljava/util/List;
      78: invokestatic  #16                 // Method main$part1:(Ljava/util/List;)I
      81: istore        6
      83: getstatic     #45                 // Field java/lang/System.out:Ljava/io/PrintStream;
      86: iload         6
      88: invokevirtual #51                 // Method java/io/PrintStream.println:(I)V
      91: ldc           #41                 // String input.txt
      93: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Ljava/util/List;
      96: invokestatic  #31                 // Method main$part2:(Ljava/util/List;)J
      99: lstore        7
     101: getstatic     #45                 // Field java/lang/System.out:Ljava/io/PrintStream;
     104: lload         7
     106: invokevirtual #54                 // Method java/io/PrintStream.println:(J)V
     109: nop
     110: nop
     111: invokestatic  #39                 // Method java/lang/System.currentTimeMillis:()J
     114: lload_3
     115: lsub
     116: lstore_0
     117: getstatic     #57                 // Field java/lang/System.err:Ljava/io/PrintStream;
     120: new           #59                 // class java/lang/StringBuilder
     123: dup
     124: invokespecial #61                 // Method java/lang/StringBuilder."<init>":()V
     127: ldc           #63                 // String Done in
     129: invokevirtual #67                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     132: lload_0
     133: invokevirtual #70                 // Method java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
     136: ldc           #72                 // String  ms
     138: invokevirtual #67                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     141: invokevirtual #76                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     144: invokevirtual #78                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
     147: return

  private static final java.util.List<kotlin.Pair<java.lang.Boolean, java.util.List<java.util.List<java.lang.Integer>>>> readInput(java.lang.String);
    Code:
       0: new           #59                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #61                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #87                 // String src/day22/
       9: invokevirtual #67                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: invokevirtual #67                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      16: invokevirtual #76                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      19: iconst_0
      20: anewarray     #89                 // class java/lang/String
      23: invokestatic  #95                 // Method java/nio/file/Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
      26: invokestatic  #101                // Method java/nio/file/Files.newBufferedReader:(Ljava/nio/file/Path;)Ljava/io/BufferedReader;
      29: dup
      30: ldc           #103                // String newBufferedReader(...)
      32: invokestatic  #109                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      35: checkcast     #111                // class java/io/Reader
      38: invokestatic  #117                // Method kotlin/io/TextStreamsKt.readLines:(Ljava/io/Reader;)Ljava/util/List;
      41: checkcast     #119                // class java/lang/Iterable
      44: astore_1
      45: iconst_0
      46: istore_2
      47: aload_1
      48: astore_3
      49: new           #121                // class java/util/ArrayList
      52: dup
      53: aload_1
      54: bipush        10
      56: invokestatic  #127                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      59: invokespecial #129                // Method java/util/ArrayList."<init>":(I)V
      62: checkcast     #131                // class java/util/Collection
      65: astore        4
      67: iconst_0
      68: istore        5
      70: aload_3
      71: invokeinterface #135,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      76: astore        6
      78: aload         6
      80: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      85: ifeq          603
      88: aload         6
      90: invokeinterface #145,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      95: astore        7
      97: aload         4
      99: aload         7
     101: checkcast     #89                 // class java/lang/String
     104: astore        8
     106: astore        36
     108: iconst_0
     109: istore        9
     111: aload         8
     113: ldc           #147                // String on
     115: iconst_0
     116: iconst_2
     117: aconst_null
     118: invokestatic  #153                // Method kotlin/text/StringsKt.startsWith$default:(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
     121: istore        10
     123: iload         10
     125: ifne          151
     128: aload         8
     130: ldc           #155                // String off
     132: iconst_0
     133: iconst_2
     134: aconst_null
     135: invokestatic  #153                // Method kotlin/text/StringsKt.startsWith$default:(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
     138: ifne          151
     141: new           #19                 // class java/lang/IllegalStateException
     144: dup
     145: ldc           #21                 // String Check failed.
     147: invokespecial #25                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
     150: athrow
     151: aload         8
     153: iload         10
     155: ifeq          162
     158: iconst_3
     159: goto          163
     162: iconst_4
     163: invokevirtual #159                // Method java/lang/String.substring:(I)Ljava/lang/String;
     166: dup
     167: ldc           #161                // String substring(...)
     169: invokestatic  #109                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     172: checkcast     #163                // class java/lang/CharSequence
     175: iconst_1
     176: anewarray     #89                 // class java/lang/String
     179: astore        11
     181: aload         11
     183: iconst_0
     184: ldc           #165                // String ,
     186: aastore
     187: aload         11
     189: iconst_0
     190: iconst_0
     191: bipush        6
     193: aconst_null
     194: invokestatic  #169                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     197: checkcast     #119                // class java/lang/Iterable
     200: astore        11
     202: iconst_0
     203: istore        12
     205: aload         11
     207: astore        13
     209: new           #121                // class java/util/ArrayList
     212: dup
     213: aload         11
     215: bipush        10
     217: invokestatic  #127                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     220: invokespecial #129                // Method java/util/ArrayList."<init>":(I)V
     223: checkcast     #131                // class java/util/Collection
     226: astore        14
     228: iconst_0
     229: istore        15
     231: iconst_0
     232: istore        16
     234: aload         13
     236: invokeinterface #135,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     241: astore        17
     243: aload         17
     245: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     250: ifeq          569
     253: aload         17
     255: invokeinterface #145,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     260: astore        18
     262: aload         14
     264: iload         16
     266: iinc          16, 1
     269: istore        19
     271: iload         19
     273: ifge          279
     276: invokestatic  #172                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     279: iload         19
     281: aload         18
     283: checkcast     #89                 // class java/lang/String
     286: astore        20
     288: istore        21
     290: astore        22
     292: iconst_0
     293: istore        23
     295: aload         20
     297: checkcast     #163                // class java/lang/CharSequence
     300: astore        24
     302: new           #174                // class kotlin/text/Regex
     305: dup
     306: new           #59                 // class java/lang/StringBuilder
     309: dup
     310: invokespecial #61                 // Method java/lang/StringBuilder."<init>":()V
     313: ldc           #176                // String xyz
     315: iload         21
     317: invokevirtual #180                // Method java/lang/String.charAt:(I)C
     320: invokevirtual #183                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     323: ldc           #185                // String =-?\\d+..-?\\d+
     325: invokevirtual #67                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     328: invokevirtual #76                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     331: invokespecial #186                // Method kotlin/text/Regex."<init>":(Ljava/lang/String;)V
     334: aload         24
     336: invokevirtual #190                // Method kotlin/text/Regex.matches:(Ljava/lang/CharSequence;)Z
     339: ifne          352
     342: new           #19                 // class java/lang/IllegalStateException
     345: dup
     346: ldc           #21                 // String Check failed.
     348: invokespecial #25                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
     351: athrow
     352: aload         20
     354: iconst_2
     355: invokevirtual #159                // Method java/lang/String.substring:(I)Ljava/lang/String;
     358: dup
     359: ldc           #161                // String substring(...)
     361: invokestatic  #109                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     364: checkcast     #163                // class java/lang/CharSequence
     367: iconst_1
     368: anewarray     #89                 // class java/lang/String
     371: astore        25
     373: aload         25
     375: iconst_0
     376: ldc           #192                // String ..
     378: aastore
     379: aload         25
     381: iconst_0
     382: iconst_0
     383: bipush        6
     385: aconst_null
     386: invokestatic  #169                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     389: checkcast     #119                // class java/lang/Iterable
     392: astore        25
     394: iconst_0
     395: istore        26
     397: aload         25
     399: astore        27
     401: new           #121                // class java/util/ArrayList
     404: dup
     405: aload         25
     407: bipush        10
     409: invokestatic  #127                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     412: invokespecial #129                // Method java/util/ArrayList."<init>":(I)V
     415: checkcast     #131                // class java/util/Collection
     418: astore        28
     420: iconst_0
     421: istore        29
     423: aload         27
     425: invokeinterface #135,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     430: astore        30
     432: aload         30
     434: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     439: ifeq          486
     442: aload         30
     444: invokeinterface #145,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     449: astore        31
     451: aload         28
     453: aload         31
     455: checkcast     #89                 // class java/lang/String
     458: astore        32
     460: astore        33
     462: iconst_0
     463: istore        34
     465: aload         32
     467: invokestatic  #198                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     470: nop
     471: invokestatic  #202                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     474: aload         33
     476: swap
     477: invokeinterface #206,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     482: pop
     483: goto          432
     486: aload         28
     488: checkcast     #208                // class java/util/List
     491: nop
     492: astore        24
     494: aload         24
     496: iconst_0
     497: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     502: checkcast     #213                // class java/lang/Number
     505: invokevirtual #217                // Method java/lang/Number.intValue:()I
     508: istore        25
     510: aload         24
     512: iconst_1
     513: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     518: checkcast     #213                // class java/lang/Number
     521: invokevirtual #217                // Method java/lang/Number.intValue:()I
     524: istore        26
     526: iconst_2
     527: anewarray     #194                // class java/lang/Integer
     530: astore        27
     532: aload         27
     534: iconst_0
     535: iload         25
     537: invokestatic  #202                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     540: aastore
     541: aload         27
     543: iconst_1
     544: iload         26
     546: iconst_1
     547: iadd
     548: invokestatic  #202                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     551: aastore
     552: aload         27
     554: invokestatic  #221                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     557: aload         22
     559: swap
     560: invokeinterface #206,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     565: pop
     566: goto          243
     569: aload         14
     571: checkcast     #208                // class java/util/List
     574: nop
     575: astore        35
     577: new           #223                // class kotlin/Pair
     580: dup
     581: iload         10
     583: invokestatic  #228                // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     586: aload         35
     588: invokespecial #231                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     591: aload         36
     593: swap
     594: invokeinterface #206,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     599: pop
     600: goto          78
     603: aload         4
     605: checkcast     #208                // class java/util/List
     608: nop
     609: areturn

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

  private static final void main$inPlaceDistinct(java.util.List<java.lang.Integer>);
    Code:
       0: aload_0
       1: invokestatic  #271                // Method kotlin/collections/CollectionsKt.sort:(Ljava/util/List;)V
       4: iconst_1
       5: istore_1
       6: iconst_1
       7: istore_2
       8: aload_0
       9: invokeinterface #274,  1          // InterfaceMethod java/util/List.size:()I
      14: istore_3
      15: iload_2
      16: iload_3
      17: if_icmpge     75
      20: aload_0
      21: iload_2
      22: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      27: checkcast     #213                // class java/lang/Number
      30: invokevirtual #217                // Method java/lang/Number.intValue:()I
      33: aload_0
      34: iload_2
      35: iconst_1
      36: isub
      37: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      42: checkcast     #213                // class java/lang/Number
      45: invokevirtual #217                // Method java/lang/Number.intValue:()I
      48: if_icmpeq     69
      51: aload_0
      52: iload_1
      53: iinc          1, 1
      56: aload_0
      57: iload_2
      58: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      63: invokeinterface #278,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
      68: pop
      69: iinc          2, 1
      72: goto          15
      75: aload_0
      76: invokeinterface #274,  1          // InterfaceMethod java/util/List.size:()I
      81: iload_1
      82: if_icmple     95
      85: aload_0
      86: invokeinterface #281,  1          // InterfaceMethod java/util/List.removeLast:()Ljava/lang/Object;
      91: pop
      92: goto          75
      95: return

  private static final long main$solve(java.util.List<? extends kotlin.Pair<java.lang.Boolean, ? extends java.util.List<? extends java.util.List<java.lang.Integer>>>>);
    Code:
       0: iconst_0
       1: istore_2
       2: iconst_3
       3: anewarray     #208                // class java/util/List
       6: astore_3
       7: iload_2
       8: iconst_3
       9: if_icmpge     35
      12: iload_2
      13: istore        4
      15: aload_3
      16: iload         4
      18: new           #121                // class java/util/ArrayList
      21: dup
      22: invokespecial #287                // Method java/util/ArrayList."<init>":()V
      25: checkcast     #208                // class java/util/List
      28: aastore
      29: iinc          2, 1
      32: goto          7
      35: aload_3
      36: astore_1
      37: aload_0
      38: invokeinterface #288,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      43: astore_2
      44: aload_2
      45: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      50: ifeq          120
      53: aload_2
      54: invokeinterface #145,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      59: checkcast     #223                // class kotlin/Pair
      62: invokevirtual #291                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      65: checkcast     #208                // class java/util/List
      68: astore        4
      70: iconst_0
      71: istore        5
      73: aload         4
      75: checkcast     #131                // class java/util/Collection
      78: invokeinterface #292,  1          // InterfaceMethod java/util/Collection.size:()I
      83: istore        6
      85: iload         5
      87: iload         6
      89: if_icmpge     44
      92: aload_1
      93: iload         5
      95: aaload
      96: aload         4
      98: iload         5
     100: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     105: checkcast     #131                // class java/util/Collection
     108: invokeinterface #296,  2          // InterfaceMethod java/util/List.addAll:(Ljava/util/Collection;)Z
     113: pop
     114: iinc          5, 1
     117: goto          85
     120: aload_1
     121: astore_2
     122: iconst_0
     123: istore_3
     124: iconst_0
     125: istore        4
     127: aload_2
     128: arraylength
     129: istore        5
     131: iload         4
     133: iload         5
     135: if_icmpge     163
     138: aload_2
     139: iload         4
     141: aaload
     142: astore        6
     144: aload         6
     146: astore        7
     148: iconst_0
     149: istore        8
     151: aload         7
     153: invokestatic  #298                // Method main$inPlaceDistinct:(Ljava/util/List;)V
     156: nop
     157: iinc          4, 1
     160: goto          131
     163: nop
     164: aload_1
     165: iconst_0
     166: aaload
     167: astore_2
     168: aload_1
     169: iconst_1
     170: aaload
     171: astore_3
     172: aload_1
     173: iconst_2
     174: aaload
     175: astore        4
     177: iconst_0
     178: istore        6
     180: aload_2
     181: invokeinterface #274,  1          // InterfaceMethod java/util/List.size:()I
     186: iconst_1
     187: isub
     188: istore        7
     190: iload         7
     192: anewarray     #300                // class "[[Z"
     195: astore        8
     197: iload         6
     199: iload         7
     201: if_icmpge     282
     204: iload         6
     206: istore        9
     208: aload         8
     210: iload         9
     212: iconst_0
     213: istore        10
     215: aload_3
     216: invokeinterface #274,  1          // InterfaceMethod java/util/List.size:()I
     221: iconst_1
     222: isub
     223: istore        11
     225: iload         11
     227: anewarray     #302                // class "[Z"
     230: astore        12
     232: istore        35
     234: astore        34
     236: iload         10
     238: iload         11
     240: if_icmpge     269
     243: iload         10
     245: istore        13
     247: aload         12
     249: iload         13
     251: aload         4
     253: invokeinterface #274,  1          // InterfaceMethod java/util/List.size:()I
     258: iconst_1
     259: isub
     260: newarray       boolean
     262: aastore
     263: iinc          10, 1
     266: goto          236
     269: aload         34
     271: iload         35
     273: aload         12
     275: aastore
     276: iinc          6, 1
     279: goto          197
     282: aload         8
     284: astore        5
     286: aload_0
     287: invokeinterface #288,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     292: astore        6
     294: aload         6
     296: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     301: ifeq          776
     304: aload         6
     306: invokeinterface #145,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     311: checkcast     #223                // class kotlin/Pair
     314: astore        7
     316: aload         7
     318: invokevirtual #305                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     321: checkcast     #225                // class java/lang/Boolean
     324: invokevirtual #308                // Method java/lang/Boolean.booleanValue:()Z
     327: istore        8
     329: aload         7
     331: invokevirtual #291                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     334: checkcast     #208                // class java/util/List
     337: astore        9
     339: aload         9
     341: checkcast     #119                // class java/lang/Iterable
     344: astore        11
     346: iconst_0
     347: istore        12
     349: aload         11
     351: astore        13
     353: new           #121                // class java/util/ArrayList
     356: dup
     357: aload         11
     359: bipush        10
     361: invokestatic  #127                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     364: invokespecial #129                // Method java/util/ArrayList."<init>":(I)V
     367: checkcast     #131                // class java/util/Collection
     370: astore        14
     372: iconst_0
     373: istore        15
     375: iconst_0
     376: istore        16
     378: aload         13
     380: invokeinterface #135,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     385: astore        17
     387: aload         17
     389: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     394: ifeq          614
     397: aload         17
     399: invokeinterface #145,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     404: astore        18
     406: aload         14
     408: iload         16
     410: iinc          16, 1
     413: istore        19
     415: iload         19
     417: ifge          423
     420: invokestatic  #172                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     423: iload         19
     425: aload         18
     427: checkcast     #208                // class java/util/List
     430: astore        20
     432: istore        21
     434: astore        34
     436: iconst_0
     437: istore        22
     439: aload         20
     441: checkcast     #119                // class java/lang/Iterable
     444: astore        23
     446: iconst_0
     447: istore        24
     449: aload         23
     451: astore        25
     453: new           #121                // class java/util/ArrayList
     456: dup
     457: aload         23
     459: bipush        10
     461: invokestatic  #127                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     464: invokespecial #129                // Method java/util/ArrayList."<init>":(I)V
     467: checkcast     #131                // class java/util/Collection
     470: astore        26
     472: iconst_0
     473: istore        27
     475: aload         25
     477: invokeinterface #135,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     482: astore        28
     484: aload         28
     486: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     491: ifeq          555
     494: aload         28
     496: invokeinterface #145,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     501: astore        29
     503: aload         26
     505: aload         29
     507: checkcast     #213                // class java/lang/Number
     510: invokevirtual #217                // Method java/lang/Number.intValue:()I
     513: istore        30
     515: astore        31
     517: iconst_0
     518: istore        32
     520: aload_1
     521: iload         21
     523: aaload
     524: iload         30
     526: invokestatic  #202                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     529: checkcast     #310                // class java/lang/Comparable
     532: iconst_0
     533: iconst_0
     534: bipush        6
     536: aconst_null
     537: invokestatic  #314                // Method kotlin/collections/CollectionsKt.binarySearch$default:(Ljava/util/List;Ljava/lang/Comparable;IIILjava/lang/Object;)I
     540: invokestatic  #202                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     543: aload         31
     545: swap
     546: invokeinterface #206,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     551: pop
     552: goto          484
     555: aload         26
     557: checkcast     #208                // class java/util/List
     560: nop
     561: astore        33
     563: aload         33
     565: iconst_0
     566: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     571: checkcast     #213                // class java/lang/Number
     574: invokevirtual #217                // Method java/lang/Number.intValue:()I
     577: istore        23
     579: aload         33
     581: iconst_1
     582: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     587: checkcast     #213                // class java/lang/Number
     590: invokevirtual #217                // Method java/lang/Number.intValue:()I
     593: istore        24
     595: iload         23
     597: iload         24
     599: invokestatic  #320                // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     602: aload         34
     604: swap
     605: invokeinterface #206,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     610: pop
     611: goto          387
     614: aload         14
     616: checkcast     #208                // class java/util/List
     619: nop
     620: astore        10
     622: aload         10
     624: iconst_0
     625: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     630: checkcast     #322                // class kotlin/ranges/IntRange
     633: astore        11
     635: aload         10
     637: iconst_1
     638: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     643: checkcast     #322                // class kotlin/ranges/IntRange
     646: astore        12
     648: aload         10
     650: iconst_2
     651: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     656: checkcast     #322                // class kotlin/ranges/IntRange
     659: astore        13
     661: aload         11
     663: invokevirtual #325                // Method kotlin/ranges/IntRange.getFirst:()I
     666: istore        14
     668: aload         11
     670: invokevirtual #328                // Method kotlin/ranges/IntRange.getLast:()I
     673: istore        15
     675: iload         14
     677: iload         15
     679: if_icmpgt     294
     682: aload         12
     684: invokevirtual #325                // Method kotlin/ranges/IntRange.getFirst:()I
     687: istore        16
     689: aload         12
     691: invokevirtual #328                // Method kotlin/ranges/IntRange.getLast:()I
     694: istore        17
     696: iload         16
     698: iload         17
     700: if_icmpgt     763
     703: aload         13
     705: invokevirtual #325                // Method kotlin/ranges/IntRange.getFirst:()I
     708: istore        18
     710: aload         13
     712: invokevirtual #328                // Method kotlin/ranges/IntRange.getLast:()I
     715: istore        19
     717: iload         18
     719: iload         19
     721: if_icmpgt     750
     724: aload         5
     726: iload         14
     728: aaload
     729: iload         16
     731: aaload
     732: iload         18
     734: iload         8
     736: bastore
     737: iload         18
     739: iload         19
     741: if_icmpeq     750
     744: iinc          18, 1
     747: goto          724
     750: iload         16
     752: iload         17
     754: if_icmpeq     763
     757: iinc          16, 1
     760: goto          703
     763: iload         14
     765: iload         15
     767: if_icmpeq     294
     770: iinc          14, 1
     773: goto          682
     776: lconst_0
     777: lstore        6
     779: iconst_0
     780: istore        8
     782: aload         5
     784: checkcast     #330                // class "[Ljava/lang/Object;"
     787: arraylength
     788: istore        9
     790: iload         8
     792: iload         9
     794: if_icmpge     978
     797: iconst_0
     798: istore        10
     800: aload         5
     802: iload         8
     804: aaload
     805: checkcast     #330                // class "[Ljava/lang/Object;"
     808: arraylength
     809: istore        11
     811: iload         10
     813: iload         11
     815: if_icmpge     972
     818: iconst_0
     819: istore        12
     821: aload         5
     823: iload         8
     825: aaload
     826: iload         10
     828: aaload
     829: arraylength
     830: istore        13
     832: iload         12
     834: iload         13
     836: if_icmpge     966
     839: aload         5
     841: iload         8
     843: aaload
     844: iload         10
     846: aaload
     847: iload         12
     849: baload
     850: ifeq          960
     853: lload         6
     855: lconst_1
     856: aload_2
     857: iload         8
     859: iconst_1
     860: iadd
     861: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     866: checkcast     #213                // class java/lang/Number
     869: invokevirtual #217                // Method java/lang/Number.intValue:()I
     872: aload_2
     873: iload         8
     875: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     880: checkcast     #213                // class java/lang/Number
     883: invokevirtual #217                // Method java/lang/Number.intValue:()I
     886: isub
     887: i2l
     888: lmul
     889: aload_3
     890: iload         10
     892: iconst_1
     893: iadd
     894: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     899: checkcast     #213                // class java/lang/Number
     902: invokevirtual #217                // Method java/lang/Number.intValue:()I
     905: aload_3
     906: iload         10
     908: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     913: checkcast     #213                // class java/lang/Number
     916: invokevirtual #217                // Method java/lang/Number.intValue:()I
     919: isub
     920: i2l
     921: lmul
     922: aload         4
     924: iload         12
     926: iconst_1
     927: iadd
     928: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     933: checkcast     #213                // class java/lang/Number
     936: invokevirtual #217                // Method java/lang/Number.intValue:()I
     939: aload         4
     941: iload         12
     943: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     948: checkcast     #213                // class java/lang/Number
     951: invokevirtual #217                // Method java/lang/Number.intValue:()I
     954: isub
     955: i2l
     956: lmul
     957: ladd
     958: lstore        6
     960: iinc          12, 1
     963: goto          832
     966: iinc          10, 1
     969: goto          811
     972: iinc          8, 1
     975: goto          790
     978: lload         6
     980: lreturn

  private static final int main$part1(java.util.List<? extends kotlin.Pair<java.lang.Boolean, ? extends java.util.List<? extends java.util.List<java.lang.Integer>>>>);
    Code:
       0: aload_0
       1: checkcast     #119                // class java/lang/Iterable
       4: astore_1
       5: iconst_0
       6: istore_2
       7: aload_1
       8: astore_3
       9: new           #121                // class java/util/ArrayList
      12: dup
      13: invokespecial #287                // Method java/util/ArrayList."<init>":()V
      16: checkcast     #131                // class java/util/Collection
      19: astore        4
      21: iconst_0
      22: istore        5
      24: aload_3
      25: invokeinterface #135,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      30: astore        6
      32: aload         6
      34: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      39: ifeq          258
      42: aload         6
      44: invokeinterface #145,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      49: astore        7
      51: aload         7
      53: checkcast     #223                // class kotlin/Pair
      56: astore        8
      58: iconst_0
      59: istore        9
      61: aload         8
      63: invokevirtual #291                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      66: checkcast     #208                // class java/util/List
      69: astore        10
      71: aload         10
      73: checkcast     #119                // class java/lang/Iterable
      76: astore        11
      78: iconst_0
      79: istore        12
      81: aload         11
      83: instanceof    #131                // class java/util/Collection
      86: ifeq          106
      89: aload         11
      91: checkcast     #131                // class java/util/Collection
      94: invokeinterface #362,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
      99: ifeq          106
     102: iconst_1
     103: goto          241
     106: aload         11
     108: invokeinterface #135,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     113: astore        13
     115: aload         13
     117: invokeinterface #141,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     122: ifeq          240
     125: aload         13
     127: invokeinterface #145,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     132: astore        14
     134: aload         14
     136: checkcast     #208                // class java/util/List
     139: astore        15
     141: iconst_0
     142: istore        16
     144: aload         15
     146: iconst_0
     147: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     152: checkcast     #213                // class java/lang/Number
     155: invokevirtual #217                // Method java/lang/Number.intValue:()I
     158: istore        17
     160: aload         15
     162: iconst_1
     163: invokeinterface #211,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     168: checkcast     #213                // class java/lang/Number
     171: invokevirtual #217                // Method java/lang/Number.intValue:()I
     174: istore        18
     176: bipush        -50
     178: iload         17
     180: if_icmpgt     198
     183: iload         17
     185: bipush        51
     187: if_icmpge     194
     190: iconst_1
     191: goto          199
     194: iconst_0
     195: goto          199
     198: iconst_0
     199: ifeq          232
     202: bipush        -49
     204: iload         18
     206: if_icmpgt     224
     209: iload         18
     211: bipush        52
     213: if_icmpge     220
     216: iconst_1
     217: goto          225
     220: iconst_0
     221: goto          225
     224: iconst_0
     225: ifeq          232
     228: iconst_1
     229: goto          233
     232: iconst_0
     233: ifne          115
     236: iconst_0
     237: goto          241
     240: iconst_1
     241: nop
     242: ifeq          32
     245: aload         4
     247: aload         7
     249: invokeinterface #206,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     254: pop
     255: goto          32
     258: aload         4
     260: checkcast     #208                // class java/util/List
     263: nop
     264: invokestatic  #364                // Method main$solve:(Ljava/util/List;)J
     267: l2i
     268: ireturn

  private static final long main$part2(java.util.List<? extends kotlin.Pair<java.lang.Boolean, ? extends java.util.List<? extends java.util.List<java.lang.Integer>>>>);
    Code:
       0: aload_0
       1: invokestatic  #364                // Method main$solve:(Ljava/util/List;)J
       4: lreturn
}


package day04

import java.io.BufferedReader
import java.nio.file.Files
import java.nio.file.Paths

fun main() {
  fun solveBoard(board: Board, sequence: List<Int>): Pair<Int, Int> {
    val rows = IntArray(5) { 5 }
    val cols = IntArray(5) { 5 }
    var sum = board.sumOf { it.sum() }
    for ((index, number) in sequence.withIndex()) {
      for (r in rows.indices) {
        for (c in cols.indices) {
          if (board[r][c] == number) {
            rows[r]--
            cols[c]--
            sum -= number
          }
        }
      }
      if (rows.any { it == 0 } || cols.any { it == 0 }) {
        return Pair(index, sum * number)
      }
    }
    error("Polundra!")
  }

  fun part1(input: Pair<List<Int>, List<Board>>): Int {
    val (sequence, boards) = input

    return boards
      .map { solveBoard(it, sequence) }
      .minByOrNull { it.first }!!
      .second
  }
  fun part2(input: Pair<List<Int>, List<Board>>): Int {
    val (sequence, boards) = input

    return boards
      .map { solveBoard(it, sequence) }
      .maxByOrNull { it.first }!!
      .second
  }

  check(part1(readInput("test-input.txt")) == 4512)
  check(part2(readInput("test-input.txt")) == 1924)

  println(part1(readInput("input.txt")))
  println(part2(readInput("input.txt")))
}

private fun readInput(s: String): Pair<List<Int>, List<Board>> {
  val reader = Files.newBufferedReader(Paths.get("src/day04/$s"))
  val sequence = reader.readLine()!!.split(",").map { it.toInt() }
  val boards = ArrayList<Board>()
  while (true) boards.add(
    List(5) {
      val row = reader.readNonBlankLine() ?: return Pair(sequence, boards)
      check(row.isNotBlank())
      row.split(" ").filter { it.isNotBlank() }.map { it.toInt() }
    }
  )
}

private fun BufferedReader.readNonBlankLine(): String? = readLine()?.ifBlank { readNonBlankLine() }

typealias Board = List<List<Int>>

Compiled from "Solution.kt"
public final class day04.SolutionKt {
  public static final void main();
    Code:
       0: ldc           #8                  // String test-input.txt
       2: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Lkotlin/Pair;
       5: invokestatic  #16                 // Method main$part1:(Lkotlin/Pair;)I
       8: sipush        4512
      11: if_icmpne     18
      14: iconst_1
      15: goto          19
      18: iconst_0
      19: ifne          32
      22: new           #18                 // class java/lang/IllegalStateException
      25: dup
      26: ldc           #20                 // String Check failed.
      28: invokespecial #24                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
      31: athrow
      32: ldc           #8                  // String test-input.txt
      34: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Lkotlin/Pair;
      37: invokestatic  #27                 // Method main$part2:(Lkotlin/Pair;)I
      40: sipush        1924
      43: if_icmpne     50
      46: iconst_1
      47: goto          51
      50: iconst_0
      51: ifne          64
      54: new           #18                 // class java/lang/IllegalStateException
      57: dup
      58: ldc           #20                 // String Check failed.
      60: invokespecial #24                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
      63: athrow
      64: ldc           #29                 // String input.txt
      66: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Lkotlin/Pair;
      69: invokestatic  #16                 // Method main$part1:(Lkotlin/Pair;)I
      72: istore_0
      73: getstatic     #35                 // Field java/lang/System.out:Ljava/io/PrintStream;
      76: iload_0
      77: invokevirtual #41                 // Method java/io/PrintStream.println:(I)V
      80: ldc           #29                 // String input.txt
      82: invokestatic  #12                 // Method readInput:(Ljava/lang/String;)Lkotlin/Pair;
      85: invokestatic  #27                 // Method main$part2:(Lkotlin/Pair;)I
      88: istore_0
      89: getstatic     #35                 // Field java/lang/System.out:Ljava/io/PrintStream;
      92: iload_0
      93: invokevirtual #41                 // Method java/io/PrintStream.println:(I)V
      96: return

  private static final kotlin.Pair<java.util.List<java.lang.Integer>, java.util.List<java.util.List<java.util.List<java.lang.Integer>>>> readInput(java.lang.String);
    Code:
       0: new           #44                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #46                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #48                 // String src/day04/
       9: invokevirtual #52                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: invokevirtual #52                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      16: invokevirtual #56                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      19: iconst_0
      20: anewarray     #58                 // class java/lang/String
      23: invokestatic  #64                 // Method java/nio/file/Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
      26: invokestatic  #70                 // Method java/nio/file/Files.newBufferedReader:(Ljava/nio/file/Path;)Ljava/io/BufferedReader;
      29: astore_1
      30: aload_1
      31: invokevirtual #75                 // Method java/io/BufferedReader.readLine:()Ljava/lang/String;
      34: dup
      35: invokestatic  #81                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      38: checkcast     #83                 // class java/lang/CharSequence
      41: iconst_1
      42: anewarray     #58                 // class java/lang/String
      45: astore_3
      46: aload_3
      47: iconst_0
      48: ldc           #85                 // String ,
      50: aastore
      51: aload_3
      52: iconst_0
      53: iconst_0
      54: bipush        6
      56: aconst_null
      57: invokestatic  #91                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      60: checkcast     #93                 // class java/lang/Iterable
      63: astore_3
      64: iconst_0
      65: istore        4
      67: aload_3
      68: astore        5
      70: new           #95                 // class java/util/ArrayList
      73: dup
      74: aload_3
      75: bipush        10
      77: invokestatic  #101                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      80: invokespecial #103                // Method java/util/ArrayList."<init>":(I)V
      83: checkcast     #105                // class java/util/Collection
      86: astore        6
      88: iconst_0
      89: istore        7
      91: aload         5
      93: invokeinterface #109,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      98: astore        8
     100: aload         8
     102: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     107: ifeq          154
     110: aload         8
     112: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     117: astore        9
     119: aload         6
     121: aload         9
     123: checkcast     #58                 // class java/lang/String
     126: astore        10
     128: astore        21
     130: iconst_0
     131: istore        11
     133: aload         10
     135: invokestatic  #125                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     138: nop
     139: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     142: aload         21
     144: swap
     145: invokeinterface #133,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     150: pop
     151: goto          100
     154: aload         6
     156: checkcast     #135                // class java/util/List
     159: nop
     160: astore_2
     161: new           #95                 // class java/util/ArrayList
     164: dup
     165: invokespecial #136                // Method java/util/ArrayList."<init>":()V
     168: astore_3
     169: aload_3
     170: iconst_5
     171: istore        4
     173: astore        21
     175: new           #95                 // class java/util/ArrayList
     178: dup
     179: iload         4
     181: invokespecial #103                // Method java/util/ArrayList."<init>":(I)V
     184: astore        5
     186: iconst_0
     187: istore        6
     189: iload         6
     191: iload         4
     193: if_icmpge     515
     196: iload         6
     198: istore        7
     200: aload         5
     202: iload         7
     204: istore        8
     206: astore        22
     208: iconst_0
     209: istore        9
     211: aload_1
     212: invokestatic  #81                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     215: aload_1
     216: invokestatic  #140                // Method readNonBlankLine:(Ljava/io/BufferedReader;)Ljava/lang/String;
     219: dup
     220: ifnonnull     234
     223: pop
     224: new           #142                // class kotlin/Pair
     227: dup
     228: aload_2
     229: aload_3
     230: invokespecial #145                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     233: areturn
     234: astore        10
     236: nop
     237: aload         10
     239: checkcast     #83                 // class java/lang/CharSequence
     242: invokestatic  #149                // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
     245: ifne          252
     248: iconst_1
     249: goto          253
     252: iconst_0
     253: ifne          266
     256: new           #18                 // class java/lang/IllegalStateException
     259: dup
     260: ldc           #20                 // String Check failed.
     262: invokespecial #24                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
     265: athrow
     266: aload         10
     268: checkcast     #83                 // class java/lang/CharSequence
     271: iconst_1
     272: anewarray     #58                 // class java/lang/String
     275: astore        11
     277: aload         11
     279: iconst_0
     280: ldc           #151                // String
     282: aastore
     283: aload         11
     285: iconst_0
     286: iconst_0
     287: bipush        6
     289: aconst_null
     290: invokestatic  #91                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     293: checkcast     #93                 // class java/lang/Iterable
     296: astore        11
     298: iconst_0
     299: istore        12
     301: aload         11
     303: astore        13
     305: new           #95                 // class java/util/ArrayList
     308: dup
     309: invokespecial #136                // Method java/util/ArrayList."<init>":()V
     312: checkcast     #105                // class java/util/Collection
     315: astore        14
     317: iconst_0
     318: istore        15
     320: aload         13
     322: invokeinterface #109,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     327: astore        16
     329: aload         16
     331: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     336: ifeq          391
     339: aload         16
     341: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     346: astore        17
     348: aload         17
     350: checkcast     #58                 // class java/lang/String
     353: astore        18
     355: iconst_0
     356: istore        19
     358: aload         18
     360: checkcast     #83                 // class java/lang/CharSequence
     363: invokestatic  #149                // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
     366: ifne          373
     369: iconst_1
     370: goto          374
     373: iconst_0
     374: nop
     375: ifeq          329
     378: aload         14
     380: aload         17
     382: invokeinterface #133,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     387: pop
     388: goto          329
     391: aload         14
     393: checkcast     #135                // class java/util/List
     396: nop
     397: checkcast     #93                 // class java/lang/Iterable
     400: astore        11
     402: nop
     403: iconst_0
     404: istore        12
     406: aload         11
     408: astore        13
     410: new           #95                 // class java/util/ArrayList
     413: dup
     414: aload         11
     416: bipush        10
     418: invokestatic  #101                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     421: invokespecial #103                // Method java/util/ArrayList."<init>":(I)V
     424: checkcast     #105                // class java/util/Collection
     427: astore        14
     429: iconst_0
     430: istore        15
     432: aload         13
     434: invokeinterface #109,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     439: astore        16
     441: aload         16
     443: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     448: ifeq          495
     451: aload         16
     453: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     458: astore        17
     460: aload         14
     462: aload         17
     464: checkcast     #58                 // class java/lang/String
     467: astore        18
     469: astore        20
     471: iconst_0
     472: istore        19
     474: aload         18
     476: invokestatic  #125                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     479: nop
     480: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     483: aload         20
     485: swap
     486: invokeinterface #133,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     491: pop
     492: goto          441
     495: aload         14
     497: checkcast     #135                // class java/util/List
     500: nop
     501: nop
     502: aload         22
     504: swap
     505: invokevirtual #152                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     508: pop
     509: iinc          6, 1
     512: goto          189
     515: aload         5
     517: checkcast     #135                // class java/util/List
     520: aload         21
     522: swap
     523: invokevirtual #152                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     526: pop
     527: goto          169

  private static final java.lang.String readNonBlankLine(java.io.BufferedReader);
    Code:
       0: aload_0
       1: invokevirtual #75                 // Method java/io/BufferedReader.readLine:()Ljava/lang/String;
       4: dup
       5: ifnull        35
       8: checkcast     #83                 // class java/lang/CharSequence
      11: astore_1
      12: aload_1
      13: invokestatic  #149                // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
      16: ifeq          28
      19: iconst_0
      20: istore_2
      21: aload_0
      22: invokestatic  #140                // Method readNonBlankLine:(Ljava/io/BufferedReader;)Ljava/lang/String;
      25: goto          29
      28: aload_1
      29: checkcast     #58                 // class java/lang/String
      32: goto          37
      35: pop
      36: aconst_null
      37: areturn

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

  private static final kotlin.Pair<java.lang.Integer, java.lang.Integer> main$solveBoard(java.util.List<? extends java.util.List<java.lang.Integer>>, java.util.List<java.lang.Integer>);
    Code:
       0: iconst_0
       1: istore_3
       2: iconst_5
       3: newarray       int
       5: astore        4
       7: iload_3
       8: iconst_5
       9: if_icmpge     27
      12: iload_3
      13: istore        5
      15: aload         4
      17: iload         5
      19: iconst_5
      20: iastore
      21: iinc          3, 1
      24: goto          7
      27: aload         4
      29: astore_2
      30: iconst_0
      31: istore        4
      33: iconst_5
      34: newarray       int
      36: astore        5
      38: iload         4
      40: iconst_5
      41: if_icmpge     60
      44: iload         4
      46: istore        6
      48: aload         5
      50: iload         6
      52: iconst_5
      53: iastore
      54: iinc          4, 1
      57: goto          38
      60: aload         5
      62: astore_3
      63: aload_0
      64: checkcast     #93                 // class java/lang/Iterable
      67: astore        5
      69: iconst_0
      70: istore        6
      72: aload         5
      74: invokeinterface #109,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      79: astore        7
      81: aload         7
      83: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      88: ifeq          134
      91: aload         7
      93: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      98: astore        8
     100: iload         6
     102: aload         8
     104: checkcast     #135                // class java/util/List
     107: astore        9
     109: istore        17
     111: iconst_0
     112: istore        10
     114: aload         9
     116: checkcast     #93                 // class java/lang/Iterable
     119: invokestatic  #195                // Method kotlin/collections/CollectionsKt.sumOfInt:(Ljava/lang/Iterable;)I
     122: istore        18
     124: iload         17
     126: iload         18
     128: iadd
     129: istore        6
     131: goto          81
     134: iload         6
     136: istore        4
     138: aload_1
     139: checkcast     #93                 // class java/lang/Iterable
     142: invokeinterface #109,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     147: astore        5
     149: iconst_0
     150: istore        6
     152: aload         5
     154: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     159: ifeq          444
     162: iload         6
     164: istore        7
     166: iload         6
     168: iconst_1
     169: iadd
     170: istore        6
     172: aload         5
     174: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     179: checkcast     #197                // class java/lang/Number
     182: invokevirtual #201                // Method java/lang/Number.intValue:()I
     185: istore        8
     187: iconst_0
     188: istore        9
     190: aload_2
     191: arraylength
     192: istore        10
     194: iload         9
     196: iload         10
     198: if_icmpge     299
     201: iconst_0
     202: istore        11
     204: aload_3
     205: arraylength
     206: istore        12
     208: iload         11
     210: iload         12
     212: if_icmpge     293
     215: aload_0
     216: iload         9
     218: invokeinterface #204,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     223: checkcast     #135                // class java/util/List
     226: iload         11
     228: invokeinterface #204,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     233: checkcast     #197                // class java/lang/Number
     236: invokevirtual #201                // Method java/lang/Number.intValue:()I
     239: iload         8
     241: if_icmpne     287
     244: iload         9
     246: istore        13
     248: aload_2
     249: iload         13
     251: iaload
     252: istore        14
     254: aload_2
     255: iload         13
     257: iload         14
     259: iconst_m1
     260: iadd
     261: iastore
     262: iload         11
     264: istore        15
     266: aload_3
     267: iload         15
     269: iaload
     270: istore        16
     272: aload_3
     273: iload         15
     275: iload         16
     277: iconst_m1
     278: iadd
     279: iastore
     280: iload         4
     282: iload         8
     284: isub
     285: istore        4
     287: iinc          11, 1
     290: goto          208
     293: iinc          9, 1
     296: goto          194
     299: aload_2
     300: astore        9
     302: iconst_0
     303: istore        10
     305: iconst_0
     306: istore        11
     308: aload         9
     310: arraylength
     311: istore        12
     313: iload         11
     315: iload         12
     317: if_icmpge     357
     320: aload         9
     322: iload         11
     324: iaload
     325: istore        13
     327: iload         13
     329: istore        14
     331: iconst_0
     332: istore        15
     334: iload         14
     336: ifne          343
     339: iconst_1
     340: goto          344
     343: iconst_0
     344: ifeq          351
     347: iconst_1
     348: goto          358
     351: iinc          11, 1
     354: goto          313
     357: iconst_0
     358: ifne          423
     361: aload_3
     362: astore        9
     364: iconst_0
     365: istore        10
     367: iconst_0
     368: istore        11
     370: aload         9
     372: arraylength
     373: istore        12
     375: iload         11
     377: iload         12
     379: if_icmpge     419
     382: aload         9
     384: iload         11
     386: iaload
     387: istore        13
     389: iload         13
     391: istore        14
     393: iconst_0
     394: istore        15
     396: iload         14
     398: ifne          405
     401: iconst_1
     402: goto          406
     405: iconst_0
     406: ifeq          413
     409: iconst_1
     410: goto          420
     413: iinc          11, 1
     416: goto          375
     419: iconst_0
     420: ifeq          152
     423: new           #142                // class kotlin/Pair
     426: dup
     427: iload         7
     429: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     432: iload         4
     434: iload         8
     436: imul
     437: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     440: invokespecial #145                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     443: areturn
     444: new           #18                 // class java/lang/IllegalStateException
     447: dup
     448: ldc           #206                // String Polundra!
     450: invokevirtual #207                // Method java/lang/Object.toString:()Ljava/lang/String;
     453: invokespecial #24                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
     456: athrow

  private static final int main$part1(kotlin.Pair<? extends java.util.List<java.lang.Integer>, ? extends java.util.List<? extends java.util.List<? extends java.util.List<java.lang.Integer>>>>);
    Code:
       0: aload_0
       1: invokevirtual #227                // Method kotlin/Pair.component1:()Ljava/lang/Object;
       4: checkcast     #135                // class java/util/List
       7: astore_1
       8: aload_0
       9: invokevirtual #230                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      12: checkcast     #135                // class java/util/List
      15: astore_2
      16: aload_2
      17: checkcast     #93                 // class java/lang/Iterable
      20: astore_3
      21: nop
      22: iconst_0
      23: istore        4
      25: aload_3
      26: astore        5
      28: new           #95                 // class java/util/ArrayList
      31: dup
      32: aload_3
      33: bipush        10
      35: invokestatic  #101                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      38: invokespecial #103                // Method java/util/ArrayList."<init>":(I)V
      41: checkcast     #105                // class java/util/Collection
      44: astore        6
      46: iconst_0
      47: istore        7
      49: aload         5
      51: invokeinterface #109,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      56: astore        8
      58: aload         8
      60: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      65: ifeq          109
      68: aload         8
      70: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      75: astore        9
      77: aload         6
      79: aload         9
      81: checkcast     #135                // class java/util/List
      84: astore        10
      86: astore        12
      88: iconst_0
      89: istore        11
      91: aload         10
      93: aload_1
      94: invokestatic  #232                // Method main$solveBoard:(Ljava/util/List;Ljava/util/List;)Lkotlin/Pair;
      97: aload         12
      99: swap
     100: invokeinterface #133,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     105: pop
     106: goto          58
     109: aload         6
     111: checkcast     #135                // class java/util/List
     114: nop
     115: checkcast     #93                 // class java/lang/Iterable
     118: astore_3
     119: nop
     120: iconst_0
     121: istore        4
     123: aload_3
     124: invokeinterface #109,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     129: astore        5
     131: aload         5
     133: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     138: ifne          145
     141: aconst_null
     142: goto          251
     145: aload         5
     147: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     152: astore        6
     154: aload         5
     156: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     161: ifne          169
     164: aload         6
     166: goto          251
     169: aload         6
     171: checkcast     #142                // class kotlin/Pair
     174: astore        7
     176: iconst_0
     177: istore        8
     179: aload         7
     181: invokevirtual #235                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     184: checkcast     #197                // class java/lang/Number
     187: invokevirtual #201                // Method java/lang/Number.intValue:()I
     190: istore        7
     192: aload         5
     194: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     199: astore        8
     201: aload         8
     203: checkcast     #142                // class kotlin/Pair
     206: astore        9
     208: iconst_0
     209: istore        10
     211: aload         9
     213: invokevirtual #235                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     216: checkcast     #197                // class java/lang/Number
     219: invokevirtual #201                // Method java/lang/Number.intValue:()I
     222: istore        9
     224: iload         7
     226: iload         9
     228: if_icmple     239
     231: aload         8
     233: astore        6
     235: iload         9
     237: istore        7
     239: aload         5
     241: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     246: ifne          192
     249: aload         6
     251: dup
     252: invokestatic  #81                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     255: checkcast     #142                // class kotlin/Pair
     258: invokevirtual #238                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     261: checkcast     #197                // class java/lang/Number
     264: invokevirtual #201                // Method java/lang/Number.intValue:()I
     267: ireturn

  private static final int main$part2(kotlin.Pair<? extends java.util.List<java.lang.Integer>, ? extends java.util.List<? extends java.util.List<? extends java.util.List<java.lang.Integer>>>>);
    Code:
       0: aload_0
       1: invokevirtual #227                // Method kotlin/Pair.component1:()Ljava/lang/Object;
       4: checkcast     #135                // class java/util/List
       7: astore_1
       8: aload_0
       9: invokevirtual #230                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      12: checkcast     #135                // class java/util/List
      15: astore_2
      16: aload_2
      17: checkcast     #93                 // class java/lang/Iterable
      20: astore_3
      21: nop
      22: iconst_0
      23: istore        4
      25: aload_3
      26: astore        5
      28: new           #95                 // class java/util/ArrayList
      31: dup
      32: aload_3
      33: bipush        10
      35: invokestatic  #101                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      38: invokespecial #103                // Method java/util/ArrayList."<init>":(I)V
      41: checkcast     #105                // class java/util/Collection
      44: astore        6
      46: iconst_0
      47: istore        7
      49: aload         5
      51: invokeinterface #109,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      56: astore        8
      58: aload         8
      60: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      65: ifeq          109
      68: aload         8
      70: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      75: astore        9
      77: aload         6
      79: aload         9
      81: checkcast     #135                // class java/util/List
      84: astore        10
      86: astore        12
      88: iconst_0
      89: istore        11
      91: aload         10
      93: aload_1
      94: invokestatic  #232                // Method main$solveBoard:(Ljava/util/List;Ljava/util/List;)Lkotlin/Pair;
      97: aload         12
      99: swap
     100: invokeinterface #133,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     105: pop
     106: goto          58
     109: aload         6
     111: checkcast     #135                // class java/util/List
     114: nop
     115: checkcast     #93                 // class java/lang/Iterable
     118: astore_3
     119: nop
     120: iconst_0
     121: istore        4
     123: aload_3
     124: invokeinterface #109,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     129: astore        5
     131: aload         5
     133: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     138: ifne          145
     141: aconst_null
     142: goto          251
     145: aload         5
     147: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     152: astore        6
     154: aload         5
     156: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     161: ifne          169
     164: aload         6
     166: goto          251
     169: aload         6
     171: checkcast     #142                // class kotlin/Pair
     174: astore        7
     176: iconst_0
     177: istore        8
     179: aload         7
     181: invokevirtual #235                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     184: checkcast     #197                // class java/lang/Number
     187: invokevirtual #201                // Method java/lang/Number.intValue:()I
     190: istore        7
     192: aload         5
     194: invokeinterface #119,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     199: astore        8
     201: aload         8
     203: checkcast     #142                // class kotlin/Pair
     206: astore        9
     208: iconst_0
     209: istore        10
     211: aload         9
     213: invokevirtual #235                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     216: checkcast     #197                // class java/lang/Number
     219: invokevirtual #201                // Method java/lang/Number.intValue:()I
     222: istore        9
     224: iload         7
     226: iload         9
     228: if_icmpge     239
     231: aload         8
     233: astore        6
     235: iload         9
     237: istore        7
     239: aload         5
     241: invokeinterface #115,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     246: ifne          192
     249: aload         6
     251: dup
     252: invokestatic  #81                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     255: checkcast     #142                // class kotlin/Pair
     258: invokevirtual #238                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     261: checkcast     #197                // class java/lang/Number
     264: invokevirtual #201                // Method java/lang/Number.intValue:()I
     267: ireturn
}