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 class IfThenElse1 implements IF0 , IFieldsToList{
static final String _fieldOrder = "condition trueBranch falseBranch";
IF0 condition;
IF0 trueBranch;
IF0 falseBranch;
IfThenElse1() {}
IfThenElse1(IF0 condition, IF0 trueBranch, IF0 falseBranch) {
this.falseBranch = falseBranch;
this.trueBranch = trueBranch;
this.condition = condition;}
public String toString() { return "IfThenElse1(" + condition + ", " + trueBranch + ", " + falseBranch + ")"; }
public boolean equals(Object o) {
if (!(o instanceof IfThenElse1)) return false;
IfThenElse1 x = (IfThenElse1) o;
return eq(condition, x.condition) && eq(trueBranch, x.trueBranch) && eq(falseBranch, x.falseBranch);
}
public int hashCode() {
int h = 1123176766;
h = boostHashCombine(h, _hashCode(condition));
h = boostHashCombine(h, _hashCode(trueBranch));
h = boostHashCombine(h, _hashCode(falseBranch));
return h;
}
public Object[] _fieldsToList() { return new Object[] {condition, trueBranch, falseBranch}; }
public A get() {
return condition.get() ? trueBranch.get() : falseBranch.get();
}
}
static boolean eq(Object a, Object b) {
return a == b || (a == null ? b == null : b != null && a.equals(b));
}
static int boostHashCombine(int a, int b) {
return a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2));
}
static int _hashCode(Object a) {
return a == null ? 0 : a.hashCode();
}
static String str(Object o) {
return o == null ? "null" : o.toString();
}
static String str(char[] c) {
return new String(c);
}
static interface IF0 {
A get();
}static interface IFieldsToList {
Object[] _fieldsToList();
}
}