import java.lang.Integer.max

fun main() {
    fun part1(input: List<String>): Int {
        val blueprints = input.map { line ->
            line.ints().let {
                listOf(
                    VectorN(it[1], 0, 0, 0),
                    VectorN(it[2], 0, 0, 0),
                    VectorN(it[3], it[4], 0, 0),
                    VectorN(it[5], 0, it[6], 0),
                )
            }
        }

        val timeLimit = 24

        var bestForMinute = Array<Int>(30) { 0 }

        fun decision(budget: VectorN, robots: VectorN, minutes: Int, blueprint: List<VectorN>, maxBudget: VectorN, robotsWeDidNotBuild:Set<Int> = emptySet()): Int {
            if (minutes > timeLimit) { // end condition
                return budget.components[3]
            }

            // pruning
            if (budget.components[3] > bestForMinute[minutes])
                bestForMinute[minutes] = budget.components[3]

            if (bestForMinute[minutes] > budget.components[3])
                return budget.components[3]

            // robots we can afford
            val robotsWeCanAfford = blueprint.mapIndexed { index, it -> index to ((budget - it).components.min() >= 0) }.filter { (_, canAfford) -> canAfford }.map { it.first }.toSet()

            // we need to buy geode if we can afford it
            if (robotsWeCanAfford.contains(3))
                return decision(budget + robots - blueprint[3], robots + VectorN(0, 0, 0, 1), minutes + 1, blueprint, maxBudget)

            val robotsItMakesSenseToMake = robotsWeCanAfford.filter { robotIndex ->
                when{
                    robotIndex in robotsWeDidNotBuild -> false
                    (robots.components[robotIndex] >= maxBudget.components[robotIndex]) -> false
                    else -> true
                }
            }.toSet()

            val withoutBuilding = decision(budget + robots, robots, minutes + 1, blueprint, maxBudget, robotsItMakesSenseToMake)

            if (robotsItMakesSenseToMake.isNotEmpty()) {
                val withBuilding = robotsItMakesSenseToMake.maxOf { robotIndex ->
                    decision(budget + robots - blueprint[robotIndex], robots + VectorN(0, 0, 0, 0).also { it.components[robotIndex] = 1 }, minutes + 1, blueprint, maxBudget)
                }

                return max(withBuilding, withoutBuilding)
            }

            return withoutBuilding
        }

        return blueprints.mapIndexed { index, blueprint ->
            bestForMinute = Array<Int>(30) { 0 }
            val budget = VectorN(0, 0, 0, 0) // ore, clay, obsidian, geode
            val robots = VectorN(1, 0, 0, 0)

            val maxBudget = VectorN((0..3).map { c -> blueprint.maxOf { it.components[c] } }.toMutableList())

            println("maxBudget $maxBudget")

            val maxGeodes = decision(budget, robots, 1, blueprint, maxBudget)

            println("Blueprint $index produces max $maxGeodes geodes")

            (index + 1) * maxGeodes
        }.sum()
    }

    fun part2(input: List<String>): Int {
        val blueprints = input.map { line ->
            line.ints().let {
                listOf(
                    VectorN(it[1], 0, 0, 0),
                    VectorN(it[2], 0, 0, 0),
                    VectorN(it[3], it[4], 0, 0),
                    VectorN(it[5], 0, it[6], 0),
                )
            }
        }.take(3)

        val timeLimit = 32

        var bestForMinute = Array<Int>(33) { 0 }

        fun decision(budget: VectorN, robots: VectorN, minutes: Int, blueprint: List<VectorN>, maxBudget: VectorN, robotsWeDidNotBuild:Set<Int> = emptySet()): Int {
            if (minutes > timeLimit) { // end condition
                return budget.components[3]
            }

            // pruning
            if (budget.components[3] > bestForMinute[minutes])
                bestForMinute[minutes] = budget.components[3]

            if (bestForMinute[minutes] > budget.components[3])
                return budget.components[3]

            // robots we can afford
            val robotsWeCanAfford = blueprint.mapIndexed { index, it -> index to ((budget - it).components.min() >= 0) }.filter { (_, canAfford) -> canAfford }.map { it.first }.toSet()

            // we need to buy geode if we can afford it
            if (robotsWeCanAfford.contains(3))
                return decision(budget + robots - blueprint[3], robots + VectorN(0, 0, 0, 1), minutes + 1, blueprint, maxBudget)

            val robotsItMakesSenseToMake = robotsWeCanAfford.filter { robotIndex ->
                when{
                    robotIndex in robotsWeDidNotBuild -> false
                    (robots.components[robotIndex] >= maxBudget.components[robotIndex]) -> false
                    else -> true
                }
            }.toSet()

            val withoutBuilding = decision(budget + robots, robots, minutes + 1, blueprint, maxBudget, robotsItMakesSenseToMake)

            if (robotsItMakesSenseToMake.isNotEmpty()) {
                val withBuilding = robotsItMakesSenseToMake.maxOf { robotIndex ->
                    decision(budget + robots - blueprint[robotIndex], robots + VectorN(0, 0, 0, 0).also { it.components[robotIndex] = 1 }, minutes + 1, blueprint, maxBudget)
                }

                return max(withBuilding, withoutBuilding)
            }

            return withoutBuilding
        }

        return blueprints.mapIndexed { index, blueprint ->
            bestForMinute = Array<Int>(33) { 0 }
            val budget = VectorN(0, 0, 0, 0) // ore, clay, obsidian, geode
            val robots = VectorN(1, 0, 0, 0)

            val maxBudget = VectorN((0..3).map { c -> blueprint.maxOf { it.components[c] } }.toMutableList())

            println("maxBudget $maxBudget")

            val maxGeodes = decision(budget, robots, 1, blueprint, maxBudget)

            println("Blueprint $index produces max $maxGeodes geodes")

            maxGeodes
        }.reduce(Int::times)
    }

    test(
        day = 19,
        testTarget1 = 33,
        testTarget2 = 3472, // 56 * 62
        part1 = ::part1,
        part2 = ::part2,
    )
}

Compiled from "Day19.kt"
final class Day19Kt$main$2 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.util.List<? extends java.lang.String>, java.lang.Integer> {
  public static final Day19Kt$main$2 INSTANCE;

  Day19Kt$main$2();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class kotlin/jvm/internal/Intrinsics$Kotlin
       4: ldc           #13                 // String part2
       6: ldc           #15                 // String main$part2(Ljava/util/List;)I
       8: iconst_0
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final java.lang.Integer invoke(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #25                 // String p0
       3: invokestatic  #31                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #37                 // Method Day19Kt.access$main$part2:(Ljava/util/List;)I
      10: invokestatic  #43                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      13: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #47                 // class java/util/List
       5: invokevirtual #49                 // Method invoke:(Ljava/util/List;)Ljava/lang/Integer;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day19Kt$main$2
       3: dup
       4: invokespecial #54                 // Method "<init>":()V
       7: putstatic     #57                 // Field INSTANCE:LDay19Kt$main$2;
      10: return
}

Compiled from "Day19.kt"
final class Day19Kt$main$1 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.util.List<? extends java.lang.String>, java.lang.Integer> {
  public static final Day19Kt$main$1 INSTANCE;

  Day19Kt$main$1();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class kotlin/jvm/internal/Intrinsics$Kotlin
       4: ldc           #13                 // String part1
       6: ldc           #15                 // String main$part1(Ljava/util/List;)I
       8: iconst_0
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final java.lang.Integer invoke(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #25                 // String p0
       3: invokestatic  #31                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #37                 // Method Day19Kt.access$main$part1:(Ljava/util/List;)I
      10: invokestatic  #43                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      13: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #47                 // class java/util/List
       5: invokevirtual #49                 // Method invoke:(Ljava/util/List;)Ljava/lang/Integer;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day19Kt$main$1
       3: dup
       4: invokespecial #54                 // Method "<init>":()V
       7: putstatic     #57                 // Field INSTANCE:LDay19Kt$main$1;
      10: return
}

Compiled from "Day19.kt"
public final class Day19Kt {
  public static final void main();
    Code:
       0: bipush        19
       2: bipush        33
       4: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
       7: sipush        3472
      10: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      13: getstatic     #18                 // Field Day19Kt$main$1.INSTANCE:LDay19Kt$main$1;
      16: checkcast     #20                 // class kotlin/jvm/functions/Function1
      19: getstatic     #25                 // Field Day19Kt$main$2.INSTANCE:LDay19Kt$main$2;
      22: checkcast     #20                 // class kotlin/jvm/functions/Function1
      25: invokestatic  #31                 // Method UtilsKt.test:(ILjava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
      28: return

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

  private static final int main$part1$decision(int, kotlin.jvm.internal.Ref$ObjectRef<java.lang.Integer[]>, VectorN, VectorN, int, java.util.List<VectorN>, VectorN, java.util.Set<java.lang.Integer>);
    Code:
       0: iload         4
       2: iload_0
       3: if_icmple     23
       6: aload_2
       7: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
      10: iconst_3
      11: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      16: checkcast     #53                 // class java/lang/Number
      19: invokevirtual #57                 // Method java/lang/Number.intValue:()I
      22: ireturn
      23: aload_2
      24: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
      27: iconst_3
      28: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      33: checkcast     #53                 // class java/lang/Number
      36: invokevirtual #57                 // Method java/lang/Number.intValue:()I
      39: aload_1
      40: getfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      43: checkcast     #65                 // class "[Ljava/lang/Integer;"
      46: iload         4
      48: aaload
      49: invokevirtual #66                 // Method java/lang/Integer.intValue:()I
      52: if_icmple     75
      55: aload_1
      56: getfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      59: checkcast     #65                 // class "[Ljava/lang/Integer;"
      62: iload         4
      64: aload_2
      65: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
      68: iconst_3
      69: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      74: aastore
      75: aload_1
      76: getfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      79: checkcast     #65                 // class "[Ljava/lang/Integer;"
      82: iload         4
      84: aaload
      85: invokevirtual #66                 // Method java/lang/Integer.intValue:()I
      88: aload_2
      89: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
      92: iconst_3
      93: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      98: checkcast     #53                 // class java/lang/Number
     101: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     104: if_icmple     124
     107: aload_2
     108: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     111: iconst_3
     112: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     117: checkcast     #53                 // class java/lang/Number
     120: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     123: ireturn
     124: aload         5
     126: checkcast     #68                 // class java/lang/Iterable
     129: astore        9
     131: iconst_0
     132: istore        10
     134: aload         9
     136: astore        11
     138: new           #70                 // class java/util/ArrayList
     141: dup
     142: aload         9
     144: bipush        10
     146: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     149: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     152: checkcast     #82                 // class java/util/Collection
     155: astore        12
     157: iconst_0
     158: istore        13
     160: iconst_0
     161: istore        14
     163: aload         11
     165: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     170: astore        15
     172: aload         15
     174: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     179: ifeq          276
     182: aload         15
     184: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     189: astore        16
     191: aload         12
     193: iload         14
     195: iinc          14, 1
     198: istore        17
     200: iload         17
     202: ifge          208
     205: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     208: iload         17
     210: aload         16
     212: checkcast     #41                 // class VectorN
     215: astore        18
     217: istore        19
     219: astore        25
     221: iconst_0
     222: istore        20
     224: iload         19
     226: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     229: aload_2
     230: aload         18
     232: invokevirtual #103                // Method VectorN.minus:(LVectorN;)LVectorN;
     235: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     238: checkcast     #68                 // class java/lang/Iterable
     241: invokestatic  #107                // Method kotlin/collections/CollectionsKt.minOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     244: checkcast     #53                 // class java/lang/Number
     247: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     250: iflt          257
     253: iconst_1
     254: goto          258
     257: iconst_0
     258: invokestatic  #112                // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     261: invokestatic  #118                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     264: aload         25
     266: swap
     267: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     272: pop
     273: goto          172
     276: aload         12
     278: checkcast     #47                 // class java/util/List
     281: nop
     282: checkcast     #68                 // class java/lang/Iterable
     285: astore        9
     287: nop
     288: iconst_0
     289: istore        10
     291: aload         9
     293: astore        11
     295: new           #70                 // class java/util/ArrayList
     298: dup
     299: invokespecial #124                // Method java/util/ArrayList."<init>":()V
     302: checkcast     #82                 // class java/util/Collection
     305: astore        12
     307: iconst_0
     308: istore        13
     310: aload         11
     312: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     317: astore        14
     319: aload         14
     321: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     326: ifeq          379
     329: aload         14
     331: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     336: astore        15
     338: aload         15
     340: checkcast     #126                // class kotlin/Pair
     343: astore        16
     345: iconst_0
     346: istore        17
     348: aload         16
     350: invokevirtual #129                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     353: checkcast     #109                // class java/lang/Boolean
     356: invokevirtual #132                // Method java/lang/Boolean.booleanValue:()Z
     359: istore        18
     361: iload         18
     363: ifeq          319
     366: aload         12
     368: aload         15
     370: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     375: pop
     376: goto          319
     379: aload         12
     381: checkcast     #47                 // class java/util/List
     384: nop
     385: checkcast     #68                 // class java/lang/Iterable
     388: astore        9
     390: nop
     391: iconst_0
     392: istore        10
     394: aload         9
     396: astore        11
     398: new           #70                 // class java/util/ArrayList
     401: dup
     402: aload         9
     404: bipush        10
     406: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     409: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     412: checkcast     #82                 // class java/util/Collection
     415: astore        12
     417: iconst_0
     418: istore        13
     420: aload         11
     422: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     427: astore        14
     429: aload         14
     431: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     436: ifeq          488
     439: aload         14
     441: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     446: astore        15
     448: aload         12
     450: aload         15
     452: checkcast     #126                // class kotlin/Pair
     455: astore        16
     457: astore        25
     459: iconst_0
     460: istore        17
     462: aload         16
     464: invokevirtual #135                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     467: checkcast     #53                 // class java/lang/Number
     470: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     473: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     476: aload         25
     478: swap
     479: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     484: pop
     485: goto          429
     488: aload         12
     490: checkcast     #47                 // class java/util/List
     493: nop
     494: checkcast     #68                 // class java/lang/Iterable
     497: invokestatic  #139                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     500: astore        8
     502: aload         8
     504: iconst_3
     505: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     508: invokeinterface #144,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     513: ifeq          592
     516: iload_0
     517: aload_1
     518: aload_2
     519: aload_3
     520: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     523: aload         5
     525: iconst_3
     526: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     531: checkcast     #41                 // class VectorN
     534: invokevirtual #103                // Method VectorN.minus:(LVectorN;)LVectorN;
     537: aload_3
     538: new           #41                 // class VectorN
     541: dup
     542: iconst_4
     543: newarray       int
     545: astore        9
     547: aload         9
     549: iconst_0
     550: iconst_0
     551: iastore
     552: aload         9
     554: iconst_1
     555: iconst_0
     556: iastore
     557: aload         9
     559: iconst_2
     560: iconst_0
     561: iastore
     562: aload         9
     564: iconst_3
     565: iconst_1
     566: iastore
     567: aload         9
     569: invokespecial #150                // Method VectorN."<init>":([I)V
     572: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     575: iload         4
     577: iconst_1
     578: iadd
     579: aload         5
     581: aload         6
     583: aconst_null
     584: sipush        128
     587: aconst_null
     588: invokestatic  #154                // Method main$part1$decision$default:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;ILjava/lang/Object;)I
     591: ireturn
     592: aload         8
     594: checkcast     #68                 // class java/lang/Iterable
     597: astore        10
     599: iconst_0
     600: istore        11
     602: aload         10
     604: astore        12
     606: new           #70                 // class java/util/ArrayList
     609: dup
     610: invokespecial #124                // Method java/util/ArrayList."<init>":()V
     613: checkcast     #82                 // class java/util/Collection
     616: astore        13
     618: iconst_0
     619: istore        14
     621: aload         12
     623: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     628: astore        15
     630: aload         15
     632: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     637: ifeq          742
     640: aload         15
     642: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     647: astore        16
     649: aload         16
     651: checkcast     #53                 // class java/lang/Number
     654: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     657: istore        17
     659: iconst_0
     660: istore        18
     662: nop
     663: aload         7
     665: iload         17
     667: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     670: invokeinterface #144,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     675: ifeq          682
     678: iconst_0
     679: goto          725
     682: aload_3
     683: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     686: iload         17
     688: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     693: checkcast     #53                 // class java/lang/Number
     696: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     699: aload         6
     701: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     704: iload         17
     706: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     711: checkcast     #53                 // class java/lang/Number
     714: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     717: if_icmplt     724
     720: iconst_0
     721: goto          725
     724: iconst_1
     725: nop
     726: ifeq          630
     729: aload         13
     731: aload         16
     733: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     738: pop
     739: goto          630
     742: aload         13
     744: checkcast     #47                 // class java/util/List
     747: nop
     748: checkcast     #68                 // class java/lang/Iterable
     751: invokestatic  #139                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     754: astore        9
     756: iload_0
     757: aload_1
     758: aload_2
     759: aload_3
     760: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     763: aload_3
     764: iload         4
     766: iconst_1
     767: iadd
     768: aload         5
     770: aload         6
     772: aload         9
     774: invokestatic  #156                // Method main$part1$decision:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;)I
     777: istore        10
     779: aload         9
     781: checkcast     #82                 // class java/util/Collection
     784: invokeinterface #159,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     789: ifne          796
     792: iconst_1
     793: goto          797
     796: iconst_0
     797: ifeq          1156
     800: aload         9
     802: checkcast     #68                 // class java/lang/Iterable
     805: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     810: astore        13
     812: aload         13
     814: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     819: ifne          830
     822: new           #161                // class java/util/NoSuchElementException
     825: dup
     826: invokespecial #162                // Method java/util/NoSuchElementException."<init>":()V
     829: athrow
     830: aload         13
     832: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     837: checkcast     #53                 // class java/lang/Number
     840: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     843: istore        14
     845: iconst_0
     846: istore        15
     848: iload_0
     849: aload_1
     850: aload_2
     851: aload_3
     852: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     855: aload         5
     857: iload         14
     859: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     864: checkcast     #41                 // class VectorN
     867: invokevirtual #103                // Method VectorN.minus:(LVectorN;)LVectorN;
     870: aload_3
     871: new           #41                 // class VectorN
     874: dup
     875: iconst_4
     876: newarray       int
     878: astore        16
     880: aload         16
     882: iconst_0
     883: iconst_0
     884: iastore
     885: aload         16
     887: iconst_1
     888: iconst_0
     889: iastore
     890: aload         16
     892: iconst_2
     893: iconst_0
     894: iastore
     895: aload         16
     897: iconst_3
     898: iconst_0
     899: iastore
     900: aload         16
     902: invokespecial #150                // Method VectorN."<init>":([I)V
     905: astore        16
     907: aload         16
     909: astore        17
     911: astore        18
     913: astore        19
     915: astore        20
     917: istore        21
     919: iconst_0
     920: istore        22
     922: aload         17
     924: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     927: iload         14
     929: iconst_1
     930: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     933: invokeinterface #166,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
     938: pop
     939: getstatic     #171                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     942: astore        23
     944: iload         21
     946: aload         20
     948: aload         19
     950: aload         18
     952: aload         16
     954: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     957: iload         4
     959: iconst_1
     960: iadd
     961: aload         5
     963: aload         6
     965: aconst_null
     966: sipush        128
     969: aconst_null
     970: invokestatic  #154                // Method main$part1$decision$default:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;ILjava/lang/Object;)I
     973: istore        14
     975: aload         13
     977: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     982: ifeq          1144
     985: aload         13
     987: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     992: checkcast     #53                 // class java/lang/Number
     995: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     998: istore        15
    1000: iconst_0
    1001: istore        16
    1003: iload_0
    1004: aload_1
    1005: aload_2
    1006: aload_3
    1007: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
    1010: aload         5
    1012: iload         15
    1014: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1019: checkcast     #41                 // class VectorN
    1022: invokevirtual #103                // Method VectorN.minus:(LVectorN;)LVectorN;
    1025: aload_3
    1026: new           #41                 // class VectorN
    1029: dup
    1030: iconst_4
    1031: newarray       int
    1033: astore        17
    1035: aload         17
    1037: iconst_0
    1038: iconst_0
    1039: iastore
    1040: aload         17
    1042: iconst_1
    1043: iconst_0
    1044: iastore
    1045: aload         17
    1047: iconst_2
    1048: iconst_0
    1049: iastore
    1050: aload         17
    1052: iconst_3
    1053: iconst_0
    1054: iastore
    1055: aload         17
    1057: invokespecial #150                // Method VectorN."<init>":([I)V
    1060: astore        17
    1062: aload         17
    1064: astore        18
    1066: astore        19
    1068: astore        20
    1070: astore        21
    1072: istore        22
    1074: iconst_0
    1075: istore        23
    1077: aload         18
    1079: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
    1082: iload         15
    1084: iconst_1
    1085: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1088: invokeinterface #166,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
    1093: pop
    1094: getstatic     #171                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
    1097: astore        24
    1099: iload         22
    1101: aload         21
    1103: aload         20
    1105: aload         19
    1107: aload         17
    1109: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
    1112: iload         4
    1114: iconst_1
    1115: iadd
    1116: aload         5
    1118: aload         6
    1120: aconst_null
    1121: sipush        128
    1124: aconst_null
    1125: invokestatic  #154                // Method main$part1$decision$default:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;ILjava/lang/Object;)I
    1128: istore        15
    1130: iload         14
    1132: iload         15
    1134: if_icmpge     975
    1137: iload         15
    1139: istore        14
    1141: goto          975
    1144: iload         14
    1146: istore        11
    1148: iload         11
    1150: iload         10
    1152: invokestatic  #175                // Method java/lang/Integer.max:(II)I
    1155: ireturn
    1156: iload         10
    1158: ireturn

  static int main$part1$decision$default(int, kotlin.jvm.internal.Ref$ObjectRef, VectorN, VectorN, int, java.util.List, VectorN, java.util.Set, int, java.lang.Object);
    Code:
       0: iload         8
       2: sipush        128
       5: iand
       6: ifeq          14
       9: invokestatic  #228                // Method kotlin/collections/SetsKt.emptySet:()Ljava/util/Set;
      12: astore        7
      14: iload_0
      15: aload_1
      16: aload_2
      17: aload_3
      18: iload         4
      20: aload         5
      22: aload         6
      24: aload         7
      26: invokestatic  #156                // Method main$part1$decision:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;)I
      29: ireturn

  private static final int main$part1(java.util.List<java.lang.String>);
    Code:
       0: aload_0
       1: checkcast     #68                 // class java/lang/Iterable
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #70                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: bipush        10
      17: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      20: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
      23: checkcast     #82                 // class java/util/Collection
      26: astore        5
      28: iconst_0
      29: istore        6
      31: aload         4
      33: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      38: astore        7
      40: aload         7
      42: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      47: ifeq          340
      50: aload         7
      52: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      57: astore        8
      59: aload         5
      61: aload         8
      63: checkcast     #233                // class java/lang/String
      66: astore        9
      68: astore        34
      70: iconst_0
      71: istore        10
      73: aload         9
      75: invokestatic  #237                // Method UtilsKt.ints:(Ljava/lang/String;)Ljava/util/List;
      78: astore        11
      80: iconst_0
      81: istore        12
      83: iconst_4
      84: anewarray     #41                 // class VectorN
      87: astore        13
      89: aload         13
      91: iconst_0
      92: new           #41                 // class VectorN
      95: dup
      96: iconst_4
      97: newarray       int
      99: astore        14
     101: aload         14
     103: iconst_0
     104: aload         11
     106: iconst_1
     107: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     112: checkcast     #53                 // class java/lang/Number
     115: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     118: iastore
     119: aload         14
     121: iconst_1
     122: iconst_0
     123: iastore
     124: aload         14
     126: iconst_2
     127: iconst_0
     128: iastore
     129: aload         14
     131: iconst_3
     132: iconst_0
     133: iastore
     134: aload         14
     136: invokespecial #150                // Method VectorN."<init>":([I)V
     139: aastore
     140: aload         13
     142: iconst_1
     143: new           #41                 // class VectorN
     146: dup
     147: iconst_4
     148: newarray       int
     150: astore        14
     152: aload         14
     154: iconst_0
     155: aload         11
     157: iconst_2
     158: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     163: checkcast     #53                 // class java/lang/Number
     166: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     169: iastore
     170: aload         14
     172: iconst_1
     173: iconst_0
     174: iastore
     175: aload         14
     177: iconst_2
     178: iconst_0
     179: iastore
     180: aload         14
     182: iconst_3
     183: iconst_0
     184: iastore
     185: aload         14
     187: invokespecial #150                // Method VectorN."<init>":([I)V
     190: aastore
     191: aload         13
     193: iconst_2
     194: new           #41                 // class VectorN
     197: dup
     198: iconst_4
     199: newarray       int
     201: astore        14
     203: aload         14
     205: iconst_0
     206: aload         11
     208: iconst_3
     209: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     214: checkcast     #53                 // class java/lang/Number
     217: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     220: iastore
     221: aload         14
     223: iconst_1
     224: aload         11
     226: iconst_4
     227: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     232: checkcast     #53                 // class java/lang/Number
     235: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     238: iastore
     239: aload         14
     241: iconst_2
     242: iconst_0
     243: iastore
     244: aload         14
     246: iconst_3
     247: iconst_0
     248: iastore
     249: aload         14
     251: invokespecial #150                // Method VectorN."<init>":([I)V
     254: aastore
     255: aload         13
     257: iconst_3
     258: new           #41                 // class VectorN
     261: dup
     262: iconst_4
     263: newarray       int
     265: astore        14
     267: aload         14
     269: iconst_0
     270: aload         11
     272: iconst_5
     273: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     278: checkcast     #53                 // class java/lang/Number
     281: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     284: iastore
     285: aload         14
     287: iconst_1
     288: iconst_0
     289: iastore
     290: aload         14
     292: iconst_2
     293: aload         11
     295: bipush        6
     297: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     302: checkcast     #53                 // class java/lang/Number
     305: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     308: iastore
     309: aload         14
     311: iconst_3
     312: iconst_0
     313: iastore
     314: aload         14
     316: invokespecial #150                // Method VectorN."<init>":([I)V
     319: aastore
     320: aload         13
     322: invokestatic  #241                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     325: nop
     326: nop
     327: nop
     328: aload         34
     330: swap
     331: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     336: pop
     337: goto          40
     340: aload         5
     342: checkcast     #47                 // class java/util/List
     345: nop
     346: astore_1
     347: bipush        24
     349: istore_2
     350: new           #59                 // class kotlin/jvm/internal/Ref$ObjectRef
     353: dup
     354: invokespecial #242                // Method kotlin/jvm/internal/Ref$ObjectRef."<init>":()V
     357: astore_3
     358: aload_3
     359: iconst_0
     360: istore        4
     362: bipush        30
     364: anewarray     #8                  // class java/lang/Integer
     367: astore        5
     369: astore        34
     371: iload         4
     373: bipush        30
     375: if_icmpge     397
     378: iload         4
     380: istore        6
     382: aload         5
     384: iload         6
     386: iconst_0
     387: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     390: aastore
     391: iinc          4, 1
     394: goto          371
     397: aload         34
     399: aload         5
     401: putfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     404: aload_1
     405: checkcast     #68                 // class java/lang/Iterable
     408: astore        4
     410: iconst_0
     411: istore        5
     413: aload         4
     415: astore        6
     417: new           #70                 // class java/util/ArrayList
     420: dup
     421: aload         4
     423: bipush        10
     425: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     428: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     431: checkcast     #82                 // class java/util/Collection
     434: astore        7
     436: iconst_0
     437: istore        8
     439: iconst_0
     440: istore        9
     442: aload         6
     444: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     449: astore        10
     451: aload         10
     453: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     458: ifeq          987
     461: aload         10
     463: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     468: astore        11
     470: aload         7
     472: iload         9
     474: iinc          9, 1
     477: istore        12
     479: iload         12
     481: ifge          487
     484: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     487: iload         12
     489: aload         11
     491: checkcast     #47                 // class java/util/List
     494: astore        13
     496: istore        14
     498: astore        34
     500: iconst_0
     501: istore        15
     503: aload_3
     504: iconst_0
     505: istore        16
     507: bipush        30
     509: anewarray     #8                  // class java/lang/Integer
     512: astore        17
     514: astore        18
     516: iload         16
     518: bipush        30
     520: if_icmpge     542
     523: iload         16
     525: istore        19
     527: aload         17
     529: iload         19
     531: iconst_0
     532: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     535: aastore
     536: iinc          16, 1
     539: goto          516
     542: aload         18
     544: aload         17
     546: putfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     549: new           #41                 // class VectorN
     552: dup
     553: iconst_4
     554: newarray       int
     556: astore        17
     558: aload         17
     560: iconst_0
     561: iconst_0
     562: iastore
     563: aload         17
     565: iconst_1
     566: iconst_0
     567: iastore
     568: aload         17
     570: iconst_2
     571: iconst_0
     572: iastore
     573: aload         17
     575: iconst_3
     576: iconst_0
     577: iastore
     578: aload         17
     580: invokespecial #150                // Method VectorN."<init>":([I)V
     583: astore        16
     585: new           #41                 // class VectorN
     588: dup
     589: iconst_4
     590: newarray       int
     592: astore        19
     594: aload         19
     596: iconst_0
     597: iconst_1
     598: iastore
     599: aload         19
     601: iconst_1
     602: iconst_0
     603: iastore
     604: aload         19
     606: iconst_2
     607: iconst_0
     608: iastore
     609: aload         19
     611: iconst_3
     612: iconst_0
     613: iastore
     614: aload         19
     616: invokespecial #150                // Method VectorN."<init>":([I)V
     619: astore        17
     621: new           #244                // class kotlin/ranges/IntRange
     624: dup
     625: iconst_0
     626: iconst_3
     627: invokespecial #247                // Method kotlin/ranges/IntRange."<init>":(II)V
     630: checkcast     #68                 // class java/lang/Iterable
     633: astore        20
     635: iconst_0
     636: istore        21
     638: aload         20
     640: astore        22
     642: new           #70                 // class java/util/ArrayList
     645: dup
     646: aload         20
     648: bipush        10
     650: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     653: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     656: checkcast     #82                 // class java/util/Collection
     659: astore        23
     661: iconst_0
     662: istore        24
     664: aload         22
     666: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     671: astore        25
     673: aload         25
     675: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     680: ifeq          846
     683: aload         25
     685: checkcast     #249                // class kotlin/collections/IntIterator
     688: invokevirtual #252                // Method kotlin/collections/IntIterator.nextInt:()I
     691: istore        26
     693: aload         23
     695: iload         26
     697: istore        27
     699: astore        28
     701: iconst_0
     702: istore        29
     704: aload         13
     706: checkcast     #68                 // class java/lang/Iterable
     709: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     714: astore        30
     716: aload         30
     718: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     723: ifne          734
     726: new           #161                // class java/util/NoSuchElementException
     729: dup
     730: invokespecial #162                // Method java/util/NoSuchElementException."<init>":()V
     733: athrow
     734: aload         30
     736: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     741: checkcast     #41                 // class VectorN
     744: astore        31
     746: iconst_0
     747: istore        32
     749: aload         31
     751: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     754: iload         27
     756: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     761: checkcast     #53                 // class java/lang/Number
     764: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     767: istore        31
     769: aload         30
     771: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     776: ifeq          828
     779: aload         30
     781: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     786: checkcast     #41                 // class VectorN
     789: astore        32
     791: iconst_0
     792: istore        33
     794: aload         32
     796: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     799: iload         27
     801: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     806: checkcast     #53                 // class java/lang/Number
     809: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     812: istore        32
     814: iload         31
     816: iload         32
     818: if_icmpge     769
     821: iload         32
     823: istore        31
     825: goto          769
     828: iload         31
     830: nop
     831: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     834: aload         28
     836: swap
     837: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     842: pop
     843: goto          673
     846: aload         23
     848: checkcast     #47                 // class java/util/List
     851: nop
     852: checkcast     #82                 // class java/util/Collection
     855: invokestatic  #256                // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
     858: astore        35
     860: new           #41                 // class VectorN
     863: dup
     864: aload         35
     866: invokespecial #259                // Method VectorN."<init>":(Ljava/util/List;)V
     869: astore        19
     871: new           #261                // class java/lang/StringBuilder
     874: dup
     875: invokespecial #262                // Method java/lang/StringBuilder."<init>":()V
     878: ldc_w         #264                // String maxBudget
     881: invokevirtual #268                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     884: aload         19
     886: invokevirtual #271                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     889: invokevirtual #275                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     892: getstatic     #281                // Field java/lang/System.out:Ljava/io/PrintStream;
     895: swap
     896: invokevirtual #287                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     899: iload_2
     900: aload_3
     901: aload         16
     903: aload         17
     905: iconst_1
     906: aload         13
     908: aload         19
     910: aconst_null
     911: sipush        128
     914: aconst_null
     915: invokestatic  #154                // Method main$part1$decision$default:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;ILjava/lang/Object;)I
     918: istore        20
     920: new           #261                // class java/lang/StringBuilder
     923: dup
     924: invokespecial #262                // Method java/lang/StringBuilder."<init>":()V
     927: ldc_w         #289                // String Blueprint
     930: invokevirtual #268                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     933: iload         14
     935: invokevirtual #292                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     938: ldc_w         #294                // String  produces max
     941: invokevirtual #268                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     944: iload         20
     946: invokevirtual #292                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     949: ldc_w         #296                // String  geodes
     952: invokevirtual #268                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     955: invokevirtual #275                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     958: getstatic     #281                // Field java/lang/System.out:Ljava/io/PrintStream;
     961: swap
     962: invokevirtual #287                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     965: iload         14
     967: iconst_1
     968: iadd
     969: iload         20
     971: imul
     972: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     975: aload         34
     977: swap
     978: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     983: pop
     984: goto          451
     987: aload         7
     989: checkcast     #47                 // class java/util/List
     992: nop
     993: checkcast     #68                 // class java/lang/Iterable
     996: invokestatic  #300                // Method kotlin/collections/CollectionsKt.sumOfInt:(Ljava/lang/Iterable;)I
     999: ireturn

  private static final int main$part2$decision$19(int, kotlin.jvm.internal.Ref$ObjectRef<java.lang.Integer[]>, VectorN, VectorN, int, java.util.List<VectorN>, VectorN, java.util.Set<java.lang.Integer>);
    Code:
       0: iload         4
       2: iload_0
       3: if_icmple     23
       6: aload_2
       7: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
      10: iconst_3
      11: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      16: checkcast     #53                 // class java/lang/Number
      19: invokevirtual #57                 // Method java/lang/Number.intValue:()I
      22: ireturn
      23: aload_2
      24: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
      27: iconst_3
      28: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      33: checkcast     #53                 // class java/lang/Number
      36: invokevirtual #57                 // Method java/lang/Number.intValue:()I
      39: aload_1
      40: getfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      43: checkcast     #65                 // class "[Ljava/lang/Integer;"
      46: iload         4
      48: aaload
      49: invokevirtual #66                 // Method java/lang/Integer.intValue:()I
      52: if_icmple     75
      55: aload_1
      56: getfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      59: checkcast     #65                 // class "[Ljava/lang/Integer;"
      62: iload         4
      64: aload_2
      65: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
      68: iconst_3
      69: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      74: aastore
      75: aload_1
      76: getfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      79: checkcast     #65                 // class "[Ljava/lang/Integer;"
      82: iload         4
      84: aaload
      85: invokevirtual #66                 // Method java/lang/Integer.intValue:()I
      88: aload_2
      89: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
      92: iconst_3
      93: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      98: checkcast     #53                 // class java/lang/Number
     101: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     104: if_icmple     124
     107: aload_2
     108: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     111: iconst_3
     112: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     117: checkcast     #53                 // class java/lang/Number
     120: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     123: ireturn
     124: aload         5
     126: checkcast     #68                 // class java/lang/Iterable
     129: astore        9
     131: iconst_0
     132: istore        10
     134: aload         9
     136: astore        11
     138: new           #70                 // class java/util/ArrayList
     141: dup
     142: aload         9
     144: bipush        10
     146: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     149: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     152: checkcast     #82                 // class java/util/Collection
     155: astore        12
     157: iconst_0
     158: istore        13
     160: iconst_0
     161: istore        14
     163: aload         11
     165: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     170: astore        15
     172: aload         15
     174: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     179: ifeq          276
     182: aload         15
     184: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     189: astore        16
     191: aload         12
     193: iload         14
     195: iinc          14, 1
     198: istore        17
     200: iload         17
     202: ifge          208
     205: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     208: iload         17
     210: aload         16
     212: checkcast     #41                 // class VectorN
     215: astore        18
     217: istore        19
     219: astore        25
     221: iconst_0
     222: istore        20
     224: iload         19
     226: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     229: aload_2
     230: aload         18
     232: invokevirtual #103                // Method VectorN.minus:(LVectorN;)LVectorN;
     235: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     238: checkcast     #68                 // class java/lang/Iterable
     241: invokestatic  #107                // Method kotlin/collections/CollectionsKt.minOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     244: checkcast     #53                 // class java/lang/Number
     247: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     250: iflt          257
     253: iconst_1
     254: goto          258
     257: iconst_0
     258: invokestatic  #112                // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     261: invokestatic  #118                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     264: aload         25
     266: swap
     267: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     272: pop
     273: goto          172
     276: aload         12
     278: checkcast     #47                 // class java/util/List
     281: nop
     282: checkcast     #68                 // class java/lang/Iterable
     285: astore        9
     287: nop
     288: iconst_0
     289: istore        10
     291: aload         9
     293: astore        11
     295: new           #70                 // class java/util/ArrayList
     298: dup
     299: invokespecial #124                // Method java/util/ArrayList."<init>":()V
     302: checkcast     #82                 // class java/util/Collection
     305: astore        12
     307: iconst_0
     308: istore        13
     310: aload         11
     312: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     317: astore        14
     319: aload         14
     321: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     326: ifeq          379
     329: aload         14
     331: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     336: astore        15
     338: aload         15
     340: checkcast     #126                // class kotlin/Pair
     343: astore        16
     345: iconst_0
     346: istore        17
     348: aload         16
     350: invokevirtual #129                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     353: checkcast     #109                // class java/lang/Boolean
     356: invokevirtual #132                // Method java/lang/Boolean.booleanValue:()Z
     359: istore        18
     361: iload         18
     363: ifeq          319
     366: aload         12
     368: aload         15
     370: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     375: pop
     376: goto          319
     379: aload         12
     381: checkcast     #47                 // class java/util/List
     384: nop
     385: checkcast     #68                 // class java/lang/Iterable
     388: astore        9
     390: nop
     391: iconst_0
     392: istore        10
     394: aload         9
     396: astore        11
     398: new           #70                 // class java/util/ArrayList
     401: dup
     402: aload         9
     404: bipush        10
     406: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     409: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     412: checkcast     #82                 // class java/util/Collection
     415: astore        12
     417: iconst_0
     418: istore        13
     420: aload         11
     422: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     427: astore        14
     429: aload         14
     431: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     436: ifeq          488
     439: aload         14
     441: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     446: astore        15
     448: aload         12
     450: aload         15
     452: checkcast     #126                // class kotlin/Pair
     455: astore        16
     457: astore        25
     459: iconst_0
     460: istore        17
     462: aload         16
     464: invokevirtual #135                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     467: checkcast     #53                 // class java/lang/Number
     470: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     473: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     476: aload         25
     478: swap
     479: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     484: pop
     485: goto          429
     488: aload         12
     490: checkcast     #47                 // class java/util/List
     493: nop
     494: checkcast     #68                 // class java/lang/Iterable
     497: invokestatic  #139                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     500: astore        8
     502: aload         8
     504: iconst_3
     505: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     508: invokeinterface #144,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     513: ifeq          592
     516: iload_0
     517: aload_1
     518: aload_2
     519: aload_3
     520: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     523: aload         5
     525: iconst_3
     526: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     531: checkcast     #41                 // class VectorN
     534: invokevirtual #103                // Method VectorN.minus:(LVectorN;)LVectorN;
     537: aload_3
     538: new           #41                 // class VectorN
     541: dup
     542: iconst_4
     543: newarray       int
     545: astore        9
     547: aload         9
     549: iconst_0
     550: iconst_0
     551: iastore
     552: aload         9
     554: iconst_1
     555: iconst_0
     556: iastore
     557: aload         9
     559: iconst_2
     560: iconst_0
     561: iastore
     562: aload         9
     564: iconst_3
     565: iconst_1
     566: iastore
     567: aload         9
     569: invokespecial #150                // Method VectorN."<init>":([I)V
     572: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     575: iload         4
     577: iconst_1
     578: iadd
     579: aload         5
     581: aload         6
     583: aconst_null
     584: sipush        128
     587: aconst_null
     588: invokestatic  #317                // Method main$part2$decision$19$default:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;ILjava/lang/Object;)I
     591: ireturn
     592: aload         8
     594: checkcast     #68                 // class java/lang/Iterable
     597: astore        10
     599: iconst_0
     600: istore        11
     602: aload         10
     604: astore        12
     606: new           #70                 // class java/util/ArrayList
     609: dup
     610: invokespecial #124                // Method java/util/ArrayList."<init>":()V
     613: checkcast     #82                 // class java/util/Collection
     616: astore        13
     618: iconst_0
     619: istore        14
     621: aload         12
     623: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     628: astore        15
     630: aload         15
     632: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     637: ifeq          742
     640: aload         15
     642: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     647: astore        16
     649: aload         16
     651: checkcast     #53                 // class java/lang/Number
     654: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     657: istore        17
     659: iconst_0
     660: istore        18
     662: nop
     663: aload         7
     665: iload         17
     667: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     670: invokeinterface #144,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     675: ifeq          682
     678: iconst_0
     679: goto          725
     682: aload_3
     683: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     686: iload         17
     688: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     693: checkcast     #53                 // class java/lang/Number
     696: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     699: aload         6
     701: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     704: iload         17
     706: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     711: checkcast     #53                 // class java/lang/Number
     714: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     717: if_icmplt     724
     720: iconst_0
     721: goto          725
     724: iconst_1
     725: nop
     726: ifeq          630
     729: aload         13
     731: aload         16
     733: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     738: pop
     739: goto          630
     742: aload         13
     744: checkcast     #47                 // class java/util/List
     747: nop
     748: checkcast     #68                 // class java/lang/Iterable
     751: invokestatic  #139                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     754: astore        9
     756: iload_0
     757: aload_1
     758: aload_2
     759: aload_3
     760: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     763: aload_3
     764: iload         4
     766: iconst_1
     767: iadd
     768: aload         5
     770: aload         6
     772: aload         9
     774: invokestatic  #319                // Method main$part2$decision$19:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;)I
     777: istore        10
     779: aload         9
     781: checkcast     #82                 // class java/util/Collection
     784: invokeinterface #159,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     789: ifne          796
     792: iconst_1
     793: goto          797
     796: iconst_0
     797: ifeq          1156
     800: aload         9
     802: checkcast     #68                 // class java/lang/Iterable
     805: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     810: astore        13
     812: aload         13
     814: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     819: ifne          830
     822: new           #161                // class java/util/NoSuchElementException
     825: dup
     826: invokespecial #162                // Method java/util/NoSuchElementException."<init>":()V
     829: athrow
     830: aload         13
     832: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     837: checkcast     #53                 // class java/lang/Number
     840: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     843: istore        14
     845: iconst_0
     846: istore        15
     848: iload_0
     849: aload_1
     850: aload_2
     851: aload_3
     852: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     855: aload         5
     857: iload         14
     859: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     864: checkcast     #41                 // class VectorN
     867: invokevirtual #103                // Method VectorN.minus:(LVectorN;)LVectorN;
     870: aload_3
     871: new           #41                 // class VectorN
     874: dup
     875: iconst_4
     876: newarray       int
     878: astore        16
     880: aload         16
     882: iconst_0
     883: iconst_0
     884: iastore
     885: aload         16
     887: iconst_1
     888: iconst_0
     889: iastore
     890: aload         16
     892: iconst_2
     893: iconst_0
     894: iastore
     895: aload         16
     897: iconst_3
     898: iconst_0
     899: iastore
     900: aload         16
     902: invokespecial #150                // Method VectorN."<init>":([I)V
     905: astore        16
     907: aload         16
     909: astore        17
     911: astore        18
     913: astore        19
     915: astore        20
     917: istore        21
     919: iconst_0
     920: istore        22
     922: aload         17
     924: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     927: iload         14
     929: iconst_1
     930: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     933: invokeinterface #166,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
     938: pop
     939: getstatic     #171                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     942: astore        23
     944: iload         21
     946: aload         20
     948: aload         19
     950: aload         18
     952: aload         16
     954: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
     957: iload         4
     959: iconst_1
     960: iadd
     961: aload         5
     963: aload         6
     965: aconst_null
     966: sipush        128
     969: aconst_null
     970: invokestatic  #317                // Method main$part2$decision$19$default:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;ILjava/lang/Object;)I
     973: istore        14
     975: aload         13
     977: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     982: ifeq          1144
     985: aload         13
     987: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     992: checkcast     #53                 // class java/lang/Number
     995: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     998: istore        15
    1000: iconst_0
    1001: istore        16
    1003: iload_0
    1004: aload_1
    1005: aload_2
    1006: aload_3
    1007: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
    1010: aload         5
    1012: iload         15
    1014: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1019: checkcast     #41                 // class VectorN
    1022: invokevirtual #103                // Method VectorN.minus:(LVectorN;)LVectorN;
    1025: aload_3
    1026: new           #41                 // class VectorN
    1029: dup
    1030: iconst_4
    1031: newarray       int
    1033: astore        17
    1035: aload         17
    1037: iconst_0
    1038: iconst_0
    1039: iastore
    1040: aload         17
    1042: iconst_1
    1043: iconst_0
    1044: iastore
    1045: aload         17
    1047: iconst_2
    1048: iconst_0
    1049: iastore
    1050: aload         17
    1052: iconst_3
    1053: iconst_0
    1054: iastore
    1055: aload         17
    1057: invokespecial #150                // Method VectorN."<init>":([I)V
    1060: astore        17
    1062: aload         17
    1064: astore        18
    1066: astore        19
    1068: astore        20
    1070: astore        21
    1072: istore        22
    1074: iconst_0
    1075: istore        23
    1077: aload         18
    1079: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
    1082: iload         15
    1084: iconst_1
    1085: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1088: invokeinterface #166,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
    1093: pop
    1094: getstatic     #171                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
    1097: astore        24
    1099: iload         22
    1101: aload         21
    1103: aload         20
    1105: aload         19
    1107: aload         17
    1109: invokevirtual #147                // Method VectorN.plus:(LVectorN;)LVectorN;
    1112: iload         4
    1114: iconst_1
    1115: iadd
    1116: aload         5
    1118: aload         6
    1120: aconst_null
    1121: sipush        128
    1124: aconst_null
    1125: invokestatic  #317                // Method main$part2$decision$19$default:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;ILjava/lang/Object;)I
    1128: istore        15
    1130: iload         14
    1132: iload         15
    1134: if_icmpge     975
    1137: iload         15
    1139: istore        14
    1141: goto          975
    1144: iload         14
    1146: istore        11
    1148: iload         11
    1150: iload         10
    1152: invokestatic  #175                // Method java/lang/Integer.max:(II)I
    1155: ireturn
    1156: iload         10
    1158: ireturn

  static int main$part2$decision$19$default(int, kotlin.jvm.internal.Ref$ObjectRef, VectorN, VectorN, int, java.util.List, VectorN, java.util.Set, int, java.lang.Object);
    Code:
       0: iload         8
       2: sipush        128
       5: iand
       6: ifeq          14
       9: invokestatic  #228                // Method kotlin/collections/SetsKt.emptySet:()Ljava/util/Set;
      12: astore        7
      14: iload_0
      15: aload_1
      16: aload_2
      17: aload_3
      18: iload         4
      20: aload         5
      22: aload         6
      24: aload         7
      26: invokestatic  #319                // Method main$part2$decision$19:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;)I
      29: ireturn

  private static final int main$part2(java.util.List<java.lang.String>);
    Code:
       0: aload_0
       1: checkcast     #68                 // class java/lang/Iterable
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #70                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: bipush        10
      17: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      20: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
      23: checkcast     #82                 // class java/util/Collection
      26: astore        5
      28: iconst_0
      29: istore        6
      31: aload         4
      33: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      38: astore        7
      40: aload         7
      42: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      47: ifeq          340
      50: aload         7
      52: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      57: astore        8
      59: aload         5
      61: aload         8
      63: checkcast     #233                // class java/lang/String
      66: astore        9
      68: astore        34
      70: iconst_0
      71: istore        10
      73: aload         9
      75: invokestatic  #237                // Method UtilsKt.ints:(Ljava/lang/String;)Ljava/util/List;
      78: astore        11
      80: iconst_0
      81: istore        12
      83: iconst_4
      84: anewarray     #41                 // class VectorN
      87: astore        13
      89: aload         13
      91: iconst_0
      92: new           #41                 // class VectorN
      95: dup
      96: iconst_4
      97: newarray       int
      99: astore        14
     101: aload         14
     103: iconst_0
     104: aload         11
     106: iconst_1
     107: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     112: checkcast     #53                 // class java/lang/Number
     115: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     118: iastore
     119: aload         14
     121: iconst_1
     122: iconst_0
     123: iastore
     124: aload         14
     126: iconst_2
     127: iconst_0
     128: iastore
     129: aload         14
     131: iconst_3
     132: iconst_0
     133: iastore
     134: aload         14
     136: invokespecial #150                // Method VectorN."<init>":([I)V
     139: aastore
     140: aload         13
     142: iconst_1
     143: new           #41                 // class VectorN
     146: dup
     147: iconst_4
     148: newarray       int
     150: astore        14
     152: aload         14
     154: iconst_0
     155: aload         11
     157: iconst_2
     158: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     163: checkcast     #53                 // class java/lang/Number
     166: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     169: iastore
     170: aload         14
     172: iconst_1
     173: iconst_0
     174: iastore
     175: aload         14
     177: iconst_2
     178: iconst_0
     179: iastore
     180: aload         14
     182: iconst_3
     183: iconst_0
     184: iastore
     185: aload         14
     187: invokespecial #150                // Method VectorN."<init>":([I)V
     190: aastore
     191: aload         13
     193: iconst_2
     194: new           #41                 // class VectorN
     197: dup
     198: iconst_4
     199: newarray       int
     201: astore        14
     203: aload         14
     205: iconst_0
     206: aload         11
     208: iconst_3
     209: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     214: checkcast     #53                 // class java/lang/Number
     217: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     220: iastore
     221: aload         14
     223: iconst_1
     224: aload         11
     226: iconst_4
     227: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     232: checkcast     #53                 // class java/lang/Number
     235: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     238: iastore
     239: aload         14
     241: iconst_2
     242: iconst_0
     243: iastore
     244: aload         14
     246: iconst_3
     247: iconst_0
     248: iastore
     249: aload         14
     251: invokespecial #150                // Method VectorN."<init>":([I)V
     254: aastore
     255: aload         13
     257: iconst_3
     258: new           #41                 // class VectorN
     261: dup
     262: iconst_4
     263: newarray       int
     265: astore        14
     267: aload         14
     269: iconst_0
     270: aload         11
     272: iconst_5
     273: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     278: checkcast     #53                 // class java/lang/Number
     281: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     284: iastore
     285: aload         14
     287: iconst_1
     288: iconst_0
     289: iastore
     290: aload         14
     292: iconst_2
     293: aload         11
     295: bipush        6
     297: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     302: checkcast     #53                 // class java/lang/Number
     305: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     308: iastore
     309: aload         14
     311: iconst_3
     312: iconst_0
     313: iastore
     314: aload         14
     316: invokespecial #150                // Method VectorN."<init>":([I)V
     319: aastore
     320: aload         13
     322: invokestatic  #241                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     325: nop
     326: nop
     327: nop
     328: aload         34
     330: swap
     331: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     336: pop
     337: goto          40
     340: aload         5
     342: checkcast     #47                 // class java/util/List
     345: nop
     346: checkcast     #68                 // class java/lang/Iterable
     349: iconst_3
     350: invokestatic  #330                // Method kotlin/collections/CollectionsKt.take:(Ljava/lang/Iterable;I)Ljava/util/List;
     353: astore_1
     354: bipush        32
     356: istore_2
     357: new           #59                 // class kotlin/jvm/internal/Ref$ObjectRef
     360: dup
     361: invokespecial #242                // Method kotlin/jvm/internal/Ref$ObjectRef."<init>":()V
     364: astore_3
     365: aload_3
     366: iconst_0
     367: istore        4
     369: bipush        33
     371: anewarray     #8                  // class java/lang/Integer
     374: astore        5
     376: astore        34
     378: iload         4
     380: bipush        33
     382: if_icmpge     404
     385: iload         4
     387: istore        6
     389: aload         5
     391: iload         6
     393: iconst_0
     394: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     397: aastore
     398: iinc          4, 1
     401: goto          378
     404: aload         34
     406: aload         5
     408: putfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     411: aload_1
     412: checkcast     #68                 // class java/lang/Iterable
     415: astore        4
     417: iconst_0
     418: istore        5
     420: aload         4
     422: astore        6
     424: new           #70                 // class java/util/ArrayList
     427: dup
     428: aload         4
     430: bipush        10
     432: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     435: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     438: checkcast     #82                 // class java/util/Collection
     441: astore        7
     443: iconst_0
     444: istore        8
     446: iconst_0
     447: istore        9
     449: aload         6
     451: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     456: astore        10
     458: aload         10
     460: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     465: ifeq          989
     468: aload         10
     470: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     475: astore        11
     477: aload         7
     479: iload         9
     481: iinc          9, 1
     484: istore        12
     486: iload         12
     488: ifge          494
     491: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     494: iload         12
     496: aload         11
     498: checkcast     #47                 // class java/util/List
     501: astore        13
     503: istore        14
     505: astore        34
     507: iconst_0
     508: istore        15
     510: aload_3
     511: iconst_0
     512: istore        16
     514: bipush        33
     516: anewarray     #8                  // class java/lang/Integer
     519: astore        17
     521: astore        18
     523: iload         16
     525: bipush        33
     527: if_icmpge     549
     530: iload         16
     532: istore        19
     534: aload         17
     536: iload         19
     538: iconst_0
     539: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     542: aastore
     543: iinc          16, 1
     546: goto          523
     549: aload         18
     551: aload         17
     553: putfield      #63                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     556: new           #41                 // class VectorN
     559: dup
     560: iconst_4
     561: newarray       int
     563: astore        17
     565: aload         17
     567: iconst_0
     568: iconst_0
     569: iastore
     570: aload         17
     572: iconst_1
     573: iconst_0
     574: iastore
     575: aload         17
     577: iconst_2
     578: iconst_0
     579: iastore
     580: aload         17
     582: iconst_3
     583: iconst_0
     584: iastore
     585: aload         17
     587: invokespecial #150                // Method VectorN."<init>":([I)V
     590: astore        16
     592: new           #41                 // class VectorN
     595: dup
     596: iconst_4
     597: newarray       int
     599: astore        19
     601: aload         19
     603: iconst_0
     604: iconst_1
     605: iastore
     606: aload         19
     608: iconst_1
     609: iconst_0
     610: iastore
     611: aload         19
     613: iconst_2
     614: iconst_0
     615: iastore
     616: aload         19
     618: iconst_3
     619: iconst_0
     620: iastore
     621: aload         19
     623: invokespecial #150                // Method VectorN."<init>":([I)V
     626: astore        17
     628: new           #244                // class kotlin/ranges/IntRange
     631: dup
     632: iconst_0
     633: iconst_3
     634: invokespecial #247                // Method kotlin/ranges/IntRange."<init>":(II)V
     637: checkcast     #68                 // class java/lang/Iterable
     640: astore        20
     642: iconst_0
     643: istore        21
     645: aload         20
     647: astore        22
     649: new           #70                 // class java/util/ArrayList
     652: dup
     653: aload         20
     655: bipush        10
     657: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     660: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     663: checkcast     #82                 // class java/util/Collection
     666: astore        23
     668: iconst_0
     669: istore        24
     671: aload         22
     673: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     678: astore        25
     680: aload         25
     682: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     687: ifeq          853
     690: aload         25
     692: checkcast     #249                // class kotlin/collections/IntIterator
     695: invokevirtual #252                // Method kotlin/collections/IntIterator.nextInt:()I
     698: istore        26
     700: aload         23
     702: iload         26
     704: istore        27
     706: astore        28
     708: iconst_0
     709: istore        29
     711: aload         13
     713: checkcast     #68                 // class java/lang/Iterable
     716: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     721: astore        30
     723: aload         30
     725: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     730: ifne          741
     733: new           #161                // class java/util/NoSuchElementException
     736: dup
     737: invokespecial #162                // Method java/util/NoSuchElementException."<init>":()V
     740: athrow
     741: aload         30
     743: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     748: checkcast     #41                 // class VectorN
     751: astore        31
     753: iconst_0
     754: istore        32
     756: aload         31
     758: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     761: iload         27
     763: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     768: checkcast     #53                 // class java/lang/Number
     771: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     774: istore        31
     776: aload         30
     778: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     783: ifeq          835
     786: aload         30
     788: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     793: checkcast     #41                 // class VectorN
     796: astore        32
     798: iconst_0
     799: istore        33
     801: aload         32
     803: invokevirtual #45                 // Method VectorN.getComponents:()Ljava/util/List;
     806: iload         27
     808: invokeinterface #51,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     813: checkcast     #53                 // class java/lang/Number
     816: invokevirtual #57                 // Method java/lang/Number.intValue:()I
     819: istore        32
     821: iload         31
     823: iload         32
     825: if_icmpge     776
     828: iload         32
     830: istore        31
     832: goto          776
     835: iload         31
     837: nop
     838: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     841: aload         28
     843: swap
     844: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     849: pop
     850: goto          680
     853: aload         23
     855: checkcast     #47                 // class java/util/List
     858: nop
     859: checkcast     #82                 // class java/util/Collection
     862: invokestatic  #256                // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
     865: astore        35
     867: new           #41                 // class VectorN
     870: dup
     871: aload         35
     873: invokespecial #259                // Method VectorN."<init>":(Ljava/util/List;)V
     876: astore        19
     878: new           #261                // class java/lang/StringBuilder
     881: dup
     882: invokespecial #262                // Method java/lang/StringBuilder."<init>":()V
     885: ldc_w         #264                // String maxBudget
     888: invokevirtual #268                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     891: aload         19
     893: invokevirtual #271                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     896: invokevirtual #275                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     899: getstatic     #281                // Field java/lang/System.out:Ljava/io/PrintStream;
     902: swap
     903: invokevirtual #287                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     906: iload_2
     907: aload_3
     908: aload         16
     910: aload         17
     912: iconst_1
     913: aload         13
     915: aload         19
     917: aconst_null
     918: sipush        128
     921: aconst_null
     922: invokestatic  #317                // Method main$part2$decision$19$default:(ILkotlin/jvm/internal/Ref$ObjectRef;LVectorN;LVectorN;ILjava/util/List;LVectorN;Ljava/util/Set;ILjava/lang/Object;)I
     925: istore        20
     927: new           #261                // class java/lang/StringBuilder
     930: dup
     931: invokespecial #262                // Method java/lang/StringBuilder."<init>":()V
     934: ldc_w         #289                // String Blueprint
     937: invokevirtual #268                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     940: iload         14
     942: invokevirtual #292                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     945: ldc_w         #294                // String  produces max
     948: invokevirtual #268                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     951: iload         20
     953: invokevirtual #292                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     956: ldc_w         #296                // String  geodes
     959: invokevirtual #268                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     962: invokevirtual #275                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     965: getstatic     #281                // Field java/lang/System.out:Ljava/io/PrintStream;
     968: swap
     969: invokevirtual #287                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     972: iload         20
     974: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     977: aload         34
     979: swap
     980: invokeinterface #122,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     985: pop
     986: goto          458
     989: aload         7
     991: checkcast     #47                 // class java/util/List
     994: nop
     995: checkcast     #68                 // class java/lang/Iterable
     998: astore        4
    1000: nop
    1001: iconst_0
    1002: istore        5
    1004: aload         4
    1006: invokeinterface #86,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1011: astore        6
    1013: aload         6
    1015: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1020: ifne          1034
    1023: new           #332                // class java/lang/UnsupportedOperationException
    1026: dup
    1027: ldc_w         #334                // String Empty collection can\'t be reduced.
    1030: invokespecial #337                // Method java/lang/UnsupportedOperationException."<init>":(Ljava/lang/String;)V
    1033: athrow
    1034: aload         6
    1036: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1041: astore        7
    1043: aload         6
    1045: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1050: ifeq          1094
    1053: aload         7
    1055: aload         6
    1057: invokeinterface #96,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1062: checkcast     #53                 // class java/lang/Number
    1065: invokevirtual #57                 // Method java/lang/Number.intValue:()I
    1068: istore        8
    1070: checkcast     #53                 // class java/lang/Number
    1073: invokevirtual #57                 // Method java/lang/Number.intValue:()I
    1076: istore        9
    1078: iconst_0
    1079: istore        10
    1081: iload         9
    1083: iload         8
    1085: imul
    1086: invokestatic  #12                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1089: astore        7
    1091: goto          1043
    1094: aload         7
    1096: checkcast     #53                 // class java/lang/Number
    1099: invokevirtual #57                 // Method java/lang/Number.intValue:()I
    1102: ireturn

  public static final int access$main$part1(java.util.List);
    Code:
       0: aload_0
       1: invokestatic  #353                // Method main$part1:(Ljava/util/List;)I
       4: ireturn

  public static final int access$main$part2(java.util.List);
    Code:
       0: aload_0
       1: invokestatic  #356                // Method main$part2:(Ljava/util/List;)I
       4: ireturn
}