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;
class main {
static long[] longArrayFromBytes(byte[] a) {
return longArrayFromBytes(a, 0, l(a));
}
static long[] longArrayFromBytes(byte[] a, int from, int to) {
long[] b = new long[(to-from)/2];
for (int i = 0; i < b.length; i++)
b[i] = longFromBytes_bigEndian(a, from+i*2);
return b;
}
static int l(Object[] a) { return a == null ? 0 : a.length; }
static int l(boolean[] a) { return a == null ? 0 : a.length; }
static int l(byte[] a) { return a == null ? 0 : a.length; }
static int l(short[] a) { return a == null ? 0 : a.length; }
static int l(long[] a) { return a == null ? 0 : a.length; }
static int l(int[] a) { return a == null ? 0 : a.length; }
static int l(float[] a) { return a == null ? 0 : a.length; }
static int l(double[] a) { return a == null ? 0 : a.length; }
static int l(char[] a) { return a == null ? 0 : a.length; }
static int l(Collection c) { return c == null ? 0 : c.size(); }
static int l(Iterator i) { return iteratorCount_int_close(i); } // consumes the iterator && closes it if possible
static int l(Map m) { return m == null ? 0 : m.size(); }
static int l(CharSequence s) { return s == null ? 0 : s.length(); }
static long l(File f) { return f == null ? 0 : f.length(); }
static long longFromBytes_bigEndian(byte[] a, int i) {
return twoIntsToLong_bigEndian(
intFromBytes_bigEndian(a, i),
intFromBytes_bigEndian(a, i+4));
}
static int iteratorCount_int_close(Iterator i) { try {
int n = 0;
if (i != null) while (i.hasNext()) { i.next(); ++n; }
if (i instanceof AutoCloseable) ((AutoCloseable) i).close();
return n;
} catch (Exception __e) { throw rethrow(__e); } }
static long twoIntsToLong_bigEndian(int a, int b) {
return twoIntsToLong(a, b);
}
static int intFromBytes_bigEndian(byte[] a, int i) {
return intFromBytes(a, i);
}
static RuntimeException rethrow(Throwable t) {
if (t instanceof Error)
_handleError((Error) t);
throw t instanceof RuntimeException ? (RuntimeException) t : new RuntimeException(t);
}
static RuntimeException rethrow(String msg, Throwable t) {
throw new RuntimeException(msg, t);
}
static long twoIntsToLong(int a, int b) {
return (((long) a) << 32) | (((long) b) & 0xFFFFFFFFL);
}
static int intFromBytes(byte[] a, int i) {
return ubyteToInt(a[i]) << 24
| ubyteToInt(a[i+1]) << 16
| ubyteToInt(a[i+2]) << 8
| ubyteToInt(a[i+3]);
}
static void _handleError(Error e) {
//call(javax(), '_handleError, e);
}
static int ubyteToInt(byte b) {
return b & 0x0FF;
}
static int ubyteToInt(char c) {
return c & 0x0FF;
}
}