import java.util.concurrent.* import java.util.concurrent.atomic.* fun thread(block: fun():Unit ) { val thread = object: Thread() { override fun run() { block() } } thread.start() } fun box() : String { val ref = AtomicInteger() val cdl = CountDownLatch(11) for(i in 0..10) { thread { var current = 0 do { current = ref.synchronized { val v = ref.get() + 1 if(v < 100) ref.set(v+1) v } } while(current < 100) cdl.countDown() } } cdl.await() return if(ref.get() == 100) "OK" else ref.get().toString() }