package day5

import java.io.File

fun main() {
    val parts = File("src/day5/input.txt").readText(Charsets.UTF_8).split("\n\n")
    val lines = parts[0].split("\n")
    val length = (lines.last().length + 1) / 4
    val columns = List(length) { mutableListOf<Char>() }
    lines.dropLast(1).forEach { line ->
        for (i in 0 until length) {
            val char = line[(i * 4) + 1]
            if (char != ' ') {
                columns[i].add(char)
            }
        }
    }

    val pattern = "move (\\d*) from (\\d*) to (\\d*)".toRegex()

    val partOne = columns.map { column -> column.map { it }.toMutableList() }
    parts[1].split("\n").dropLast(1).forEach { line ->
        val numbers = pattern.find(line)!!.groupValues.drop(1).map(String::toInt)
        for (i in 0 until numbers[0]) {
            partOne[numbers[2]-1].add(0, partOne[numbers[1]-1].removeAt(0))
        }
    }
    println(partOne.map { column -> column.first() }.joinToString(""))

    val partTwo = columns.map { column -> column.map { it }.toMutableList() }
    parts[1].split("\n").dropLast(1).forEach { line ->
        val numbers = pattern.find(line)!!.groupValues.drop(1).map(String::toInt)
        for (i in 0 until numbers[0]) {
            partTwo[numbers[2]-1].add(0, partTwo[numbers[1]-1].removeAt(numbers[0] - i - 1))
        }
    }
    println(partTwo.map { column -> column.first() }.joinToString(""))
}

Compiled from "Day5.kt"
public final class day5.Day5Kt {
  public static final void main();
    Code:
       0: new           #8                  // class java/io/File
       3: dup
       4: ldc           #10                 // String src/day5/input.txt
       6: invokespecial #14                 // Method java/io/File."<init>":(Ljava/lang/String;)V
       9: getstatic     #20                 // Field kotlin/text/Charsets.UTF_8:Ljava/nio/charset/Charset;
      12: invokestatic  #26                 // Method kotlin/io/FilesKt.readText:(Ljava/io/File;Ljava/nio/charset/Charset;)Ljava/lang/String;
      15: checkcast     #28                 // class java/lang/CharSequence
      18: iconst_1
      19: anewarray     #30                 // class java/lang/String
      22: astore_1
      23: aload_1
      24: iconst_0
      25: ldc           #32                 // String \n\n
      27: aastore
      28: aload_1
      29: iconst_0
      30: iconst_0
      31: bipush        6
      33: aconst_null
      34: invokestatic  #38                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      37: astore_0
      38: aload_0
      39: iconst_0
      40: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      45: checkcast     #28                 // class java/lang/CharSequence
      48: iconst_1
      49: anewarray     #30                 // class java/lang/String
      52: astore_2
      53: aload_2
      54: iconst_0
      55: ldc           #46                 // String \n
      57: aastore
      58: aload_2
      59: iconst_0
      60: iconst_0
      61: bipush        6
      63: aconst_null
      64: invokestatic  #38                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      67: astore_1
      68: aload_1
      69: invokestatic  #52                 // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
      72: checkcast     #30                 // class java/lang/String
      75: invokevirtual #56                 // Method java/lang/String.length:()I
      78: iconst_1
      79: iadd
      80: iconst_4
      81: idiv
      82: istore_2
      83: new           #58                 // class java/util/ArrayList
      86: dup
      87: iload_2
      88: invokespecial #61                 // Method java/util/ArrayList."<init>":(I)V
      91: astore        4
      93: iconst_0
      94: istore        5
      96: iload         5
      98: iload_2
      99: if_icmpge     141
     102: iload         5
     104: istore        6
     106: aload         4
     108: iload         6
     110: istore        7
     112: astore        26
     114: iconst_0
     115: istore        8
     117: new           #58                 // class java/util/ArrayList
     120: dup
     121: invokespecial #63                 // Method java/util/ArrayList."<init>":()V
     124: checkcast     #40                 // class java/util/List
     127: nop
     128: aload         26
     130: swap
     131: invokevirtual #67                 // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     134: pop
     135: iinc          5, 1
     138: goto          96
     141: aload         4
     143: checkcast     #40                 // class java/util/List
     146: astore_3
     147: aload_1
     148: iconst_1
     149: invokestatic  #71                 // Method kotlin/collections/CollectionsKt.dropLast:(Ljava/util/List;I)Ljava/util/List;
     152: checkcast     #73                 // class java/lang/Iterable
     155: astore        4
     157: iconst_0
     158: istore        5
     160: aload         4
     162: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     167: astore        6
     169: aload         6
     171: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     176: ifeq          260
     179: aload         6
     181: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     186: astore        7
     188: aload         7
     190: checkcast     #30                 // class java/lang/String
     193: astore        8
     195: iconst_0
     196: istore        9
     198: iconst_0
     199: istore        10
     201: iload         10
     203: iload_2
     204: if_icmpge     255
     207: aload         8
     209: iload         10
     211: iconst_4
     212: imul
     213: iconst_1
     214: iadd
     215: invokevirtual #91                 // Method java/lang/String.charAt:(I)C
     218: istore        11
     220: iload         11
     222: bipush        32
     224: if_icmpeq     249
     227: aload_3
     228: iload         10
     230: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     235: checkcast     #40                 // class java/util/List
     238: iload         11
     240: invokestatic  #97                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     243: invokeinterface #98,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     248: pop
     249: iinc          10, 1
     252: goto          201
     255: nop
     256: nop
     257: goto          169
     260: nop
     261: new           #100                // class kotlin/text/Regex
     264: dup
     265: ldc           #102                // String move (\\d*) from (\\d*) to (\\d*)
     267: invokespecial #103                // Method kotlin/text/Regex."<init>":(Ljava/lang/String;)V
     270: astore        4
     272: aload_3
     273: checkcast     #73                 // class java/lang/Iterable
     276: astore        6
     278: iconst_0
     279: istore        7
     281: aload         6
     283: astore        8
     285: new           #58                 // class java/util/ArrayList
     288: dup
     289: aload         6
     291: bipush        10
     293: invokestatic  #107                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     296: invokespecial #61                 // Method java/util/ArrayList."<init>":(I)V
     299: checkcast     #109                // class java/util/Collection
     302: astore        9
     304: iconst_0
     305: istore        10
     307: aload         8
     309: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     314: astore        11
     316: aload         11
     318: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     323: ifeq          471
     326: aload         11
     328: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     333: astore        12
     335: aload         9
     337: aload         12
     339: checkcast     #40                 // class java/util/List
     342: astore        13
     344: astore        26
     346: iconst_0
     347: istore        14
     349: aload         13
     351: checkcast     #73                 // class java/lang/Iterable
     354: astore        15
     356: iconst_0
     357: istore        16
     359: aload         15
     361: astore        17
     363: new           #58                 // class java/util/ArrayList
     366: dup
     367: aload         15
     369: bipush        10
     371: invokestatic  #107                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     374: invokespecial #61                 // Method java/util/ArrayList."<init>":(I)V
     377: checkcast     #109                // class java/util/Collection
     380: astore        18
     382: iconst_0
     383: istore        19
     385: aload         17
     387: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     392: astore        20
     394: aload         20
     396: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     401: ifeq          447
     404: aload         20
     406: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     411: astore        21
     413: aload         18
     415: aload         21
     417: checkcast     #93                 // class java/lang/Character
     420: invokevirtual #113                // Method java/lang/Character.charValue:()C
     423: istore        22
     425: astore        23
     427: iconst_0
     428: istore        24
     430: iload         22
     432: invokestatic  #97                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     435: aload         23
     437: swap
     438: invokeinterface #114,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     443: pop
     444: goto          394
     447: aload         18
     449: checkcast     #40                 // class java/util/List
     452: nop
     453: checkcast     #109                // class java/util/Collection
     456: invokestatic  #118                // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
     459: aload         26
     461: swap
     462: invokeinterface #114,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     467: pop
     468: goto          316
     471: aload         9
     473: checkcast     #40                 // class java/util/List
     476: nop
     477: astore        5
     479: aload_0
     480: iconst_1
     481: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     486: checkcast     #28                 // class java/lang/CharSequence
     489: iconst_1
     490: anewarray     #30                 // class java/lang/String
     493: astore        6
     495: aload         6
     497: iconst_0
     498: ldc           #46                 // String \n
     500: aastore
     501: aload         6
     503: iconst_0
     504: iconst_0
     505: bipush        6
     507: aconst_null
     508: invokestatic  #38                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     511: iconst_1
     512: invokestatic  #71                 // Method kotlin/collections/CollectionsKt.dropLast:(Ljava/util/List;I)Ljava/util/List;
     515: checkcast     #73                 // class java/lang/Iterable
     518: astore        6
     520: iconst_0
     521: istore        7
     523: aload         6
     525: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     530: astore        8
     532: aload         8
     534: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     539: ifeq          796
     542: aload         8
     544: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     549: astore        9
     551: aload         9
     553: checkcast     #30                 // class java/lang/String
     556: astore        10
     558: iconst_0
     559: istore        11
     561: aload         4
     563: aload         10
     565: checkcast     #28                 // class java/lang/CharSequence
     568: iconst_0
     569: iconst_2
     570: aconst_null
     571: invokestatic  #122                // Method kotlin/text/Regex.find$default:(Lkotlin/text/Regex;Ljava/lang/CharSequence;IILjava/lang/Object;)Lkotlin/text/MatchResult;
     574: dup
     575: invokestatic  #128                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     578: invokeinterface #134,  1          // InterfaceMethod kotlin/text/MatchResult.getGroupValues:()Ljava/util/List;
     583: checkcast     #73                 // class java/lang/Iterable
     586: iconst_1
     587: invokestatic  #138                // Method kotlin/collections/CollectionsKt.drop:(Ljava/lang/Iterable;I)Ljava/util/List;
     590: checkcast     #73                 // class java/lang/Iterable
     593: astore        12
     595: iconst_0
     596: istore        13
     598: aload         12
     600: astore        14
     602: new           #58                 // class java/util/ArrayList
     605: dup
     606: aload         12
     608: bipush        10
     610: invokestatic  #107                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     613: invokespecial #61                 // Method java/util/ArrayList."<init>":(I)V
     616: checkcast     #109                // class java/util/Collection
     619: astore        15
     621: iconst_0
     622: istore        16
     624: aload         14
     626: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     631: astore        17
     633: aload         17
     635: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     640: ifeq          687
     643: aload         17
     645: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     650: astore        18
     652: aload         15
     654: aload         18
     656: checkcast     #30                 // class java/lang/String
     659: astore        19
     661: astore        20
     663: iconst_0
     664: istore        21
     666: aload         19
     668: invokestatic  #144                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     671: nop
     672: invokestatic  #147                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     675: aload         20
     677: swap
     678: invokeinterface #114,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     683: pop
     684: goto          633
     687: aload         15
     689: checkcast     #40                 // class java/util/List
     692: nop
     693: astore        22
     695: iconst_0
     696: istore        12
     698: aload         22
     700: iconst_0
     701: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     706: checkcast     #149                // class java/lang/Number
     709: invokevirtual #152                // Method java/lang/Number.intValue:()I
     712: istore        13
     714: iload         12
     716: iload         13
     718: if_icmpge     791
     721: aload         5
     723: aload         22
     725: iconst_2
     726: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     731: checkcast     #149                // class java/lang/Number
     734: invokevirtual #152                // Method java/lang/Number.intValue:()I
     737: iconst_1
     738: isub
     739: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     744: checkcast     #40                 // class java/util/List
     747: iconst_0
     748: aload         5
     750: aload         22
     752: iconst_1
     753: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     758: checkcast     #149                // class java/lang/Number
     761: invokevirtual #152                // Method java/lang/Number.intValue:()I
     764: iconst_1
     765: isub
     766: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     771: checkcast     #40                 // class java/util/List
     774: iconst_0
     775: invokeinterface #155,  2          // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object;
     780: invokeinterface #158,  3          // InterfaceMethod java/util/List.add:(ILjava/lang/Object;)V
     785: iinc          12, 1
     788: goto          714
     791: nop
     792: nop
     793: goto          532
     796: nop
     797: aload         5
     799: checkcast     #73                 // class java/lang/Iterable
     802: astore        6
     804: iconst_0
     805: istore        7
     807: aload         6
     809: astore        8
     811: new           #58                 // class java/util/ArrayList
     814: dup
     815: aload         6
     817: bipush        10
     819: invokestatic  #107                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     822: invokespecial #61                 // Method java/util/ArrayList."<init>":(I)V
     825: checkcast     #109                // class java/util/Collection
     828: astore        9
     830: iconst_0
     831: istore        10
     833: aload         8
     835: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     840: astore        11
     842: aload         11
     844: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     849: ifeq          901
     852: aload         11
     854: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     859: astore        12
     861: aload         9
     863: aload         12
     865: checkcast     #40                 // class java/util/List
     868: astore        13
     870: astore        26
     872: iconst_0
     873: istore        14
     875: aload         13
     877: invokestatic  #161                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     880: checkcast     #93                 // class java/lang/Character
     883: invokevirtual #113                // Method java/lang/Character.charValue:()C
     886: invokestatic  #97                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     889: aload         26
     891: swap
     892: invokeinterface #114,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     897: pop
     898: goto          842
     901: aload         9
     903: checkcast     #40                 // class java/util/List
     906: nop
     907: checkcast     #73                 // class java/lang/Iterable
     910: ldc           #163                // String
     912: checkcast     #28                 // class java/lang/CharSequence
     915: aconst_null
     916: aconst_null
     917: iconst_0
     918: aconst_null
     919: aconst_null
     920: bipush        62
     922: aconst_null
     923: invokestatic  #167                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
     926: getstatic     #173                // Field java/lang/System.out:Ljava/io/PrintStream;
     929: swap
     930: invokevirtual #178                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     933: aload_3
     934: checkcast     #73                 // class java/lang/Iterable
     937: astore        7
     939: iconst_0
     940: istore        8
     942: aload         7
     944: astore        9
     946: new           #58                 // class java/util/ArrayList
     949: dup
     950: aload         7
     952: bipush        10
     954: invokestatic  #107                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     957: invokespecial #61                 // Method java/util/ArrayList."<init>":(I)V
     960: checkcast     #109                // class java/util/Collection
     963: astore        10
     965: iconst_0
     966: istore        11
     968: aload         9
     970: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     975: astore        12
     977: aload         12
     979: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     984: ifeq          1132
     987: aload         12
     989: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     994: astore        13
     996: aload         10
     998: aload         13
    1000: checkcast     #40                 // class java/util/List
    1003: astore        14
    1005: astore        26
    1007: iconst_0
    1008: istore        15
    1010: aload         14
    1012: checkcast     #73                 // class java/lang/Iterable
    1015: astore        16
    1017: iconst_0
    1018: istore        17
    1020: aload         16
    1022: astore        18
    1024: new           #58                 // class java/util/ArrayList
    1027: dup
    1028: aload         16
    1030: bipush        10
    1032: invokestatic  #107                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
    1035: invokespecial #61                 // Method java/util/ArrayList."<init>":(I)V
    1038: checkcast     #109                // class java/util/Collection
    1041: astore        19
    1043: iconst_0
    1044: istore        20
    1046: aload         18
    1048: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1053: astore        21
    1055: aload         21
    1057: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1062: ifeq          1108
    1065: aload         21
    1067: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1072: astore        22
    1074: aload         19
    1076: aload         22
    1078: checkcast     #93                 // class java/lang/Character
    1081: invokevirtual #113                // Method java/lang/Character.charValue:()C
    1084: istore        23
    1086: astore        24
    1088: iconst_0
    1089: istore        25
    1091: iload         23
    1093: invokestatic  #97                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1096: aload         24
    1098: swap
    1099: invokeinterface #114,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1104: pop
    1105: goto          1055
    1108: aload         19
    1110: checkcast     #40                 // class java/util/List
    1113: nop
    1114: checkcast     #109                // class java/util/Collection
    1117: invokestatic  #118                // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
    1120: aload         26
    1122: swap
    1123: invokeinterface #114,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1128: pop
    1129: goto          977
    1132: aload         10
    1134: checkcast     #40                 // class java/util/List
    1137: nop
    1138: astore        6
    1140: aload_0
    1141: iconst_1
    1142: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1147: checkcast     #28                 // class java/lang/CharSequence
    1150: iconst_1
    1151: anewarray     #30                 // class java/lang/String
    1154: astore        7
    1156: aload         7
    1158: iconst_0
    1159: ldc           #46                 // String \n
    1161: aastore
    1162: aload         7
    1164: iconst_0
    1165: iconst_0
    1166: bipush        6
    1168: aconst_null
    1169: invokestatic  #38                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
    1172: iconst_1
    1173: invokestatic  #71                 // Method kotlin/collections/CollectionsKt.dropLast:(Ljava/util/List;I)Ljava/util/List;
    1176: checkcast     #73                 // class java/lang/Iterable
    1179: astore        7
    1181: iconst_0
    1182: istore        8
    1184: aload         7
    1186: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1191: astore        9
    1193: aload         9
    1195: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1200: ifeq          1475
    1203: aload         9
    1205: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1210: astore        10
    1212: aload         10
    1214: checkcast     #30                 // class java/lang/String
    1217: astore        11
    1219: iconst_0
    1220: istore        12
    1222: aload         4
    1224: aload         11
    1226: checkcast     #28                 // class java/lang/CharSequence
    1229: iconst_0
    1230: iconst_2
    1231: aconst_null
    1232: invokestatic  #122                // Method kotlin/text/Regex.find$default:(Lkotlin/text/Regex;Ljava/lang/CharSequence;IILjava/lang/Object;)Lkotlin/text/MatchResult;
    1235: dup
    1236: invokestatic  #128                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
    1239: invokeinterface #134,  1          // InterfaceMethod kotlin/text/MatchResult.getGroupValues:()Ljava/util/List;
    1244: checkcast     #73                 // class java/lang/Iterable
    1247: iconst_1
    1248: invokestatic  #138                // Method kotlin/collections/CollectionsKt.drop:(Ljava/lang/Iterable;I)Ljava/util/List;
    1251: checkcast     #73                 // class java/lang/Iterable
    1254: astore        13
    1256: iconst_0
    1257: istore        14
    1259: aload         13
    1261: astore        15
    1263: new           #58                 // class java/util/ArrayList
    1266: dup
    1267: aload         13
    1269: bipush        10
    1271: invokestatic  #107                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
    1274: invokespecial #61                 // Method java/util/ArrayList."<init>":(I)V
    1277: checkcast     #109                // class java/util/Collection
    1280: astore        16
    1282: iconst_0
    1283: istore        17
    1285: aload         15
    1287: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1292: astore        18
    1294: aload         18
    1296: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1301: ifeq          1348
    1304: aload         18
    1306: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1311: astore        19
    1313: aload         16
    1315: aload         19
    1317: checkcast     #30                 // class java/lang/String
    1320: astore        20
    1322: astore        21
    1324: iconst_0
    1325: istore        22
    1327: aload         20
    1329: invokestatic  #144                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
    1332: nop
    1333: invokestatic  #147                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1336: aload         21
    1338: swap
    1339: invokeinterface #114,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1344: pop
    1345: goto          1294
    1348: aload         16
    1350: checkcast     #40                 // class java/util/List
    1353: nop
    1354: astore        23
    1356: iconst_0
    1357: istore        13
    1359: aload         23
    1361: iconst_0
    1362: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1367: checkcast     #149                // class java/lang/Number
    1370: invokevirtual #152                // Method java/lang/Number.intValue:()I
    1373: istore        14
    1375: iload         13
    1377: iload         14
    1379: if_icmpge     1470
    1382: aload         6
    1384: aload         23
    1386: iconst_2
    1387: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1392: checkcast     #149                // class java/lang/Number
    1395: invokevirtual #152                // Method java/lang/Number.intValue:()I
    1398: iconst_1
    1399: isub
    1400: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1405: checkcast     #40                 // class java/util/List
    1408: iconst_0
    1409: aload         6
    1411: aload         23
    1413: iconst_1
    1414: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1419: checkcast     #149                // class java/lang/Number
    1422: invokevirtual #152                // Method java/lang/Number.intValue:()I
    1425: iconst_1
    1426: isub
    1427: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1432: checkcast     #40                 // class java/util/List
    1435: aload         23
    1437: iconst_0
    1438: invokeinterface #44,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1443: checkcast     #149                // class java/lang/Number
    1446: invokevirtual #152                // Method java/lang/Number.intValue:()I
    1449: iload         13
    1451: isub
    1452: iconst_1
    1453: isub
    1454: invokeinterface #155,  2          // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object;
    1459: invokeinterface #158,  3          // InterfaceMethod java/util/List.add:(ILjava/lang/Object;)V
    1464: iinc          13, 1
    1467: goto          1375
    1470: nop
    1471: nop
    1472: goto          1193
    1475: nop
    1476: aload         6
    1478: checkcast     #73                 // class java/lang/Iterable
    1481: astore        7
    1483: iconst_0
    1484: istore        8
    1486: aload         7
    1488: astore        9
    1490: new           #58                 // class java/util/ArrayList
    1493: dup
    1494: aload         7
    1496: bipush        10
    1498: invokestatic  #107                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
    1501: invokespecial #61                 // Method java/util/ArrayList."<init>":(I)V
    1504: checkcast     #109                // class java/util/Collection
    1507: astore        10
    1509: iconst_0
    1510: istore        11
    1512: aload         9
    1514: invokeinterface #77,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1519: astore        12
    1521: aload         12
    1523: invokeinterface #83,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1528: ifeq          1580
    1531: aload         12
    1533: invokeinterface #87,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1538: astore        13
    1540: aload         10
    1542: aload         13
    1544: checkcast     #40                 // class java/util/List
    1547: astore        14
    1549: astore        26
    1551: iconst_0
    1552: istore        15
    1554: aload         14
    1556: invokestatic  #161                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
    1559: checkcast     #93                 // class java/lang/Character
    1562: invokevirtual #113                // Method java/lang/Character.charValue:()C
    1565: invokestatic  #97                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1568: aload         26
    1570: swap
    1571: invokeinterface #114,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1576: pop
    1577: goto          1521
    1580: aload         10
    1582: checkcast     #40                 // class java/util/List
    1585: nop
    1586: checkcast     #73                 // class java/lang/Iterable
    1589: ldc           #163                // String
    1591: checkcast     #28                 // class java/lang/CharSequence
    1594: aconst_null
    1595: aconst_null
    1596: iconst_0
    1597: aconst_null
    1598: aconst_null
    1599: bipush        62
    1601: aconst_null
    1602: invokestatic  #167                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
    1605: getstatic     #173                // Field java/lang/System.out:Ljava/io/PrintStream;
    1608: swap
    1609: invokevirtual #178                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
    1612: return

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


package day23

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

fun main() {

    var elves = File("src/day23/input.txt").readLines().mapIndexed { row, line ->
        line.toList().mapIndexed { column, char ->
            if (char == '#') Pair(column, row) else null
        }.filterNotNull()
    }.flatten()

    val directions = listOf(
        listOf(Pair(0, -1), Pair(-1, -1), Pair(1, -1)),
        listOf(Pair(0, 1), Pair(-1, 1), Pair(1, 1)),
        listOf(Pair(-1, 0), Pair(-1, -1), Pair(-1, 1)),
        listOf(Pair(1, 0), Pair(1, -1), Pair(1, 1))
    )

    val deltas = directions.flatten().toSet()

    var round = 1
    while(true) {
        val proposedMoves = elves.map { elf ->
            val neighbouringElves = deltas.map { delta -> elf + delta }.filter { location -> location in elves }
            if (neighbouringElves.isEmpty()) {
                elf
            } else {
                val direction = directions.indices.map { i -> directions[(i + round - 1).mod(directions.size)] }
                    .firstOrNull { direction -> direction.none { d -> (elf + d) in neighbouringElves } }
                elf + (direction?.first() ?: Pair(0, 0))
            }
        }
        val frequencies = proposedMoves.groupingBy { it }.eachCount()
        val newElves = elves.indices.map { i -> if (frequencies[proposedMoves[i]] == 1) proposedMoves[i] else elves[i] }
        if (elves == newElves) {
            println(round)
            break
        }
        elves = newElves
        if (round == 10) {
            val (topLeft, bottomRight) = rectangle(elves)
            val area = (1 + bottomRight.first - topLeft.first) * (1 + bottomRight.second - topLeft.second)
            val empty = area - elves.size
            println(empty)
        }
        round++
    }

}

fun printElves(elves: List<Pair<Int, Int>>) {
    val (topLeft, bottomRight) = rectangle(elves)
    for (row in topLeft.second .. bottomRight.second) {
        for (column in topLeft.first .. bottomRight.first) {
            print(if (Pair(column, row) in elves) '#' else '.')
        }
        println()
    }
    println()
}

private fun rectangle(elves: List<Pair<Int, Int>>): Pair<Pair<Int, Int>, Pair<Int, Int>> {
    val topLeft = elves.reduce { a, b -> Pair(min(a.first, b.first), min(a.second, b.second)) }
    val bottomRight = elves.reduce { a, b -> Pair(max(a.first, b.first), max(a.second, b.second)) }
    return Pair(topLeft, bottomRight)
}

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

Compiled from "_Collections.kt"
public final class day23.Day23Kt$main$$inlined$groupingBy$1 implements kotlin.collections.Grouping<kotlin.Pair<? extends java.lang.Integer, ? extends java.lang.Integer>, kotlin.Pair<? extends java.lang.Integer, ? extends java.lang.Integer>> {
  final java.lang.Iterable $this_groupingBy;

  public day23.Day23Kt$main$$inlined$groupingBy$1(java.lang.Iterable);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #18                 // Field $this_groupingBy:Ljava/lang/Iterable;
       5: aload_0
       6: invokespecial #21                 // Method java/lang/Object."<init>":()V
       9: return

  public java.util.Iterator<kotlin.Pair<? extends java.lang.Integer, ? extends java.lang.Integer>> sourceIterator();
    Code:
       0: aload_0
       1: getfield      #18                 // Field $this_groupingBy:Ljava/lang/Iterable;
       4: invokeinterface #32,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
       9: areturn

  public kotlin.Pair<? extends java.lang.Integer, ? extends java.lang.Integer> keyOf(kotlin.Pair<? extends java.lang.Integer, ? extends java.lang.Integer>);
    Code:
       0: aload_1
       1: checkcast     #37                 // class kotlin/Pair
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: areturn
}

Compiled from "Day23.kt"
public final class day23.Day23Kt {
  public static final void main();
    Code:
       0: aconst_null
       1: astore_0
       2: new           #8                  // class java/io/File
       5: dup
       6: ldc           #10                 // String src/day23/input.txt
       8: invokespecial #14                 // Method java/io/File."<init>":(Ljava/lang/String;)V
      11: aconst_null
      12: iconst_1
      13: aconst_null
      14: invokestatic  #20                 // Method kotlin/io/FilesKt.readLines$default:(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/util/List;
      17: checkcast     #22                 // class java/lang/Iterable
      20: astore_1
      21: iconst_0
      22: istore_2
      23: aload_1
      24: astore_3
      25: new           #24                 // class java/util/ArrayList
      28: dup
      29: aload_1
      30: bipush        10
      32: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      35: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
      38: checkcast     #35                 // class java/util/Collection
      41: astore        4
      43: iconst_0
      44: istore        5
      46: iconst_0
      47: istore        6
      49: aload_3
      50: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      55: astore        7
      57: aload         7
      59: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      64: ifeq          282
      67: aload         7
      69: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      74: astore        8
      76: aload         4
      78: iload         6
      80: iinc          6, 1
      83: istore        9
      85: iload         9
      87: ifge          93
      90: invokestatic  #52                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
      93: iload         9
      95: aload         8
      97: checkcast     #54                 // class java/lang/String
     100: astore        10
     102: istore        11
     104: astore        30
     106: iconst_0
     107: istore        12
     109: aload         10
     111: checkcast     #56                 // class java/lang/CharSequence
     114: invokestatic  #62                 // Method kotlin/text/StringsKt.toList:(Ljava/lang/CharSequence;)Ljava/util/List;
     117: checkcast     #22                 // class java/lang/Iterable
     120: astore        13
     122: iconst_0
     123: istore        14
     125: aload         13
     127: astore        15
     129: new           #24                 // class java/util/ArrayList
     132: dup
     133: aload         13
     135: bipush        10
     137: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     140: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
     143: checkcast     #35                 // class java/util/Collection
     146: astore        16
     148: iconst_0
     149: istore        17
     151: iconst_0
     152: istore        18
     154: aload         15
     156: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     161: astore        19
     163: aload         19
     165: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     170: ifeq          258
     173: aload         19
     175: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     180: astore        20
     182: aload         16
     184: iload         18
     186: iinc          18, 1
     189: istore        21
     191: iload         21
     193: ifge          199
     196: invokestatic  #52                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     199: iload         21
     201: aload         20
     203: checkcast     #64                 // class java/lang/Character
     206: invokevirtual #68                 // Method java/lang/Character.charValue:()C
     209: istore        22
     211: istore        23
     213: astore        24
     215: iconst_0
     216: istore        25
     218: iload         22
     220: bipush        35
     222: if_icmpne     245
     225: new           #70                 // class kotlin/Pair
     228: dup
     229: iload         23
     231: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     234: iload         11
     236: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     239: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     242: goto          246
     245: aconst_null
     246: aload         24
     248: swap
     249: invokeinterface #83,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     254: pop
     255: goto          163
     258: aload         16
     260: checkcast     #85                 // class java/util/List
     263: nop
     264: checkcast     #22                 // class java/lang/Iterable
     267: invokestatic  #89                 // Method kotlin/collections/CollectionsKt.filterNotNull:(Ljava/lang/Iterable;)Ljava/util/List;
     270: aload         30
     272: swap
     273: invokeinterface #83,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     278: pop
     279: goto          57
     282: aload         4
     284: checkcast     #85                 // class java/util/List
     287: nop
     288: checkcast     #22                 // class java/lang/Iterable
     291: invokestatic  #92                 // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     294: astore_0
     295: iconst_4
     296: anewarray     #85                 // class java/util/List
     299: astore_2
     300: aload_2
     301: iconst_0
     302: iconst_3
     303: anewarray     #70                 // class kotlin/Pair
     306: astore_3
     307: aload_3
     308: iconst_0
     309: new           #70                 // class kotlin/Pair
     312: dup
     313: iconst_0
     314: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     317: iconst_m1
     318: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     321: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     324: aastore
     325: aload_3
     326: iconst_1
     327: new           #70                 // class kotlin/Pair
     330: dup
     331: iconst_m1
     332: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     335: iconst_m1
     336: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     339: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     342: aastore
     343: aload_3
     344: iconst_2
     345: new           #70                 // class kotlin/Pair
     348: dup
     349: iconst_1
     350: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     353: iconst_m1
     354: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     357: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     360: aastore
     361: aload_3
     362: invokestatic  #96                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     365: aastore
     366: aload_2
     367: iconst_1
     368: iconst_3
     369: anewarray     #70                 // class kotlin/Pair
     372: astore_3
     373: aload_3
     374: iconst_0
     375: new           #70                 // class kotlin/Pair
     378: dup
     379: iconst_0
     380: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     383: iconst_1
     384: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     387: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     390: aastore
     391: aload_3
     392: iconst_1
     393: new           #70                 // class kotlin/Pair
     396: dup
     397: iconst_m1
     398: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     401: iconst_1
     402: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     405: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     408: aastore
     409: aload_3
     410: iconst_2
     411: new           #70                 // class kotlin/Pair
     414: dup
     415: iconst_1
     416: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     419: iconst_1
     420: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     423: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     426: aastore
     427: aload_3
     428: invokestatic  #96                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     431: aastore
     432: aload_2
     433: iconst_2
     434: iconst_3
     435: anewarray     #70                 // class kotlin/Pair
     438: astore_3
     439: aload_3
     440: iconst_0
     441: new           #70                 // class kotlin/Pair
     444: dup
     445: iconst_m1
     446: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     449: iconst_0
     450: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     453: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     456: aastore
     457: aload_3
     458: iconst_1
     459: new           #70                 // class kotlin/Pair
     462: dup
     463: iconst_m1
     464: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     467: iconst_m1
     468: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     471: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     474: aastore
     475: aload_3
     476: iconst_2
     477: new           #70                 // class kotlin/Pair
     480: dup
     481: iconst_m1
     482: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     485: iconst_1
     486: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     489: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     492: aastore
     493: aload_3
     494: invokestatic  #96                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     497: aastore
     498: aload_2
     499: iconst_3
     500: iconst_3
     501: anewarray     #70                 // class kotlin/Pair
     504: astore_3
     505: aload_3
     506: iconst_0
     507: new           #70                 // class kotlin/Pair
     510: dup
     511: iconst_1
     512: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     515: iconst_0
     516: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     519: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     522: aastore
     523: aload_3
     524: iconst_1
     525: new           #70                 // class kotlin/Pair
     528: dup
     529: iconst_1
     530: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     533: iconst_m1
     534: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     537: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     540: aastore
     541: aload_3
     542: iconst_2
     543: new           #70                 // class kotlin/Pair
     546: dup
     547: iconst_1
     548: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     551: iconst_1
     552: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     555: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     558: aastore
     559: aload_3
     560: invokestatic  #96                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     563: aastore
     564: aload_2
     565: invokestatic  #96                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     568: astore_1
     569: aload_1
     570: checkcast     #22                 // class java/lang/Iterable
     573: invokestatic  #92                 // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     576: checkcast     #22                 // class java/lang/Iterable
     579: invokestatic  #100                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     582: astore_2
     583: iconst_0
     584: istore_3
     585: iconst_1
     586: istore_3
     587: nop
     588: aload_0
     589: checkcast     #22                 // class java/lang/Iterable
     592: astore        5
     594: iconst_0
     595: istore        6
     597: aload         5
     599: astore        7
     601: new           #24                 // class java/util/ArrayList
     604: dup
     605: aload         5
     607: bipush        10
     609: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     612: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
     615: checkcast     #35                 // class java/util/Collection
     618: astore        8
     620: iconst_0
     621: istore        9
     623: aload         7
     625: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     630: astore        10
     632: aload         10
     634: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     639: ifeq          1239
     642: aload         10
     644: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     649: astore        11
     651: aload         8
     653: aload         11
     655: checkcast     #70                 // class kotlin/Pair
     658: astore        12
     660: astore        29
     662: iconst_0
     663: istore        13
     665: aload_2
     666: checkcast     #22                 // class java/lang/Iterable
     669: astore        14
     671: iconst_0
     672: istore        15
     674: aload         14
     676: astore        16
     678: new           #24                 // class java/util/ArrayList
     681: dup
     682: aload         14
     684: bipush        10
     686: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     689: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
     692: checkcast     #35                 // class java/util/Collection
     695: astore        17
     697: iconst_0
     698: istore        18
     700: aload         16
     702: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     707: astore        19
     709: aload         19
     711: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     716: ifeq          761
     719: aload         19
     721: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     726: astore        20
     728: aload         17
     730: aload         20
     732: checkcast     #70                 // class kotlin/Pair
     735: astore        21
     737: astore        22
     739: iconst_0
     740: istore        23
     742: aload         12
     744: aload         21
     746: invokestatic  #104                // Method plus:(Lkotlin/Pair;Lkotlin/Pair;)Lkotlin/Pair;
     749: aload         22
     751: swap
     752: invokeinterface #83,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     757: pop
     758: goto          709
     761: aload         17
     763: checkcast     #85                 // class java/util/List
     766: nop
     767: checkcast     #22                 // class java/lang/Iterable
     770: astore        14
     772: nop
     773: iconst_0
     774: istore        15
     776: aload         14
     778: astore        16
     780: new           #24                 // class java/util/ArrayList
     783: dup
     784: invokespecial #106                // Method java/util/ArrayList."<init>":()V
     787: checkcast     #35                 // class java/util/Collection
     790: astore        17
     792: iconst_0
     793: istore        18
     795: aload         16
     797: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     802: astore        19
     804: aload         19
     806: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     811: ifeq          857
     814: aload         19
     816: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     821: astore        20
     823: aload         20
     825: checkcast     #70                 // class kotlin/Pair
     828: astore        21
     830: iconst_0
     831: istore        23
     833: aload_0
     834: aload         21
     836: invokeinterface #109,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     841: ifeq          804
     844: aload         17
     846: aload         20
     848: invokeinterface #83,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     853: pop
     854: goto          804
     857: aload         17
     859: checkcast     #85                 // class java/util/List
     862: nop
     863: astore        24
     865: aload         24
     867: invokeinterface #112,  1          // InterfaceMethod java/util/List.isEmpty:()Z
     872: ifeq          880
     875: aload         12
     877: goto          1226
     880: aload_1
     881: checkcast     #35                 // class java/util/Collection
     884: invokestatic  #116                // Method kotlin/collections/CollectionsKt.getIndices:(Ljava/util/Collection;)Lkotlin/ranges/IntRange;
     887: checkcast     #22                 // class java/lang/Iterable
     890: astore        15
     892: iconst_0
     893: istore        16
     895: aload         15
     897: astore        17
     899: new           #24                 // class java/util/ArrayList
     902: dup
     903: aload         15
     905: bipush        10
     907: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     910: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
     913: checkcast     #35                 // class java/util/Collection
     916: astore        18
     918: iconst_0
     919: istore        19
     921: aload         17
     923: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     928: astore        20
     930: aload         20
     932: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     937: ifeq          1026
     940: aload         20
     942: checkcast     #118                // class kotlin/collections/IntIterator
     945: invokevirtual #122                // Method kotlin/collections/IntIterator.nextInt:()I
     948: istore        21
     950: aload         18
     952: iload         21
     954: istore        23
     956: astore        22
     958: iconst_0
     959: istore        25
     961: aload_1
     962: iload         23
     964: iload_3
     965: iadd
     966: iconst_1
     967: isub
     968: istore        26
     970: aload_1
     971: invokeinterface #125,  1          // InterfaceMethod java/util/List.size:()I
     976: istore        27
     978: iload         26
     980: iload         27
     982: irem
     983: istore        28
     985: iload         28
     987: iload         27
     989: iload         28
     991: iload         27
     993: ixor
     994: iload         28
     996: iload         28
     998: ineg
     999: ior
    1000: iand
    1001: bipush        31
    1003: ishr
    1004: iand
    1005: iadd
    1006: invokeinterface #129,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1011: checkcast     #85                 // class java/util/List
    1014: aload         22
    1016: swap
    1017: invokeinterface #83,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1022: pop
    1023: goto          930
    1026: aload         18
    1028: checkcast     #85                 // class java/util/List
    1031: nop
    1032: checkcast     #22                 // class java/lang/Iterable
    1035: astore        15
    1037: nop
    1038: iconst_0
    1039: istore        16
    1041: aload         15
    1043: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1048: astore        17
    1050: aload         17
    1052: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1057: ifeq          1183
    1060: aload         17
    1062: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1067: astore        18
    1069: aload         18
    1071: checkcast     #85                 // class java/util/List
    1074: astore        19
    1076: iconst_0
    1077: istore        20
    1079: aload         19
    1081: checkcast     #22                 // class java/lang/Iterable
    1084: astore        21
    1086: iconst_0
    1087: istore        23
    1089: aload         21
    1091: instanceof    #35                 // class java/util/Collection
    1094: ifeq          1114
    1097: aload         21
    1099: checkcast     #35                 // class java/util/Collection
    1102: invokeinterface #130,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
    1107: ifeq          1114
    1110: iconst_1
    1111: goto          1174
    1114: aload         21
    1116: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1121: astore        25
    1123: aload         25
    1125: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1130: ifeq          1173
    1133: aload         25
    1135: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1140: astore        26
    1142: aload         26
    1144: checkcast     #70                 // class kotlin/Pair
    1147: astore        27
    1149: iconst_0
    1150: istore        28
    1152: aload         24
    1154: aload         12
    1156: aload         27
    1158: invokestatic  #104                // Method plus:(Lkotlin/Pair;Lkotlin/Pair;)Lkotlin/Pair;
    1161: invokeinterface #109,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    1166: ifeq          1123
    1169: iconst_0
    1170: goto          1174
    1173: iconst_1
    1174: nop
    1175: ifeq          1050
    1178: aload         18
    1180: goto          1184
    1183: aconst_null
    1184: checkcast     #85                 // class java/util/List
    1187: astore        14
    1189: aload         12
    1191: aload         14
    1193: dup
    1194: ifnull        1207
    1197: invokestatic  #134                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
    1200: checkcast     #70                 // class kotlin/Pair
    1203: dup
    1204: ifnonnull     1223
    1207: pop
    1208: new           #70                 // class kotlin/Pair
    1211: dup
    1212: iconst_0
    1213: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1216: iconst_0
    1217: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1220: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
    1223: invokestatic  #104                // Method plus:(Lkotlin/Pair;Lkotlin/Pair;)Lkotlin/Pair;
    1226: nop
    1227: aload         29
    1229: swap
    1230: invokeinterface #83,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1235: pop
    1236: goto          632
    1239: aload         8
    1241: checkcast     #85                 // class java/util/List
    1244: nop
    1245: astore        4
    1247: aload         4
    1249: checkcast     #22                 // class java/lang/Iterable
    1252: astore        6
    1254: iconst_0
    1255: istore        7
    1257: new           #136                // class day23/Day23Kt$main$$inlined$groupingBy$1
    1260: dup
    1261: aload         6
    1263: invokespecial #139                // Method day23/Day23Kt$main$$inlined$groupingBy$1."<init>":(Ljava/lang/Iterable;)V
    1266: checkcast     #141                // class kotlin/collections/Grouping
    1269: invokestatic  #147                // Method kotlin/collections/GroupingKt.eachCount:(Lkotlin/collections/Grouping;)Ljava/util/Map;
    1272: astore        5
    1274: aload_0
    1275: checkcast     #35                 // class java/util/Collection
    1278: invokestatic  #116                // Method kotlin/collections/CollectionsKt.getIndices:(Ljava/util/Collection;)Lkotlin/ranges/IntRange;
    1281: checkcast     #22                 // class java/lang/Iterable
    1284: astore        7
    1286: iconst_0
    1287: istore        8
    1289: aload         7
    1291: astore        9
    1293: new           #24                 // class java/util/ArrayList
    1296: dup
    1297: aload         7
    1299: bipush        10
    1301: invokestatic  #30                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
    1304: invokespecial #33                 // Method java/util/ArrayList."<init>":(I)V
    1307: checkcast     #35                 // class java/util/Collection
    1310: astore        10
    1312: iconst_0
    1313: istore        11
    1315: aload         9
    1317: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1322: astore        12
    1324: aload         12
    1326: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1331: ifeq          1431
    1334: aload         12
    1336: checkcast     #118                // class kotlin/collections/IntIterator
    1339: invokevirtual #122                // Method kotlin/collections/IntIterator.nextInt:()I
    1342: istore        13
    1344: aload         10
    1346: iload         13
    1348: istore        14
    1350: astore        29
    1352: iconst_0
    1353: istore        15
    1355: aload         5
    1357: aload         4
    1359: iload         14
    1361: invokeinterface #129,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1366: invokeinterface #152,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
    1371: checkcast     #72                 // class java/lang/Integer
    1374: iconst_1
    1375: istore        16
    1377: dup
    1378: ifnonnull     1385
    1381: pop
    1382: goto          1408
    1385: invokevirtual #155                // Method java/lang/Integer.intValue:()I
    1388: iload         16
    1390: if_icmpne     1408
    1393: aload         4
    1395: iload         14
    1397: invokeinterface #129,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1402: checkcast     #70                 // class kotlin/Pair
    1405: goto          1419
    1408: aload_0
    1409: iload         14
    1411: invokeinterface #129,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1416: checkcast     #70                 // class kotlin/Pair
    1419: aload         29
    1421: swap
    1422: invokeinterface #83,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1427: pop
    1428: goto          1324
    1431: aload         10
    1433: checkcast     #85                 // class java/util/List
    1436: nop
    1437: astore        6
    1439: aload_0
    1440: aload         6
    1442: invokestatic  #161                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
    1445: ifeq          1462
    1448: iload_3
    1449: istore        7
    1451: getstatic     #167                // Field java/lang/System.out:Ljava/io/PrintStream;
    1454: iload         7
    1456: invokevirtual #172                // Method java/io/PrintStream.println:(I)V
    1459: goto          1580
    1462: aload         6
    1464: astore_0
    1465: iload_3
    1466: bipush        10
    1468: if_icmpne     1569
    1471: aload_0
    1472: invokestatic  #176                // Method rectangle:(Ljava/util/List;)Lkotlin/Pair;
    1475: astore        7
    1477: aload         7
    1479: invokevirtual #179                // Method kotlin/Pair.component1:()Ljava/lang/Object;
    1482: checkcast     #70                 // class kotlin/Pair
    1485: astore        8
    1487: aload         7
    1489: invokevirtual #182                // Method kotlin/Pair.component2:()Ljava/lang/Object;
    1492: checkcast     #70                 // class kotlin/Pair
    1495: astore        9
    1497: iconst_1
    1498: aload         9
    1500: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
    1503: checkcast     #187                // class java/lang/Number
    1506: invokevirtual #188                // Method java/lang/Number.intValue:()I
    1509: iadd
    1510: aload         8
    1512: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
    1515: checkcast     #187                // class java/lang/Number
    1518: invokevirtual #188                // Method java/lang/Number.intValue:()I
    1521: isub
    1522: iconst_1
    1523: aload         9
    1525: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
    1528: checkcast     #187                // class java/lang/Number
    1531: invokevirtual #188                // Method java/lang/Number.intValue:()I
    1534: iadd
    1535: aload         8
    1537: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
    1540: checkcast     #187                // class java/lang/Number
    1543: invokevirtual #188                // Method java/lang/Number.intValue:()I
    1546: isub
    1547: imul
    1548: istore        10
    1550: iload         10
    1552: aload_0
    1553: invokeinterface #125,  1          // InterfaceMethod java/util/List.size:()I
    1558: isub
    1559: istore        11
    1561: getstatic     #167                // Field java/lang/System.out:Ljava/io/PrintStream;
    1564: iload         11
    1566: invokevirtual #172                // Method java/io/PrintStream.println:(I)V
    1569: iload_3
    1570: istore        7
    1572: iload         7
    1574: iconst_1
    1575: iadd
    1576: istore_3
    1577: goto          587
    1580: return

  public static final void printElves(java.util.List<kotlin.Pair<java.lang.Integer, java.lang.Integer>>);
    Code:
       0: aload_0
       1: ldc_w         #262                // String elves
       4: invokestatic  #266                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokestatic  #176                // Method rectangle:(Ljava/util/List;)Lkotlin/Pair;
      11: astore_1
      12: aload_1
      13: invokevirtual #179                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      16: checkcast     #70                 // class kotlin/Pair
      19: astore_2
      20: aload_1
      21: invokevirtual #182                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      24: checkcast     #70                 // class kotlin/Pair
      27: astore_3
      28: aload_2
      29: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
      32: checkcast     #187                // class java/lang/Number
      35: invokevirtual #188                // Method java/lang/Number.intValue:()I
      38: istore        4
      40: aload_3
      41: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
      44: checkcast     #187                // class java/lang/Number
      47: invokevirtual #188                // Method java/lang/Number.intValue:()I
      50: istore        5
      52: iload         4
      54: iload         5
      56: if_icmpgt     165
      59: aload_2
      60: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      63: checkcast     #187                // class java/lang/Number
      66: invokevirtual #188                // Method java/lang/Number.intValue:()I
      69: istore        6
      71: aload_3
      72: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      75: checkcast     #187                // class java/lang/Number
      78: invokevirtual #188                // Method java/lang/Number.intValue:()I
      81: istore        7
      83: iload         6
      85: iload         7
      87: if_icmpgt     146
      90: aload_0
      91: new           #70                 // class kotlin/Pair
      94: dup
      95: iload         6
      97: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     100: iload         4
     102: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     105: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     108: invokeinterface #109,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     113: ifeq          121
     116: bipush        35
     118: goto          123
     121: bipush        46
     123: istore        8
     125: getstatic     #167                // Field java/lang/System.out:Ljava/io/PrintStream;
     128: iload         8
     130: invokevirtual #270                // Method java/io/PrintStream.print:(C)V
     133: iload         6
     135: iload         7
     137: if_icmpeq     146
     140: iinc          6, 1
     143: goto          90
     146: getstatic     #167                // Field java/lang/System.out:Ljava/io/PrintStream;
     149: invokevirtual #272                // Method java/io/PrintStream.println:()V
     152: iload         4
     154: iload         5
     156: if_icmpeq     165
     159: iinc          4, 1
     162: goto          59
     165: getstatic     #167                // Field java/lang/System.out:Ljava/io/PrintStream;
     168: invokevirtual #272                // Method java/io/PrintStream.println:()V
     171: return

  private static final kotlin.Pair<kotlin.Pair<java.lang.Integer, java.lang.Integer>, kotlin.Pair<java.lang.Integer, java.lang.Integer>> rectangle(java.util.List<kotlin.Pair<java.lang.Integer, java.lang.Integer>>);
    Code:
       0: aload_0
       1: checkcast     #22                 // class java/lang/Iterable
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      13: astore        4
      15: aload         4
      17: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      22: ifne          36
      25: new           #275                // class java/lang/UnsupportedOperationException
      28: dup
      29: ldc_w         #277                // String Empty collection can\'t be reduced.
      32: invokespecial #278                // Method java/lang/UnsupportedOperationException."<init>":(Ljava/lang/String;)V
      35: athrow
      36: aload         4
      38: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      43: astore        5
      45: aload         4
      47: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      52: ifeq          145
      55: aload         5
      57: aload         4
      59: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: checkcast     #70                 // class kotlin/Pair
      67: astore        6
      69: checkcast     #70                 // class kotlin/Pair
      72: astore        7
      74: iconst_0
      75: istore        8
      77: new           #70                 // class kotlin/Pair
      80: dup
      81: aload         7
      83: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      86: checkcast     #187                // class java/lang/Number
      89: invokevirtual #188                // Method java/lang/Number.intValue:()I
      92: aload         6
      94: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      97: checkcast     #187                // class java/lang/Number
     100: invokevirtual #188                // Method java/lang/Number.intValue:()I
     103: invokestatic  #284                // Method java/lang/Math.min:(II)I
     106: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     109: aload         7
     111: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     114: checkcast     #187                // class java/lang/Number
     117: invokevirtual #188                // Method java/lang/Number.intValue:()I
     120: aload         6
     122: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     125: checkcast     #187                // class java/lang/Number
     128: invokevirtual #188                // Method java/lang/Number.intValue:()I
     131: invokestatic  #284                // Method java/lang/Math.min:(II)I
     134: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     137: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     140: astore        5
     142: goto          45
     145: aload         5
     147: checkcast     #70                 // class kotlin/Pair
     150: astore_1
     151: aload_0
     152: checkcast     #22                 // class java/lang/Iterable
     155: astore_3
     156: iconst_0
     157: istore        4
     159: aload_3
     160: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     165: astore        5
     167: aload         5
     169: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     174: ifne          188
     177: new           #275                // class java/lang/UnsupportedOperationException
     180: dup
     181: ldc_w         #277                // String Empty collection can\'t be reduced.
     184: invokespecial #278                // Method java/lang/UnsupportedOperationException."<init>":(Ljava/lang/String;)V
     187: athrow
     188: aload         5
     190: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     195: astore        6
     197: aload         5
     199: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     204: ifeq          297
     207: aload         6
     209: aload         5
     211: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     216: checkcast     #70                 // class kotlin/Pair
     219: astore        7
     221: checkcast     #70                 // class kotlin/Pair
     224: astore        8
     226: iconst_0
     227: istore        9
     229: new           #70                 // class kotlin/Pair
     232: dup
     233: aload         8
     235: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     238: checkcast     #187                // class java/lang/Number
     241: invokevirtual #188                // Method java/lang/Number.intValue:()I
     244: aload         7
     246: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     249: checkcast     #187                // class java/lang/Number
     252: invokevirtual #188                // Method java/lang/Number.intValue:()I
     255: invokestatic  #287                // Method java/lang/Math.max:(II)I
     258: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     261: aload         8
     263: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     266: checkcast     #187                // class java/lang/Number
     269: invokevirtual #188                // Method java/lang/Number.intValue:()I
     272: aload         7
     274: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     277: checkcast     #187                // class java/lang/Number
     280: invokevirtual #188                // Method java/lang/Number.intValue:()I
     283: invokestatic  #287                // Method java/lang/Math.max:(II)I
     286: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     289: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     292: astore        6
     294: goto          197
     297: aload         6
     299: checkcast     #70                 // class kotlin/Pair
     302: astore_2
     303: new           #70                 // class kotlin/Pair
     306: dup
     307: aload_1
     308: aload_2
     309: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     312: areturn

  public static final kotlin.Pair<java.lang.Integer, java.lang.Integer> plus(kotlin.Pair<java.lang.Integer, java.lang.Integer>, kotlin.Pair<java.lang.Integer, java.lang.Integer>);
    Code:
       0: aload_0
       1: ldc_w         #299                // String <this>
       4: invokestatic  #266                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #301                // String other
      11: invokestatic  #266                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: new           #70                 // class kotlin/Pair
      17: dup
      18: aload_0
      19: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      22: checkcast     #187                // class java/lang/Number
      25: invokevirtual #188                // Method java/lang/Number.intValue:()I
      28: aload_1
      29: invokevirtual #185                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      32: checkcast     #187                // class java/lang/Number
      35: invokevirtual #188                // Method java/lang/Number.intValue:()I
      38: iadd
      39: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      42: aload_0
      43: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
      46: checkcast     #187                // class java/lang/Number
      49: invokevirtual #188                // Method java/lang/Number.intValue:()I
      52: aload_1
      53: invokevirtual #191                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
      56: checkcast     #187                // class java/lang/Number
      59: invokevirtual #188                // Method java/lang/Number.intValue:()I
      62: iadd
      63: invokestatic  #76                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      66: invokespecial #79                 // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
      69: areturn

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