package marathons.icpcchallenge.y2020_huaweiGraphMining

import java.io.BufferedReader
import java.io.FileReader
import java.io.PrintWriter
import java.util.*
import kotlin.math.pow
import kotlin.random.asJavaRandom

fun solve(fileName: String, nei: List<IntArray>) {
	val outputFile = "$fileName.out"
	val auxFile = "$fileName.aux"

	val n = nei.size
	val edges = nei.sumOf { it.size } / 2
	val r = kotlin.random.Random(566)
	println("$fileName $n ${2.0 * edges / n}")

	fun eval(color: IntArray): Double {
		val map = mutableMapOf<Int, Int>()
		for (c in color) if (c !in map) map[c] = map.size
		val parts = map.size
		val eIn = IntArray(parts)
		val eOut = IntArray(parts)
		val size = IntArray(parts)
		val sumDeg = IntArray(parts)
		for (u in nei.indices) {
			val cu = map[color[u]]!!
			size[cu]++
			sumDeg[cu] += nei[u].size
			for (v in nei[u]) {
				if (map[color[v]] == cu) eIn[cu]++ else eOut[cu]++
			}
		}
		val modularity = eIn.indices.sumOf { eIn[it] * 0.5 / edges - (sumDeg[it] * 0.5 / edges).pow(2) }
		val regularization = 0.5 * (eIn.indices.sumOf { if (size[it] == 1) 1.0 else eIn[it].toDouble() / (size[it] * (size[it] - 1)) } / parts - parts.toDouble() / n)
		//		println("$modularity $regularization $res")
		return (1 + modularity + regularization) * 1e5
	}

	fun randomCenters(parts: Int) = nei.indices.shuffled(r).take(parts).toIntArray()

	fun byCenters(centers: IntArray): IntArray {
		val inf = n + 1
		val queue = IntArray(n)
		val dist = IntArray(n) { inf }
		val which = IntArray(n) { inf }
//		val size = IntArray(n) { 0 }
		var low = 0; var high = 0
		for (c in centers) {
			dist[c] = 0
			which[c] = c
//			size[c] = 1
			queue[high++] = c
		}
		while (low < high) {
			val u = queue[low++]
			for (v in nei[u]) {
				if (dist[v] < inf) continue
				dist[v] = dist[u] + 1
				which[v] = which[u]
//				size[which[v]]++
				queue[high++] = v
			}
		}
		return which
	}

	@Suppress("unused")
	fun bestParts(): Int {
		return (10000..60000 step 1000).maxByOrNull { parts ->
			val q = List(8) { eval(byCenters(randomCenters(parts))) }.maxOrNull()!!
			println("$parts $q")
			q
		}!!
	}
	val bestParts = mapOf("a1" to 21000, "a2" to 29000, "a3" to 29000)

	val parts = bestParts[fileName] ?: error("")
//	val centers = randomCenters(parts)
	val centers = BufferedReader(FileReader(auxFile)).readLine().split(" ").map { it.toInt() }.toIntArray()
	var answer = byCenters(centers)
	var best = eval(answer)

	fun improve1() {
		val index = r.nextInt(centers.size)
		val oldValue = centers[index]
		val centersSet = centers.toMutableSet()
		centersSet.remove(oldValue)
		while (true) {
			centers[index] = r.nextInt(n)
			if (centers[index] in centersSet) continue
			centersSet.add(centers[index])
			break
		}
		val new = byCenters(centers)
		val score = eval(new)
		print("$best -> $score")
		if (score > best) {
			best = score
			answer = new
			print(" YES")
		} else {
			centersSet.remove(centers[index])
			centers[index] = oldValue
			centersSet.add(oldValue)
		}
		println()
	}

	fun improve2() {
		val old = centers.clone()
		val level = 256
		for (i in centers.indices) {
			if (r.nextInt(level) == 0) centers[i] = -1
		}
		val set = centers.toMutableSet()
		for (i in centers.indices) {
			if (centers[i] != -1) continue
			while (true) {
				centers[i] = r.nextInt(n)
				if (centers[i] in set) continue
				set.add(centers[i])
				break
			}
		}
		val new = byCenters(centers)
		val score = eval(new)
		print("$best -> $score")
		if (score > best) {
			best = score
			answer = new
			print(" YES")
		} else {
			for (i in centers.indices) centers[i] = old[i]
		}
		print(" $level")
		println()
	}

	class Centers(val a: IntArray) {
		private val energy: Double = eval(byCenters(a))
		fun energy(): Double = energy

		fun randomInstance(random: Random): Centers {
			val list = ArrayList<Int>()
			for (i in 0 until n) {
				list.add(i)
			}
			list.shuffle(random)
			for (i in 0 until parts) {
				a[i] = list[i]
			}
			return Centers(a)
		}

		fun vary(): Centers {
			val new: IntArray = a.clone()
			val level = 256
			for (i in new.indices) {
				if (r.nextInt(level) == 0) new[i] = -1
			}
			val set = new.toMutableSet()
			for (i in new.indices) {
				if (new[i] != -1) continue
				while (true) {
					new[i] = r.nextInt(n)
					if (new[i] in set) continue
					set.add(new[i])
					break
				}
			}
			return Centers(new)
		}
	}

	class Settings constructor(var globalIterations: Int = 1024, var iterations: Int = 8192, var probStartWithPrevious: Double = 1 - 1.0 / 16, var recessionLimit: Int = Int.MAX_VALUE, var desiredEnergy: Double = -Double.MAX_VALUE, var temp0: Double = 1.0)

	repeat(10) {
		improve1()
		improve2()
	}

	fun simulatedAnnealing(item: Centers, settings: Settings, r1: Random): Centers? {
		var item = item
		var energy = item!!.energy()
		var answerEnergy = Double.MAX_VALUE
		var answer: Centers? = null
		for (glob in 0 until settings.globalIterations) {
			if (glob > 0 && r1.nextDouble() >= settings.probStartWithPrevious) {
				item = item!!.randomInstance(r1)
				energy = item.energy()
			}
			var end = settings.iterations
			var iter = 1
			var recession = 0
			while (true) {
				if (energy < answerEnergy) {
					answerEnergy = energy
					answer = item
					println(answerEnergy)
					if (answerEnergy <= settings.desiredEnergy) {
						return answer
					}
					end = Math.max(end, iter + settings.iterations)
				}
				if (iter > end) {
					break
				}
				var nextEnergy: Double
				var next: Centers? = null
				next = item!!.vary()!!
				nextEnergy = next.energy()
				val dEnergy = nextEnergy - energy
				var accept: Boolean
				if (dEnergy < 0) {
					accept = true
					recession = 0
				} else {
					recession++
					if (recession == settings.recessionLimit) {
						break
					}
					val barrier = Math.exp(-1.0 * dEnergy * iter / settings.temp0)
					accept = r1.nextDouble() < barrier
				}
				if (accept) {
					assert(next != null)
					item = next!!
					energy = nextEnergy
				} else {
				}
				iter++
			}
		}
		return answer
	}

	val settings = Settings()
	val item = Centers(centers)
	val q: Centers = simulatedAnnealing(item, settings, r.asJavaRandom()) as Centers
	for (i in centers.indices) centers[i] = q.a[i]

	val output = PrintWriter(outputFile)
	val aux = PrintWriter(auxFile)
	answer.indices.groupBy { answer[it] }.values.sortedBy { it.size }.forEach { output.println(it.joinToString(" ")) }
	aux.println(centers.joinToString(" "))
	output.close()
	aux.close()
}

fun main() {
	for (test in 1..3) {
		val fileName = "a$test"
		val input = BufferedReader(FileReader("${fileName}.in"))
		val edges = generateSequence { input.readLine()?.split(" ")?.map { it.toInt() } }.toList()
		val n = edges.flatten().maxOrNull()!! + 1
		val nei = List(n) { mutableListOf<Int>() }
		for ((u, v) in edges) { nei[u].add(v); nei[v].add(u) }
		solve(fileName, nei.map { it.toIntArray() })
	}
}

Compiled from "a.kt"
public final class marathons.icpcchallenge.y2020_huaweiGraphMining.AKt {
  public static final void solve(java.lang.String, java.util.List<int[]>);
    Code:
       0: aload_0
       1: ldc           #10                 // String fileName
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #18                 // String nei
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: new           #20                 // class java/lang/StringBuilder
      15: dup
      16: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
      19: aload_0
      20: invokevirtual #28                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      23: ldc           #30                 // String .out
      25: invokevirtual #28                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      28: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      31: astore_2
      32: new           #20                 // class java/lang/StringBuilder
      35: dup
      36: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
      39: aload_0
      40: invokevirtual #28                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      43: ldc           #36                 // String .aux
      45: invokevirtual #28                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      48: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      51: astore_3
      52: aload_1
      53: invokeinterface #42,  1           // InterfaceMethod java/util/List.size:()I
      58: istore        4
      60: aload_1
      61: checkcast     #44                 // class java/lang/Iterable
      64: astore        6
      66: iconst_0
      67: istore        7
      69: aload         6
      71: invokeinterface #48,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      76: astore        8
      78: aload         8
      80: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      85: ifeq          126
      88: aload         8
      90: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      95: astore        9
      97: iload         7
      99: aload         9
     101: checkcast     #60                 // class "[I"
     104: astore        10
     106: istore        32
     108: iconst_0
     109: istore        11
     111: aload         10
     113: arraylength
     114: istore        33
     116: iload         32
     118: iload         33
     120: iadd
     121: istore        7
     123: goto          78
     126: iload         7
     128: iconst_2
     129: idiv
     130: istore        5
     132: sipush        566
     135: invokestatic  #66                 // Method kotlin/random/RandomKt.Random:(I)Lkotlin/random/Random;
     138: astore        6
     140: new           #20                 // class java/lang/StringBuilder
     143: dup
     144: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
     147: aload_0
     148: invokevirtual #28                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     151: bipush        32
     153: invokevirtual #69                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     156: iload         4
     158: invokevirtual #72                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     161: bipush        32
     163: invokevirtual #69                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     166: ldc2_w        #73                 // double 2.0d
     169: iload         5
     171: i2d
     172: dmul
     173: iload         4
     175: i2d
     176: ddiv
     177: invokevirtual #77                 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
     180: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     183: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     186: swap
     187: invokevirtual #89                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     190: iconst_3
     191: anewarray     #91                 // class kotlin/Pair
     194: astore        8
     196: aload         8
     198: iconst_0
     199: ldc           #93                 // String a1
     201: sipush        21000
     204: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     207: invokestatic  #105                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     210: aastore
     211: aload         8
     213: iconst_1
     214: ldc           #107                // String a2
     216: sipush        29000
     219: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     222: invokestatic  #105                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     225: aastore
     226: aload         8
     228: iconst_2
     229: ldc           #109                // String a3
     231: sipush        29000
     234: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     237: invokestatic  #105                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     240: aastore
     241: aload         8
     243: invokestatic  #115                // Method kotlin/collections/MapsKt.mapOf:([Lkotlin/Pair;)Ljava/util/Map;
     246: astore        7
     248: aload         7
     250: aload_0
     251: invokeinterface #121,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     256: checkcast     #95                 // class java/lang/Integer
     259: dup
     260: ifnull        269
     263: invokevirtual #124                // Method java/lang/Integer.intValue:()I
     266: goto          283
     269: pop
     270: new           #126                // class java/lang/IllegalStateException
     273: dup
     274: ldc           #128                // String
     276: invokevirtual #129                // Method java/lang/Object.toString:()Ljava/lang/String;
     279: invokespecial #132                // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
     282: athrow
     283: istore        8
     285: new           #134                // class java/io/BufferedReader
     288: dup
     289: new           #136                // class java/io/FileReader
     292: dup
     293: aload_3
     294: invokespecial #137                // Method java/io/FileReader."<init>":(Ljava/lang/String;)V
     297: checkcast     #139                // class java/io/Reader
     300: invokespecial #142                // Method java/io/BufferedReader."<init>":(Ljava/io/Reader;)V
     303: invokevirtual #145                // Method java/io/BufferedReader.readLine:()Ljava/lang/String;
     306: dup
     307: ldc           #147                // String readLine(...)
     309: invokestatic  #150                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     312: checkcast     #152                // class java/lang/CharSequence
     315: iconst_1
     316: anewarray     #154                // class java/lang/String
     319: astore        10
     321: aload         10
     323: iconst_0
     324: ldc           #156                // String
     326: aastore
     327: aload         10
     329: iconst_0
     330: iconst_0
     331: bipush        6
     333: aconst_null
     334: invokestatic  #162                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     337: checkcast     #44                 // class java/lang/Iterable
     340: astore        10
     342: iconst_0
     343: istore        11
     345: aload         10
     347: astore        12
     349: new           #164                // class java/util/ArrayList
     352: dup
     353: aload         10
     355: bipush        10
     357: invokestatic  #170                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     360: invokespecial #173                // Method java/util/ArrayList."<init>":(I)V
     363: checkcast     #175                // class java/util/Collection
     366: astore        13
     368: iconst_0
     369: istore        14
     371: aload         12
     373: invokeinterface #48,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     378: astore        15
     380: aload         15
     382: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     387: ifeq          434
     390: aload         15
     392: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     397: astore        16
     399: aload         13
     401: aload         16
     403: checkcast     #154                // class java/lang/String
     406: astore        17
     408: astore        32
     410: iconst_0
     411: istore        18
     413: aload         17
     415: invokestatic  #179                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     418: nop
     419: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     422: aload         32
     424: swap
     425: invokeinterface #183,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     430: pop
     431: goto          380
     434: aload         13
     436: checkcast     #38                 // class java/util/List
     439: nop
     440: checkcast     #175                // class java/util/Collection
     443: invokestatic  #187                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     446: astore        9
     448: new           #189                // class kotlin/jvm/internal/Ref$ObjectRef
     451: dup
     452: invokespecial #190                // Method kotlin/jvm/internal/Ref$ObjectRef."<init>":()V
     455: astore        10
     457: aload         10
     459: iload         4
     461: aload_1
     462: aload         9
     464: invokestatic  #194                // Method solve$byCenters:(ILjava/util/List;[I)[I
     467: putfield      #198                // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     470: new           #200                // class kotlin/jvm/internal/Ref$DoubleRef
     473: dup
     474: invokespecial #201                // Method kotlin/jvm/internal/Ref$DoubleRef."<init>":()V
     477: astore        11
     479: aload         11
     481: aload_1
     482: iload         4
     484: iload         5
     486: aload         10
     488: getfield      #198                // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     491: checkcast     #60                 // class "[I"
     494: invokestatic  #205                // Method solve$eval:(Ljava/util/List;II[I)D
     497: putfield      #208                // Field kotlin/jvm/internal/Ref$DoubleRef.element:D
     500: bipush        10
     502: istore        12
     504: iconst_0
     505: istore        13
     507: iload         13
     509: iload         12
     511: if_icmpge     560
     514: iload         13
     516: istore        14
     518: iconst_0
     519: istore        15
     521: aload         6
     523: aload         9
     525: iload         4
     527: aload         11
     529: aload         10
     531: aload_1
     532: iload         5
     534: invokestatic  #212                // Method solve$improve1:(Lkotlin/random/Random;[IILkotlin/jvm/internal/Ref$DoubleRef;Lkotlin/jvm/internal/Ref$ObjectRef;Ljava/util/List;I)V
     537: aload         9
     539: aload         6
     541: iload         4
     543: aload         11
     545: aload         10
     547: aload_1
     548: iload         5
     550: invokestatic  #216                // Method solve$improve2:([ILkotlin/random/Random;ILkotlin/jvm/internal/Ref$DoubleRef;Lkotlin/jvm/internal/Ref$ObjectRef;Ljava/util/List;I)V
     553: nop
     554: iinc          13, 1
     557: goto          507
     560: new           #218                // class marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings
     563: dup
     564: iconst_0
     565: iconst_0
     566: dconst_0
     567: iconst_0
     568: dconst_0
     569: dconst_0
     570: bipush        63
     572: aconst_null
     573: invokespecial #221                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings."<init>":(IIDIDDILkotlin/jvm/internal/DefaultConstructorMarker;)V
     576: astore        12
     578: new           #223                // class marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers
     581: dup
     582: iload         4
     584: aload_1
     585: iload         5
     587: iload         8
     589: aload         6
     591: aload         9
     593: invokespecial #226                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers."<init>":(ILjava/util/List;IILkotlin/random/Random;[I)V
     596: astore        13
     598: aload         13
     600: aload         12
     602: aload         6
     604: invokestatic  #232                // Method kotlin/random/PlatformRandomKt.asJavaRandom:(Lkotlin/random/Random;)Ljava/util/Random;
     607: invokestatic  #236                // Method solve$simulatedAnnealing:(Lmarathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers;Lmarathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings;Ljava/util/Random;)Lmarathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers;
     610: dup
     611: ldc           #238                // String null cannot be cast to non-null type marathons.icpcchallenge.y2020_huaweiGraphMining.AKt.solve.Centers
     613: invokestatic  #241                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)V
     616: astore        14
     618: iconst_0
     619: istore        15
     621: aload         9
     623: arraylength
     624: istore        16
     626: iload         15
     628: iload         16
     630: if_icmpge     652
     633: aload         9
     635: iload         15
     637: aload         14
     639: invokevirtual #245                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers.getA:()[I
     642: iload         15
     644: iaload
     645: iastore
     646: iinc          15, 1
     649: goto          626
     652: new           #247                // class java/io/PrintWriter
     655: dup
     656: aload_2
     657: invokespecial #248                // Method java/io/PrintWriter."<init>":(Ljava/lang/String;)V
     660: astore        15
     662: new           #247                // class java/io/PrintWriter
     665: dup
     666: aload_3
     667: invokespecial #248                // Method java/io/PrintWriter."<init>":(Ljava/lang/String;)V
     670: astore        16
     672: aload         10
     674: getfield      #198                // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     677: checkcast     #60                 // class "[I"
     680: invokestatic  #254                // Method kotlin/collections/ArraysKt.getIndices:([I)Lkotlin/ranges/IntRange;
     683: checkcast     #44                 // class java/lang/Iterable
     686: astore        17
     688: iconst_0
     689: istore        18
     691: aload         17
     693: astore        19
     695: new           #256                // class java/util/LinkedHashMap
     698: dup
     699: invokespecial #257                // Method java/util/LinkedHashMap."<init>":()V
     702: checkcast     #117                // class java/util/Map
     705: astore        20
     707: iconst_0
     708: istore        21
     710: aload         19
     712: invokeinterface #48,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     717: astore        22
     719: aload         22
     721: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     726: ifeq          843
     729: aload         22
     731: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     736: astore        23
     738: aload         23
     740: checkcast     #259                // class java/lang/Number
     743: invokevirtual #260                // Method java/lang/Number.intValue:()I
     746: istore        24
     748: iconst_0
     749: istore        25
     751: aload         10
     753: getfield      #198                // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     756: checkcast     #60                 // class "[I"
     759: iload         24
     761: iaload
     762: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     765: astore        26
     767: aload         20
     769: astore        27
     771: iconst_0
     772: istore        28
     774: aload         27
     776: aload         26
     778: invokeinterface #121,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     783: astore        29
     785: aload         29
     787: ifnonnull     822
     790: iconst_0
     791: istore        30
     793: new           #164                // class java/util/ArrayList
     796: dup
     797: invokespecial #261                // Method java/util/ArrayList."<init>":()V
     800: checkcast     #38                 // class java/util/List
     803: astore        30
     805: aload         27
     807: aload         26
     809: aload         30
     811: invokeinterface #265,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     816: pop
     817: aload         30
     819: goto          824
     822: aload         29
     824: nop
     825: checkcast     #38                 // class java/util/List
     828: astore        31
     830: aload         31
     832: aload         23
     834: invokeinterface #266,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     839: pop
     840: goto          719
     843: aload         20
     845: nop
     846: invokeinterface #270,  1          // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     851: checkcast     #44                 // class java/lang/Iterable
     854: astore        17
     856: iconst_0
     857: istore        18
     859: aload         17
     861: new           #272                // class marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$$inlined$sortedBy$1
     864: dup
     865: invokespecial #273                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$$inlined$sortedBy$1."<init>":()V
     868: checkcast     #275                // class java/util/Comparator
     871: invokestatic  #279                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
     874: checkcast     #44                 // class java/lang/Iterable
     877: astore        17
     879: nop
     880: iconst_0
     881: istore        18
     883: aload         17
     885: invokeinterface #48,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     890: astore        19
     892: aload         19
     894: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     899: ifeq          951
     902: aload         19
     904: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     909: astore        20
     911: aload         20
     913: checkcast     #38                 // class java/util/List
     916: astore        21
     918: iconst_0
     919: istore        22
     921: aload         15
     923: aload         21
     925: checkcast     #44                 // class java/lang/Iterable
     928: ldc           #156                // String
     930: checkcast     #152                // class java/lang/CharSequence
     933: aconst_null
     934: aconst_null
     935: iconst_0
     936: aconst_null
     937: aconst_null
     938: bipush        62
     940: aconst_null
     941: invokestatic  #283                // 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;
     944: invokevirtual #285                // Method java/io/PrintWriter.println:(Ljava/lang/String;)V
     947: nop
     948: goto          892
     951: nop
     952: aload         16
     954: aload         9
     956: ldc           #156                // String
     958: checkcast     #152                // class java/lang/CharSequence
     961: aconst_null
     962: aconst_null
     963: iconst_0
     964: aconst_null
     965: aconst_null
     966: bipush        62
     968: aconst_null
     969: invokestatic  #288                // Method kotlin/collections/ArraysKt.joinToString$default:([ILjava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
     972: invokevirtual #285                // Method java/io/PrintWriter.println:(Ljava/lang/String;)V
     975: aload         15
     977: invokevirtual #291                // Method java/io/PrintWriter.close:()V
     980: aload         16
     982: invokevirtual #291                // Method java/io/PrintWriter.close:()V
     985: return

  public static final void main();
    Code:
       0: iconst_1
       1: istore_0
       2: iload_0
       3: iconst_4
       4: if_icmpge     402
       7: new           #20                 // class java/lang/StringBuilder
      10: dup
      11: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
      14: bipush        97
      16: invokevirtual #69                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      19: iload_0
      20: invokevirtual #72                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      23: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      26: astore_1
      27: new           #134                // class java/io/BufferedReader
      30: dup
      31: new           #136                // class java/io/FileReader
      34: dup
      35: new           #20                 // class java/lang/StringBuilder
      38: dup
      39: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
      42: aload_1
      43: invokevirtual #28                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      46: ldc_w         #355                // String .in
      49: invokevirtual #28                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      52: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      55: invokespecial #137                // Method java/io/FileReader."<init>":(Ljava/lang/String;)V
      58: checkcast     #139                // class java/io/Reader
      61: invokespecial #142                // Method java/io/BufferedReader."<init>":(Ljava/io/Reader;)V
      64: astore_2
      65: aload_2
      66: invokedynamic #374,  0            // InvokeDynamic #0:invoke:(Ljava/io/BufferedReader;)Lkotlin/jvm/functions/Function0;
      71: invokestatic  #380                // Method kotlin/sequences/SequencesKt.generateSequence:(Lkotlin/jvm/functions/Function0;)Lkotlin/sequences/Sequence;
      74: invokestatic  #384                // Method kotlin/sequences/SequencesKt.toList:(Lkotlin/sequences/Sequence;)Ljava/util/List;
      77: astore_3
      78: aload_3
      79: checkcast     #44                 // class java/lang/Iterable
      82: invokestatic  #388                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
      85: checkcast     #44                 // class java/lang/Iterable
      88: invokestatic  #392                // Method kotlin/collections/CollectionsKt.maxOrNull:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
      91: dup
      92: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      95: checkcast     #259                // class java/lang/Number
      98: invokevirtual #260                // Method java/lang/Number.intValue:()I
     101: iconst_1
     102: iadd
     103: istore        4
     105: new           #164                // class java/util/ArrayList
     108: dup
     109: iload         4
     111: invokespecial #173                // Method java/util/ArrayList."<init>":(I)V
     114: astore        6
     116: iconst_0
     117: istore        7
     119: iload         7
     121: iload         4
     123: if_icmpge     165
     126: iload         7
     128: istore        8
     130: aload         6
     132: iload         8
     134: istore        9
     136: astore        15
     138: iconst_0
     139: istore        10
     141: new           #164                // class java/util/ArrayList
     144: dup
     145: invokespecial #261                // Method java/util/ArrayList."<init>":()V
     148: checkcast     #38                 // class java/util/List
     151: nop
     152: aload         15
     154: swap
     155: invokevirtual #395                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     158: pop
     159: iinc          7, 1
     162: goto          119
     165: aload         6
     167: checkcast     #38                 // class java/util/List
     170: astore        5
     172: aload_3
     173: invokeinterface #396,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     178: astore        6
     180: aload         6
     182: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     187: ifeq          283
     190: aload         6
     192: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     197: checkcast     #38                 // class java/util/List
     200: astore        7
     202: aload         7
     204: iconst_0
     205: invokeinterface #399,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     210: checkcast     #259                // class java/lang/Number
     213: invokevirtual #260                // Method java/lang/Number.intValue:()I
     216: istore        8
     218: aload         7
     220: iconst_1
     221: invokeinterface #399,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     226: checkcast     #259                // class java/lang/Number
     229: invokevirtual #260                // Method java/lang/Number.intValue:()I
     232: istore        9
     234: aload         5
     236: iload         8
     238: invokeinterface #399,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     243: checkcast     #38                 // class java/util/List
     246: iload         9
     248: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     251: invokeinterface #266,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     256: pop
     257: aload         5
     259: iload         9
     261: invokeinterface #399,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     266: checkcast     #38                 // class java/util/List
     269: iload         8
     271: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     274: invokeinterface #266,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     279: pop
     280: goto          180
     283: aload_1
     284: aload         5
     286: checkcast     #44                 // class java/lang/Iterable
     289: astore        6
     291: astore        15
     293: iconst_0
     294: istore        7
     296: aload         6
     298: astore        8
     300: new           #164                // class java/util/ArrayList
     303: dup
     304: aload         6
     306: bipush        10
     308: invokestatic  #170                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     311: invokespecial #173                // Method java/util/ArrayList."<init>":(I)V
     314: checkcast     #175                // class java/util/Collection
     317: astore        9
     319: iconst_0
     320: istore        10
     322: aload         8
     324: invokeinterface #48,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     329: astore        11
     331: aload         11
     333: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     338: ifeq          384
     341: aload         11
     343: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     348: astore        12
     350: aload         9
     352: aload         12
     354: checkcast     #38                 // class java/util/List
     357: astore        13
     359: astore        16
     361: iconst_0
     362: istore        14
     364: aload         13
     366: checkcast     #175                // class java/util/Collection
     369: invokestatic  #187                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     372: aload         16
     374: swap
     375: invokeinterface #183,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     380: pop
     381: goto          331
     384: aload         9
     386: checkcast     #38                 // class java/util/List
     389: nop
     390: aload         15
     392: swap
     393: invokestatic  #401                // Method solve:(Ljava/lang/String;Ljava/util/List;)V
     396: iinc          0, 1
     399: goto          2
     402: return

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

  private static final double solve$eval(java.util.List<int[]>, int, int, int[]);
    Code:
       0: new           #256                // class java/util/LinkedHashMap
       3: dup
       4: invokespecial #257                // Method java/util/LinkedHashMap."<init>":()V
       7: checkcast     #117                // class java/util/Map
      10: astore        4
      12: iconst_0
      13: istore        5
      15: aload_3
      16: arraylength
      17: istore        6
      19: iload         5
      21: iload         6
      23: if_icmpge     78
      26: aload_3
      27: iload         5
      29: iaload
      30: istore        7
      32: iload         7
      34: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      37: aload         4
      39: swap
      40: invokeinterface #417,  2          // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z
      45: ifne          72
      48: iload         7
      50: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: aload         4
      55: swap
      56: aload         4
      58: invokeinterface #418,  1          // InterfaceMethod java/util/Map.size:()I
      63: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      66: invokeinterface #265,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      71: pop
      72: iinc          5, 1
      75: goto          19
      78: aload         4
      80: invokeinterface #418,  1          // InterfaceMethod java/util/Map.size:()I
      85: istore        5
      87: iload         5
      89: newarray       int
      91: astore        6
      93: iload         5
      95: newarray       int
      97: astore        7
      99: iload         5
     101: newarray       int
     103: astore        8
     105: iload         5
     107: newarray       int
     109: astore        9
     111: iconst_0
     112: istore        10
     114: aload_0
     115: checkcast     #175                // class java/util/Collection
     118: invokeinterface #419,  1          // InterfaceMethod java/util/Collection.size:()I
     123: istore        11
     125: iload         10
     127: iload         11
     129: if_icmpge     316
     132: aload         4
     134: aload_3
     135: iload         10
     137: iaload
     138: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     141: invokeinterface #121,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     146: dup
     147: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     150: checkcast     #259                // class java/lang/Number
     153: invokevirtual #260                // Method java/lang/Number.intValue:()I
     156: istore        12
     158: aload         8
     160: iload         12
     162: iaload
     163: istore        13
     165: aload         8
     167: iload         12
     169: iload         13
     171: iconst_1
     172: iadd
     173: iastore
     174: aload         9
     176: iload         12
     178: aload         9
     180: iload         12
     182: iaload
     183: aload_0
     184: iload         10
     186: invokeinterface #399,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     191: checkcast     #60                 // class "[I"
     194: arraylength
     195: iadd
     196: iastore
     197: aload_0
     198: iload         10
     200: invokeinterface #399,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     205: checkcast     #60                 // class "[I"
     208: astore        14
     210: iconst_0
     211: istore        15
     213: aload         14
     215: arraylength
     216: istore        16
     218: iload         15
     220: iload         16
     222: if_icmpge     310
     225: aload         14
     227: iload         15
     229: iaload
     230: istore        17
     232: aload         4
     234: aload_3
     235: iload         17
     237: iaload
     238: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     241: invokeinterface #121,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     246: checkcast     #95                 // class java/lang/Integer
     249: iload         12
     251: istore        18
     253: dup
     254: ifnonnull     261
     257: pop
     258: goto          288
     261: invokevirtual #124                // Method java/lang/Integer.intValue:()I
     264: iload         18
     266: if_icmpne     288
     269: aload         6
     271: iload         12
     273: iaload
     274: istore        18
     276: aload         6
     278: iload         12
     280: iload         18
     282: iconst_1
     283: iadd
     284: iastore
     285: goto          304
     288: aload         7
     290: iload         12
     292: iaload
     293: istore        18
     295: aload         7
     297: iload         12
     299: iload         18
     301: iconst_1
     302: iadd
     303: iastore
     304: iinc          15, 1
     307: goto          218
     310: iinc          10, 1
     313: goto          125
     316: aload         6
     318: invokestatic  #254                // Method kotlin/collections/ArraysKt.getIndices:([I)Lkotlin/ranges/IntRange;
     321: checkcast     #44                 // class java/lang/Iterable
     324: astore        12
     326: dconst_0
     327: dstore        13
     329: aload         12
     331: invokeinterface #48,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     336: astore        15
     338: aload         15
     340: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     345: ifeq          413
     348: aload         15
     350: checkcast     #421                // class kotlin/collections/IntIterator
     353: invokevirtual #424                // Method kotlin/collections/IntIterator.nextInt:()I
     356: istore        16
     358: dload         13
     360: iload         16
     362: istore        17
     364: dstore        21
     366: iconst_0
     367: istore        18
     369: aload         6
     371: iload         17
     373: iaload
     374: i2d
     375: ldc2_w        #425                // double 0.5d
     378: dmul
     379: iload_2
     380: i2d
     381: ddiv
     382: aload         9
     384: iload         17
     386: iaload
     387: i2d
     388: ldc2_w        #425                // double 0.5d
     391: dmul
     392: iload_2
     393: i2d
     394: ddiv
     395: iconst_2
     396: i2d
     397: invokestatic  #432                // Method java/lang/Math.pow:(DD)D
     400: dsub
     401: dstore        23
     403: dload         21
     405: dload         23
     407: dadd
     408: dstore        13
     410: goto          338
     413: dload         13
     415: dstore        10
     417: ldc2_w        #425                // double 0.5d
     420: aload         6
     422: invokestatic  #254                // Method kotlin/collections/ArraysKt.getIndices:([I)Lkotlin/ranges/IntRange;
     425: checkcast     #44                 // class java/lang/Iterable
     428: astore        14
     430: dstore        21
     432: dconst_0
     433: dstore        15
     435: aload         14
     437: invokeinterface #48,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     442: astore        17
     444: aload         17
     446: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     451: ifeq          521
     454: aload         17
     456: checkcast     #421                // class kotlin/collections/IntIterator
     459: invokevirtual #424                // Method kotlin/collections/IntIterator.nextInt:()I
     462: istore        18
     464: dload         15
     466: iload         18
     468: istore        19
     470: dstore        23
     472: iconst_0
     473: istore        20
     475: aload         8
     477: iload         19
     479: iaload
     480: iconst_1
     481: if_icmpne     488
     484: dconst_1
     485: goto          509
     488: aload         6
     490: iload         19
     492: iaload
     493: i2d
     494: aload         8
     496: iload         19
     498: iaload
     499: aload         8
     501: iload         19
     503: iaload
     504: iconst_1
     505: isub
     506: imul
     507: i2d
     508: ddiv
     509: dstore        25
     511: dload         23
     513: dload         25
     515: dadd
     516: dstore        15
     518: goto          444
     521: dload         15
     523: dstore        23
     525: dload         21
     527: dload         23
     529: iload         5
     531: i2d
     532: ddiv
     533: iload         5
     535: i2d
     536: iload_1
     537: i2d
     538: ddiv
     539: dsub
     540: dmul
     541: dstore        12
     543: iconst_1
     544: i2d
     545: dload         10
     547: dadd
     548: dload         12
     550: dadd
     551: ldc2_w        #433                // double 100000.0d
     554: dmul
     555: dreturn

  private static final int[] solve$randomCenters(java.util.List<int[]>, kotlin.random.Random, int);
    Code:
       0: aload_0
       1: checkcast     #175                // class java/util/Collection
       4: invokestatic  #452                // Method kotlin/collections/CollectionsKt.getIndices:(Ljava/util/Collection;)Lkotlin/ranges/IntRange;
       7: checkcast     #44                 // class java/lang/Iterable
      10: aload_1
      11: invokestatic  #456                // Method kotlin/collections/CollectionsKt.shuffled:(Ljava/lang/Iterable;Lkotlin/random/Random;)Ljava/util/List;
      14: checkcast     #44                 // class java/lang/Iterable
      17: iload_2
      18: invokestatic  #460                // Method kotlin/collections/CollectionsKt.take:(Ljava/lang/Iterable;I)Ljava/util/List;
      21: checkcast     #175                // class java/util/Collection
      24: invokestatic  #187                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
      27: areturn

  private static final int[] solve$byCenters(int, java.util.List<int[]>, int[]);
    Code:
       0: iload_0
       1: iconst_1
       2: iadd
       3: istore_3
       4: iload_0
       5: newarray       int
       7: astore        4
       9: iconst_0
      10: istore        6
      12: iload_0
      13: newarray       int
      15: astore        7
      17: iload         6
      19: iload_0
      20: if_icmpge     39
      23: iload         6
      25: istore        8
      27: aload         7
      29: iload         8
      31: iload_3
      32: iastore
      33: iinc          6, 1
      36: goto          17
      39: aload         7
      41: astore        5
      43: iconst_0
      44: istore        7
      46: iload_0
      47: newarray       int
      49: astore        8
      51: iload         7
      53: iload_0
      54: if_icmpge     73
      57: iload         7
      59: istore        9
      61: aload         8
      63: iload         9
      65: iload_3
      66: iastore
      67: iinc          7, 1
      70: goto          51
      73: aload         8
      75: astore        6
      77: iconst_0
      78: istore        7
      80: iconst_0
      81: istore        8
      83: iconst_0
      84: istore        9
      86: aload_2
      87: arraylength
      88: istore        10
      90: iload         9
      92: iload         10
      94: if_icmpge     132
      97: aload_2
      98: iload         9
     100: iaload
     101: istore        11
     103: aload         5
     105: iload         11
     107: iconst_0
     108: iastore
     109: aload         6
     111: iload         11
     113: iload         11
     115: iastore
     116: aload         4
     118: iload         8
     120: iinc          8, 1
     123: iload         11
     125: iastore
     126: iinc          9, 1
     129: goto          90
     132: iload         7
     134: iload         8
     136: if_icmpge     231
     139: aload         4
     141: iload         7
     143: iinc          7, 1
     146: iaload
     147: istore        9
     149: aload_1
     150: iload         9
     152: invokeinterface #399,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     157: checkcast     #60                 // class "[I"
     160: astore        10
     162: iconst_0
     163: istore        11
     165: aload         10
     167: arraylength
     168: istore        12
     170: iload         11
     172: iload         12
     174: if_icmpge     132
     177: aload         10
     179: iload         11
     181: iaload
     182: istore        13
     184: aload         5
     186: iload         13
     188: iaload
     189: iload_3
     190: if_icmplt     225
     193: aload         5
     195: iload         13
     197: aload         5
     199: iload         9
     201: iaload
     202: iconst_1
     203: iadd
     204: iastore
     205: aload         6
     207: iload         13
     209: aload         6
     211: iload         9
     213: iaload
     214: iastore
     215: aload         4
     217: iload         8
     219: iinc          8, 1
     222: iload         13
     224: iastore
     225: iinc          11, 1
     228: goto          170
     231: aload         6
     233: areturn

  private static final int solve$bestParts(java.util.List<int[]>, kotlin.random.Random, int, int);
    Code:
       0: new           #472                // class kotlin/ranges/IntRange
       3: dup
       4: sipush        10000
       7: ldc_w         #473                // int 60000
      10: invokespecial #476                // Method kotlin/ranges/IntRange."<init>":(II)V
      13: checkcast     #478                // class kotlin/ranges/IntProgression
      16: sipush        1000
      19: invokestatic  #484                // Method kotlin/ranges/RangesKt.step:(Lkotlin/ranges/IntProgression;I)Lkotlin/ranges/IntProgression;
      22: checkcast     #44                 // class java/lang/Iterable
      25: astore        4
      27: iconst_0
      28: istore        5
      30: aload         4
      32: invokeinterface #48,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      37: astore        6
      39: aload         6
      41: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      46: ifne          53
      49: aconst_null
      50: goto          402
      53: aload         6
      55: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      60: astore        7
      62: aload         6
      64: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      69: ifne          77
      72: aload         7
      74: goto          402
      77: aload         7
      79: checkcast     #259                // class java/lang/Number
      82: invokevirtual #260                // Method java/lang/Number.intValue:()I
      85: istore        8
      87: iconst_0
      88: istore        10
      90: bipush        8
      92: istore        11
      94: new           #164                // class java/util/ArrayList
      97: dup
      98: iload         11
     100: invokespecial #173                // Method java/util/ArrayList."<init>":(I)V
     103: astore        12
     105: iconst_0
     106: istore        13
     108: iload         13
     110: iload         11
     112: if_icmpge     164
     115: iload         13
     117: istore        14
     119: aload         12
     121: iload         14
     123: istore        15
     125: astore        16
     127: iconst_0
     128: istore        17
     130: aload_0
     131: iload_2
     132: iload_3
     133: iload_2
     134: aload_0
     135: aload_0
     136: aload_1
     137: iload         8
     139: invokestatic  #486                // Method solve$randomCenters:(Ljava/util/List;Lkotlin/random/Random;I)[I
     142: invokestatic  #194                // Method solve$byCenters:(ILjava/util/List;[I)[I
     145: invokestatic  #205                // Method solve$eval:(Ljava/util/List;II[I)D
     148: invokestatic  #491                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     151: aload         16
     153: swap
     154: invokevirtual #395                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     157: pop
     158: iinc          13, 1
     161: goto          108
     164: aload         12
     166: checkcast     #38                 // class java/util/List
     169: checkcast     #44                 // class java/lang/Iterable
     172: invokestatic  #494                // Method kotlin/collections/CollectionsKt.maxOrNull:(Ljava/lang/Iterable;)Ljava/lang/Double;
     175: dup
     176: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     179: invokevirtual #498                // Method java/lang/Double.doubleValue:()D
     182: dstore        18
     184: new           #20                 // class java/lang/StringBuilder
     187: dup
     188: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
     191: iload         8
     193: invokevirtual #72                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     196: bipush        32
     198: invokevirtual #69                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     201: dload         18
     203: invokevirtual #77                 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
     206: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     209: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     212: swap
     213: invokevirtual #89                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     216: dload         18
     218: dstore        20
     220: aload         6
     222: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     227: astore        22
     229: aload         22
     231: checkcast     #259                // class java/lang/Number
     234: invokevirtual #260                // Method java/lang/Number.intValue:()I
     237: istore        8
     239: iconst_0
     240: istore        10
     242: bipush        8
     244: istore        11
     246: new           #164                // class java/util/ArrayList
     249: dup
     250: iload         11
     252: invokespecial #173                // Method java/util/ArrayList."<init>":(I)V
     255: astore        12
     257: iconst_0
     258: istore        13
     260: iload         13
     262: iload         11
     264: if_icmpge     316
     267: iload         13
     269: istore        14
     271: aload         12
     273: iload         14
     275: istore        15
     277: astore        16
     279: iconst_0
     280: istore        17
     282: aload_0
     283: iload_2
     284: iload_3
     285: iload_2
     286: aload_0
     287: aload_0
     288: aload_1
     289: iload         8
     291: invokestatic  #486                // Method solve$randomCenters:(Ljava/util/List;Lkotlin/random/Random;I)[I
     294: invokestatic  #194                // Method solve$byCenters:(ILjava/util/List;[I)[I
     297: invokestatic  #205                // Method solve$eval:(Ljava/util/List;II[I)D
     300: invokestatic  #491                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     303: aload         16
     305: swap
     306: invokevirtual #395                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     309: pop
     310: iinc          13, 1
     313: goto          260
     316: aload         12
     318: checkcast     #38                 // class java/util/List
     321: checkcast     #44                 // class java/lang/Iterable
     324: invokestatic  #494                // Method kotlin/collections/CollectionsKt.maxOrNull:(Ljava/lang/Iterable;)Ljava/lang/Double;
     327: dup
     328: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     331: invokevirtual #498                // Method java/lang/Double.doubleValue:()D
     334: dstore        18
     336: new           #20                 // class java/lang/StringBuilder
     339: dup
     340: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
     343: iload         8
     345: invokevirtual #72                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     348: bipush        32
     350: invokevirtual #69                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     353: dload         18
     355: invokevirtual #77                 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
     358: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     361: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     364: swap
     365: invokevirtual #89                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     368: dload         18
     370: dstore        8
     372: dload         20
     374: dload         8
     376: invokestatic  #502                // Method java/lang/Double.compare:(DD)I
     379: ifge          390
     382: aload         22
     384: astore        7
     386: dload         8
     388: dstore        20
     390: aload         6
     392: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     397: ifne          220
     400: aload         7
     402: dup
     403: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     406: checkcast     #259                // class java/lang/Number
     409: invokevirtual #260                // Method java/lang/Number.intValue:()I
     412: ireturn

  private static final void solve$improve1(kotlin.random.Random, int[], int, kotlin.jvm.internal.Ref$DoubleRef, kotlin.jvm.internal.Ref$ObjectRef<int[]>, java.util.List<int[]>, int);
    Code:
       0: aload_0
       1: aload_1
       2: arraylength
       3: invokevirtual #516                // Method kotlin/random/Random.nextInt:(I)I
       6: istore        7
       8: aload_1
       9: iload         7
      11: iaload
      12: istore        8
      14: aload_1
      15: invokestatic  #520                // Method kotlin/collections/ArraysKt.toMutableSet:([I)Ljava/util/Set;
      18: astore        9
      20: aload         9
      22: iload         8
      24: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      27: invokeinterface #525,  2          // InterfaceMethod java/util/Set.remove:(Ljava/lang/Object;)Z
      32: pop
      33: nop
      34: aload_1
      35: iload         7
      37: aload_0
      38: iload_2
      39: invokevirtual #516                // Method kotlin/random/Random.nextInt:(I)I
      42: iastore
      43: aload         9
      45: aload_1
      46: iload         7
      48: iaload
      49: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      52: invokeinterface #528,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
      57: ifne          33
      60: aload         9
      62: aload_1
      63: iload         7
      65: iaload
      66: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      69: invokeinterface #529,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
      74: pop
      75: nop
      76: iload_2
      77: aload         5
      79: aload_1
      80: invokestatic  #194                // Method solve$byCenters:(ILjava/util/List;[I)[I
      83: astore        10
      85: aload         5
      87: iload_2
      88: iload         6
      90: aload         10
      92: invokestatic  #205                // Method solve$eval:(Ljava/util/List;II[I)D
      95: dstore        11
      97: new           #20                 // class java/lang/StringBuilder
     100: dup
     101: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
     104: aload_3
     105: getfield      #208                // Field kotlin/jvm/internal/Ref$DoubleRef.element:D
     108: invokevirtual #77                 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
     111: ldc_w         #531                // String  ->
     114: invokevirtual #28                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     117: dload         11
     119: invokevirtual #77                 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
     122: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     125: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     128: swap
     129: invokevirtual #534                // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     132: dload         11
     134: aload_3
     135: getfield      #208                // Field kotlin/jvm/internal/Ref$DoubleRef.element:D
     138: dcmpl
     139: ifle          168
     142: aload_3
     143: dload         11
     145: putfield      #208                // Field kotlin/jvm/internal/Ref$DoubleRef.element:D
     148: aload         4
     150: aload         10
     152: putfield      #198                // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     155: ldc_w         #536                // String  YES
     158: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     161: swap
     162: invokevirtual #534                // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     165: goto          202
     168: aload         9
     170: aload_1
     171: iload         7
     173: iaload
     174: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     177: invokeinterface #525,  2          // InterfaceMethod java/util/Set.remove:(Ljava/lang/Object;)Z
     182: pop
     183: aload_1
     184: iload         7
     186: iload         8
     188: iastore
     189: aload         9
     191: iload         8
     193: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     196: invokeinterface #529,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
     201: pop
     202: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     205: invokevirtual #538                // Method java/io/PrintStream.println:()V
     208: return

  private static final void solve$improve2(int[], kotlin.random.Random, int, kotlin.jvm.internal.Ref$DoubleRef, kotlin.jvm.internal.Ref$ObjectRef<int[]>, java.util.List<int[]>, int);
    Code:
       0: aload_0
       1: invokevirtual #548                // Method java/lang/Object.clone:()Ljava/lang/Object;
       4: checkcast     #60                 // class "[I"
       7: astore        7
       9: sipush        256
      12: istore        8
      14: iconst_0
      15: istore        9
      17: aload_0
      18: arraylength
      19: istore        10
      21: iload         9
      23: iload         10
      25: if_icmpge     48
      28: aload_1
      29: iload         8
      31: invokevirtual #516                // Method kotlin/random/Random.nextInt:(I)I
      34: ifne          42
      37: aload_0
      38: iload         9
      40: iconst_m1
      41: iastore
      42: iinc          9, 1
      45: goto          21
      48: aload_0
      49: invokestatic  #520                // Method kotlin/collections/ArraysKt.toMutableSet:([I)Ljava/util/Set;
      52: astore        9
      54: iconst_0
      55: istore        10
      57: aload_0
      58: arraylength
      59: istore        11
      61: iload         10
      63: iload         11
      65: if_icmpge     125
      68: aload_0
      69: iload         10
      71: iaload
      72: iconst_m1
      73: if_icmpne     119
      76: nop
      77: aload_0
      78: iload         10
      80: aload_1
      81: iload_2
      82: invokevirtual #516                // Method kotlin/random/Random.nextInt:(I)I
      85: iastore
      86: aload         9
      88: aload_0
      89: iload         10
      91: iaload
      92: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      95: invokeinterface #528,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     100: ifne          76
     103: aload         9
     105: aload_0
     106: iload         10
     108: iaload
     109: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     112: invokeinterface #529,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
     117: pop
     118: nop
     119: iinc          10, 1
     122: goto          61
     125: iload_2
     126: aload         5
     128: aload_0
     129: invokestatic  #194                // Method solve$byCenters:(ILjava/util/List;[I)[I
     132: astore        10
     134: aload         5
     136: iload_2
     137: iload         6
     139: aload         10
     141: invokestatic  #205                // Method solve$eval:(Ljava/util/List;II[I)D
     144: dstore        11
     146: new           #20                 // class java/lang/StringBuilder
     149: dup
     150: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
     153: aload_3
     154: getfield      #208                // Field kotlin/jvm/internal/Ref$DoubleRef.element:D
     157: invokevirtual #77                 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
     160: ldc_w         #531                // String  ->
     163: invokevirtual #28                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     166: dload         11
     168: invokevirtual #77                 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
     171: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     174: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     177: swap
     178: invokevirtual #534                // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     181: dload         11
     183: aload_3
     184: getfield      #208                // Field kotlin/jvm/internal/Ref$DoubleRef.element:D
     187: dcmpl
     188: ifle          217
     191: aload_3
     192: dload         11
     194: putfield      #208                // Field kotlin/jvm/internal/Ref$DoubleRef.element:D
     197: aload         4
     199: aload         10
     201: putfield      #198                // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     204: ldc_w         #536                // String  YES
     207: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     210: swap
     211: invokevirtual #534                // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     214: goto          246
     217: iconst_0
     218: istore        13
     220: aload_0
     221: arraylength
     222: istore        14
     224: iload         13
     226: iload         14
     228: if_icmpge     246
     231: aload_0
     232: iload         13
     234: aload         7
     236: iload         13
     238: iaload
     239: iastore
     240: iinc          13, 1
     243: goto          224
     246: new           #20                 // class java/lang/StringBuilder
     249: dup
     250: invokespecial #24                 // Method java/lang/StringBuilder."<init>":()V
     253: bipush        32
     255: invokevirtual #69                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     258: iload         8
     260: invokevirtual #72                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     263: invokevirtual #34                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     266: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     269: swap
     270: invokevirtual #534                // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     273: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     276: invokevirtual #538                // Method java/io/PrintStream.println:()V
     279: return

  private static final marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Centers solve$simulatedAnnealing(marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Centers, marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Settings, java.util.Random);
    Code:
       0: aload_0
       1: astore_3
       2: aload_3
       3: dup
       4: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
       7: invokevirtual #554                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers.energy:()D
      10: dstore        4
      12: ldc2_w        #555                // double 1.7976931348623157E308d
      15: dstore        6
      17: aconst_null
      18: astore        8
      20: iconst_0
      21: istore        9
      23: aload_1
      24: invokevirtual #559                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings.getGlobalIterations:()I
      27: istore        10
      29: iload         9
      31: iload         10
      33: if_icmpge     313
      36: iload         9
      38: ifle          69
      41: aload_2
      42: invokevirtual #564                // Method java/util/Random.nextDouble:()D
      45: aload_1
      46: invokevirtual #567                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings.getProbStartWithPrevious:()D
      49: dcmpl
      50: iflt          69
      53: aload_3
      54: dup
      55: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      58: aload_2
      59: invokevirtual #571                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers.randomInstance:(Ljava/util/Random;)Lmarathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers;
      62: astore_3
      63: aload_3
      64: invokevirtual #554                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers.energy:()D
      67: dstore        4
      69: aload_1
      70: invokevirtual #574                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings.getIterations:()I
      73: istore        11
      75: iconst_1
      76: istore        12
      78: iconst_0
      79: istore        13
      81: nop
      82: dload         4
      84: dload         6
      86: dcmpg
      87: ifge          132
      90: dload         4
      92: dstore        6
      94: aload_3
      95: astore        8
      97: getstatic     #83                 // Field java/lang/System.out:Ljava/io/PrintStream;
     100: dload         6
     102: invokevirtual #577                // Method java/io/PrintStream.println:(D)V
     105: dload         6
     107: aload_1
     108: invokevirtual #580                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings.getDesiredEnergy:()D
     111: dcmpg
     112: ifgt          118
     115: aload         8
     117: areturn
     118: iload         11
     120: iload         12
     122: aload_1
     123: invokevirtual #574                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings.getIterations:()I
     126: iadd
     127: invokestatic  #584                // Method java/lang/Math.max:(II)I
     130: istore        11
     132: iload         12
     134: iload         11
     136: if_icmple     142
     139: goto          307
     142: dconst_0
     143: dstore        14
     145: aconst_null
     146: astore        16
     148: aload_3
     149: dup
     150: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     153: invokevirtual #588                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers.vary:()Lmarathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers;
     156: dup
     157: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     160: astore        16
     162: aload         16
     164: invokevirtual #554                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers.energy:()D
     167: dstore        14
     169: dload         14
     171: dload         4
     173: dsub
     174: dstore        17
     176: iconst_0
     177: istore        19
     179: dload         17
     181: dconst_0
     182: dcmpg
     183: ifge          195
     186: iconst_1
     187: istore        19
     189: iconst_0
     190: istore        13
     192: goto          247
     195: iinc          13, 1
     198: iload         13
     200: aload_1
     201: invokevirtual #591                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings.getRecessionLimit:()I
     204: if_icmpne     210
     207: goto          307
     210: ldc2_w        #592                // double -1.0d
     213: dload         17
     215: dmul
     216: iload         12
     218: i2d
     219: dmul
     220: aload_1
     221: invokevirtual #596                // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Settings.getTemp0:()D
     224: ddiv
     225: invokestatic  #600                // Method java/lang/Math.exp:(D)D
     228: dstore        20
     230: aload_2
     231: invokevirtual #564                // Method java/util/Random.nextDouble:()D
     234: dload         20
     236: dcmpg
     237: ifge          244
     240: iconst_1
     241: goto          245
     244: iconst_0
     245: istore        19
     247: iload         19
     249: ifeq          301
     252: aload         16
     254: ifnull        261
     257: iconst_1
     258: goto          262
     261: iconst_0
     262: istore        20
     264: getstatic     #606                // Field kotlin/_Assertions.ENABLED:Z
     267: ifeq          290
     270: iload         20
     272: ifne          290
     275: ldc_w         #608                // String Assertion failed
     278: astore        21
     280: new           #610                // class java/lang/AssertionError
     283: dup
     284: aload         21
     286: invokespecial #612                // Method java/lang/AssertionError."<init>":(Ljava/lang/Object;)V
     289: athrow
     290: aload         16
     292: dup
     293: invokestatic  #394                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     296: astore_3
     297: dload         14
     299: dstore        4
     301: iinc          12, 1
     304: goto          81
     307: iinc          9, 1
     310: goto          29
     313: aload         8
     315: areturn

  private static final java.util.List main$lambda$11(java.io.BufferedReader);
    Code:
       0: aload_0
       1: invokevirtual #145                // Method java/io/BufferedReader.readLine:()Ljava/lang/String;
       4: dup
       5: ifnull        134
       8: checkcast     #152                // class java/lang/CharSequence
      11: iconst_1
      12: anewarray     #154                // class java/lang/String
      15: astore_1
      16: aload_1
      17: iconst_0
      18: ldc           #156                // String
      20: aastore
      21: aload_1
      22: iconst_0
      23: iconst_0
      24: bipush        6
      26: aconst_null
      27: invokestatic  #162                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      30: dup
      31: ifnull        134
      34: checkcast     #44                 // class java/lang/Iterable
      37: astore_1
      38: iconst_0
      39: istore_2
      40: aload_1
      41: astore_3
      42: new           #164                // class java/util/ArrayList
      45: dup
      46: aload_1
      47: bipush        10
      49: invokestatic  #170                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      52: invokespecial #173                // Method java/util/ArrayList."<init>":(I)V
      55: checkcast     #175                // class java/util/Collection
      58: astore        4
      60: iconst_0
      61: istore        5
      63: aload_3
      64: invokeinterface #48,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      69: astore        6
      71: aload         6
      73: invokeinterface #54,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      78: ifeq          125
      81: aload         6
      83: invokeinterface #58,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      88: astore        7
      90: aload         4
      92: aload         7
      94: checkcast     #154                // class java/lang/String
      97: astore        8
      99: astore        10
     101: iconst_0
     102: istore        9
     104: aload         8
     106: invokestatic  #179                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     109: nop
     110: invokestatic  #99                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     113: aload         10
     115: swap
     116: invokeinterface #183,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     121: pop
     122: goto          71
     125: aload         4
     127: checkcast     #38                 // class java/util/List
     130: nop
     131: goto          136
     134: pop
     135: aconst_null
     136: areturn

  public static final double access$solve$eval(java.util.List, int, int, int[]);
    Code:
       0: aload_0
       1: iload_1
       2: iload_2
       3: aload_3
       4: invokestatic  #205                // Method solve$eval:(Ljava/util/List;II[I)D
       7: dreturn

  public static final int[] access$solve$byCenters(int, java.util.List, int[]);
    Code:
       0: iload_0
       1: aload_1
       2: aload_2
       3: invokestatic  #194                // Method solve$byCenters:(ILjava/util/List;[I)[I
       6: areturn
}

Compiled from "Comparisons.kt"
public final class marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$$inlined$sortedBy$1<T> implements java.util.Comparator {
  public marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$$inlined$sortedBy$1();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_1
       1: checkcast     #23                 // class java/util/List
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: invokeinterface #27,  1           // InterfaceMethod java/util/List.size:()I
      14: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      17: checkcast     #35                 // class java/lang/Comparable
      20: aload_2
      21: checkcast     #23                 // class java/util/List
      24: astore_3
      25: astore        5
      27: iconst_0
      28: istore        4
      30: aload_3
      31: invokeinterface #27,  1           // InterfaceMethod java/util/List.size:()I
      36: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      39: aload         5
      41: swap
      42: checkcast     #35                 // class java/lang/Comparable
      45: invokestatic  #41                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      48: ireturn
}

Compiled from "a.kt"
public final class marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Centers {
  private final int[] a;

  private final double energy;

  final int $n;

  final java.util.List<int[]> $nei;

  final int $edges;

  final int $parts;

  final kotlin.random.Random $r;

  public marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Centers(int, java.util.List<int[]>, int, int, kotlin.random.Random, int[]);
    Code:
       0: aload         6
       2: ldc           #9                  // String a
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: iload_1
       9: putfield      #19                 // Field $n:I
      12: aload_0
      13: aload_2
      14: putfield      #23                 // Field $nei:Ljava/util/List;
      17: aload_0
      18: iload_3
      19: putfield      #26                 // Field $edges:I
      22: aload_0
      23: iload         4
      25: putfield      #29                 // Field $parts:I
      28: aload_0
      29: aload         5
      31: putfield      #33                 // Field $r:Lkotlin/random/Random;
      34: aload_0
      35: invokespecial #36                 // Method java/lang/Object."<init>":()V
      38: aload_0
      39: aload         6
      41: putfield      #39                 // Field a:[I
      44: aload_0
      45: aload_2
      46: iload_1
      47: iload_3
      48: iload_1
      49: aload_2
      50: aload_0
      51: getfield      #39                 // Field a:[I
      54: invokestatic  #45                 // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt.access$solve$byCenters:(ILjava/util/List;[I)[I
      57: invokestatic  #49                 // Method marathons/icpcchallenge/y2020_huaweiGraphMining/AKt.access$solve$eval:(Ljava/util/List;II[I)D
      60: putfield      #53                 // Field energy:D
      63: return

  public final int[] getA();
    Code:
       0: aload_0
       1: getfield      #39                 // Field a:[I
       4: areturn

  public final double energy();
    Code:
       0: aload_0
       1: getfield      #53                 // Field energy:D
       4: dreturn

  public final marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Centers randomInstance(java.util.Random);
    Code:
       0: aload_1
       1: ldc           #62                 // String random
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #64                 // class java/util/ArrayList
       9: dup
      10: invokespecial #65                 // Method java/util/ArrayList."<init>":()V
      13: astore_2
      14: iconst_0
      15: istore_3
      16: iload_3
      17: aload_0
      18: getfield      #19                 // Field $n:I
      21: if_icmpge     39
      24: aload_2
      25: iload_3
      26: invokestatic  #71                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      29: invokevirtual #75                 // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
      32: pop
      33: iinc          3, 1
      36: goto          16
      39: aload_2
      40: checkcast     #77                 // class java/util/List
      43: aload_1
      44: invokestatic  #83                 // Method java/util/Collections.shuffle:(Ljava/util/List;Ljava/util/Random;)V
      47: iconst_0
      48: istore_3
      49: iload_3
      50: aload_0
      51: getfield      #29                 // Field $parts:I
      54: if_icmpge     86
      57: aload_0
      58: getfield      #39                 // Field a:[I
      61: iload_3
      62: aload_2
      63: iload_3
      64: invokevirtual #87                 // Method java/util/ArrayList.get:(I)Ljava/lang/Object;
      67: dup
      68: ldc           #89                 // String get(...)
      70: invokestatic  #92                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      73: checkcast     #94                 // class java/lang/Number
      76: invokevirtual #98                 // Method java/lang/Number.intValue:()I
      79: iastore
      80: iinc          3, 1
      83: goto          49
      86: new           #2                  // class marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers
      89: dup
      90: aload_0
      91: getfield      #19                 // Field $n:I
      94: aload_0
      95: getfield      #23                 // Field $nei:Ljava/util/List;
      98: aload_0
      99: getfield      #26                 // Field $edges:I
     102: aload_0
     103: getfield      #29                 // Field $parts:I
     106: aload_0
     107: getfield      #33                 // Field $r:Lkotlin/random/Random;
     110: aload_0
     111: getfield      #39                 // Field a:[I
     114: invokespecial #100                // Method "<init>":(ILjava/util/List;IILkotlin/random/Random;[I)V
     117: areturn

  public final marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Centers vary();
    Code:
       0: aload_0
       1: getfield      #39                 // Field a:[I
       4: invokevirtual #110                // Method java/lang/Object.clone:()Ljava/lang/Object;
       7: checkcast     #111                // class "[I"
      10: astore_1
      11: sipush        256
      14: istore_2
      15: iconst_0
      16: istore_3
      17: aload_1
      18: arraylength
      19: istore        4
      21: iload_3
      22: iload         4
      24: if_icmpge     48
      27: aload_0
      28: getfield      #33                 // Field $r:Lkotlin/random/Random;
      31: iload_2
      32: invokevirtual #117                // Method kotlin/random/Random.nextInt:(I)I
      35: ifne          42
      38: aload_1
      39: iload_3
      40: iconst_m1
      41: iastore
      42: iinc          3, 1
      45: goto          21
      48: aload_1
      49: invokestatic  #123                // Method kotlin/collections/ArraysKt.toMutableSet:([I)Ljava/util/Set;
      52: astore_3
      53: iconst_0
      54: istore        4
      56: aload_1
      57: arraylength
      58: istore        5
      60: iload         4
      62: iload         5
      64: if_icmpge     128
      67: aload_1
      68: iload         4
      70: iaload
      71: iconst_m1
      72: if_icmpne     122
      75: nop
      76: aload_1
      77: iload         4
      79: aload_0
      80: getfield      #33                 // Field $r:Lkotlin/random/Random;
      83: aload_0
      84: getfield      #19                 // Field $n:I
      87: invokevirtual #117                // Method kotlin/random/Random.nextInt:(I)I
      90: iastore
      91: aload_3
      92: aload_1
      93: iload         4
      95: iaload
      96: invokestatic  #71                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      99: invokeinterface #128,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     104: ifne          75
     107: aload_3
     108: aload_1
     109: iload         4
     111: iaload
     112: invokestatic  #71                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     115: invokeinterface #129,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
     120: pop
     121: nop
     122: iinc          4, 1
     125: goto          60
     128: new           #2                  // class marathons/icpcchallenge/y2020_huaweiGraphMining/AKt$solve$Centers
     131: dup
     132: aload_0
     133: getfield      #19                 // Field $n:I
     136: aload_0
     137: getfield      #23                 // Field $nei:Ljava/util/List;
     140: aload_0
     141: getfield      #26                 // Field $edges:I
     144: aload_0
     145: getfield      #29                 // Field $parts:I
     148: aload_0
     149: getfield      #33                 // Field $r:Lkotlin/random/Random;
     152: aload_1
     153: invokespecial #100                // Method "<init>":(ILjava/util/List;IILkotlin/random/Random;[I)V
     156: areturn
}

Compiled from "a.kt"
public final class marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Settings {
  private int globalIterations;

  private int iterations;

  private double probStartWithPrevious;

  private int recessionLimit;

  private double desiredEnergy;

  private double temp0;

  public marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Settings(int, int, double, int, double, double);
    Code:
       0: aload_0
       1: invokespecial #9                  // Method java/lang/Object."<init>":()V
       4: aload_0
       5: iload_1
       6: putfield      #13                 // Field globalIterations:I
       9: aload_0
      10: iload_2
      11: putfield      #16                 // Field iterations:I
      14: aload_0
      15: dload_3
      16: putfield      #20                 // Field probStartWithPrevious:D
      19: aload_0
      20: iload         5
      22: putfield      #23                 // Field recessionLimit:I
      25: aload_0
      26: dload         6
      28: putfield      #26                 // Field desiredEnergy:D
      31: aload_0
      32: dload         8
      34: putfield      #29                 // Field temp0:D
      37: return

  public marathons.icpcchallenge.y2020_huaweiGraphMining.AKt$solve$Settings(int, int, double, int, double, double, int, kotlin.jvm.internal.DefaultConstructorMarker);
    Code:
       0: iload         10
       2: iconst_1
       3: iand
       4: ifeq          11
       7: sipush        1024
      10: istore_1
      11: iload         10
      13: iconst_2
      14: iand
      15: ifeq          22
      18: sipush        8192
      21: istore_2
      22: iload         10
      24: iconst_4
      25: iand
      26: ifeq          33
      29: ldc2_w        #33                 // double 0.9375d
      32: dstore_3
      33: iload         10
      35: bipush        8
      37: iand
      38: ifeq          45
      41: ldc           #35                 // int 2147483647
      43: istore        5
      45: iload         10
      47: bipush        16
      49: iand
      50: ifeq          58
      53: ldc2_w        #36                 // double -1.7976931348623157E308d
      56: dstore        6
      58: iload         10
      60: bipush        32
      62: iand
      63: ifeq          69
      66: dconst_1
      67: dstore        8
      69: aload_0
      70: iload_1
      71: iload_2
      72: dload_3
      73: iload         5
      75: dload         6
      77: dload         8
      79: invokespecial #39                 // Method "<init>":(IIDIDD)V
      82: return

  public final int getGlobalIterations();
    Code:
       0: aload_0
       1: getfield      #13                 // Field globalIterations:I
       4: ireturn

  public final void setGlobalIterations(int);
    Code:
       0: aload_0
       1: iload_1
       2: putfield      #13                 // Field globalIterations:I
       5: return

  public final int getIterations();
    Code:
       0: aload_0
       1: getfield      #16                 // Field iterations:I
       4: ireturn

  public final void setIterations(int);
    Code:
       0: aload_0
       1: iload_1
       2: putfield      #16                 // Field iterations:I
       5: return

  public final double getProbStartWithPrevious();
    Code:
       0: aload_0
       1: getfield      #20                 // Field probStartWithPrevious:D
       4: dreturn

  public final void setProbStartWithPrevious(double);
    Code:
       0: aload_0
       1: dload_1
       2: putfield      #20                 // Field probStartWithPrevious:D
       5: return

  public final int getRecessionLimit();
    Code:
       0: aload_0
       1: getfield      #23                 // Field recessionLimit:I
       4: ireturn

  public final void setRecessionLimit(int);
    Code:
       0: aload_0
       1: iload_1
       2: putfield      #23                 // Field recessionLimit:I
       5: return

  public final double getDesiredEnergy();
    Code:
       0: aload_0
       1: getfield      #26                 // Field desiredEnergy:D
       4: dreturn

  public final void setDesiredEnergy(double);
    Code:
       0: aload_0
       1: dload_1
       2: putfield      #26                 // Field desiredEnergy:D
       5: return

  public final double getTemp0();
    Code:
       0: aload_0
       1: getfield      #29                 // Field temp0:D
       4: dreturn

  public final void setTemp0(double);
    Code:
       0: aload_0
       1: dload_1
       2: putfield      #29                 // Field temp0:D
       5: return
}