static int max(int a, int b) { ret Math.max(a, b); }
static int max(int a, int b, int c) { ret max(max(a, b), c); }
static long max(int a, long b) { ret Math.max((long) a, b); }
static long max(long a, long b) { ret Math.max(a, b); }
static double max(int a, double b) { ret Math.max((double) a, b); }
static float max(float a, float b) { ret Math.max(a, b); }
static double max(double a, double b) { ret Math.max(a, b); }
static > A max (Iterable l) {
A max = null;
var it = iterator(l);
if (it.hasNext()) {
max = it.next();
while (it.hasNext()) {
A a = it.next();
if (cmp(a, max) > 0)
max = a;
}
}
ret max;
}
/*Nah.
static int max(Collection c) {
int x = Integer.MIN_VALUE;
for (int i : c) x = max(x, i);
ret x;
}*/
static double max(double[] c) {
if (c.length == 0) ret Double.MIN_VALUE;
double x = c[0];
for (int i = 1; i < c.length; i++) x = Math.max(x, c[i]);
ret x;
}
static float max(float[] c) {
if (c.length == 0) ret Float.MAX_VALUE;
float x = c[0];
for (int i = 1; i < c.length; i++) x = Math.max(x, c[i]);
ret x;
}
static byte max(byte[] c) {
byte x = -128;
for (byte d : c) if (d > x) x = d;
ret x;
}
static short max(short[] c) {
short x = -0x8000;
for (short d : c) if (d > x) x = d;
ret x;
}
static int max(int[] c) {
int x = Int.MIN_VALUE;
for (int d : c) if (d > x) x = d;
ret x;
}
static > A max(A a, A b) {
ret cmp(a, b) >= 0 ? a : b;
}