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 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 javax.imageio.*;
import java.math.*;
class main {
static AutoCloseable tempIndent() { return tempIndent(" "); }
static AutoCloseable tempIndent(String prefix) {
threadIndent();
return new AutoCloseable() {
public void close() {
threadUnindent();
}
};
}
static void threadIndent() { threadIndent(""); }
static void threadIndent(String prefix) {
print_threadIndentPlus(prefix);
}
static void threadUnindent() {
print_threadIndentMinus();
}
static void print_threadIndentPlus() { print_threadIndentPlus(" "); }
static void print_threadIndentPlus(String prefix) {
print_setPrefixForThread(print_getPrefixForThread() + prefix);
}
static void print_threadIndentMinus() {
print_setPrefixForThread(dropSuffix(" ", print_getPrefixForThread()));
}
static void print_setPrefixForThread(final String prefix) {
interceptPrintInThisThread(empty(prefix) ? null
: new _PrintIndent(prefix));
}
static String print_getPrefixForThread() {
Object o = print_byThread().get();
return o instanceof _PrintIndent ? ((_PrintIndent) o).prefix : "";
}
static String dropSuffix(String suffix, String s) {
return s.endsWith(suffix) ? s.substring(0, l(s)-l(suffix)) : s;
}
static volatile StringBuffer local_log = new StringBuffer(); // not redirected
static volatile Appendable print_log = local_log; // might be redirected, e.g. to main bot
// in bytes - will cut to half that
static volatile int print_log_max = 1024*1024;
static volatile int local_log_max = 100*1024;
static boolean print_silent = false; // total mute if set
static Object print_byThread_lock = new Object();
static volatile ThreadLocal