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 gzippedSize(byte[] data) { try {
JustCountingOutputStream jcos = new JustCountingOutputStream();
GZIPOutputStream gos = new GZIPOutputStream(jcos);
gos.write(data, 0, l(data));
gos.close();
return jcos.get();
} catch (Exception __e) { throw rethrow(__e); } }
static int gzippedSize(String s) {
return l(gzipString(s));
}
static long gzippedSize(File f) { try {
JustCountingOutputStream jcos = new JustCountingOutputStream();
var gos = new GZIPOutputStream(jcos);
file2stream(f, gos);
gos.close();
return jcos.get();
} catch (Exception __e) { throw rethrow(__e); } }
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 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 byte[] gzipString(String s) { try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gos = new GZIPOutputStream(baos);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(gos, "UTF-8");
PrintWriter printWriter = new PrintWriter(outputStreamWriter);
printWriter.print(s);
printWriter.close();
gos.close();
return baos.toByteArray();
} catch (Exception __e) { throw rethrow(__e); } }
static void file2stream(File src, OutputStream out) throws IOException {
FileInputStream inputStream = new FileInputStream(src);
try {
copyStream(inputStream, out);
} finally {
inputStream.close();
}
}
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 void _handleError(Error e) {
//call(javax(), '_handleError, e);
}
static void copyStream(InputStream in, OutputStream out) { try {
byte[] buf = new byte[65536];
while (true) {
int n = in.read(buf);
if (n <= 0) return;
out.write(buf, 0, n);
}
} catch (Exception __e) { throw rethrow(__e); } }
static class JustCountingOutputStream extends OutputStream {
long counter;
@Override
public void write(int b) throws IOException {
++counter;
}
@Override
public void write(byte[] b) throws IOException {
counter += b.length;
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
counter += len;
}
final long get(){ return getFilePointer(); }
long getFilePointer() { return counter; }
}
}