import java.util.*;
import java.util.zip.*;
import java.util.List;
import java.util.regex.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
import java.util.concurrent.locks.*;
import java.util.function.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.table.*;
import java.io.*;
import java.net.*;
import java.lang.reflect.*;
import java.lang.ref.*;
import java.lang.management.*;
import java.security.*;
import java.security.spec.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import javax.imageio.*;
import java.math.*;
import java.time.Duration;
import java.lang.invoke.VarHandle;
import java.lang.invoke.MethodHandles;
import static x30_pkg.x30_util.DynamicObject;
import java.text.*;
import java.text.NumberFormat;
import java.util.TimeZone;
import java.awt.geom.*;
class main {
static Steppable concatSteppables(Iterable extends Steppable> steppables) {
return iteratorToSteppable(concatIterators2(mapI(__17 -> steppableToIterator(__17), steppables)));
}
static Steppable concatSteppables(A... steppables) {
return concatSteppables(asList(steppables));
}
static Steppable iteratorToSteppable(Iterator it) {
return it == null ? null : new Steppable() {
public boolean step() {
if (!it.hasNext()) return false;
it.next();
return true;
}
};
}
static IterableIterator concatIterators2(Iterable> l) {
return nestedIterator(l, it -> it);
}
static class mapI_It extends IterableIterator {
Object f;
Iterator i;
mapI_It() {}
mapI_It(Object f, Iterator i) {
this.i = i;
this.f = f;}
public boolean hasNext() {
return i.hasNext();
}
public Object next() {
return callF(f, i.next());
}
public String toString() {
return formatFunctionCall("mapI", f, i);
}
}
// apply a function to an iterator
static IterableIterator mapI(final Object f, final Iterator i) {
return new mapI_It(f, i);
}
static IterableIterator mapI(IterableIterator i, Object f) {
return mapI((Iterator) i, f);
}
static IterableIterator mapI(Object f, IterableIterator i) {
return mapI((Iterator) i, f);
}
static IterableIterator mapI(Iterator i, Object f) {
return mapI(f, i);
}
static IterableIterator mapI(Iterable i, IF1 f) {
return new MapI(f, iterator(i));
}
static IterableIterator mapI(Iterator i, IF1 f) {
return new MapI(f, i);
}
static IterableIterator mapI(IterableIterator i, IF1 f) {
return new MapI(f, i);
}
static IterableIterator mapI(IF1 f, Iterable i) {
return new MapI(f, iterator(i));
}
static IterableIterator mapI(Iterable i, Object f) {
return mapI(f, i.iterator());
}
static IterableIterator mapI(Object f, Iterable i) {
return mapI(i, f);
}
static IterableIterator