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  A[] repF_array(int n, IF0 f) {
  A[] a =  (A[]) (new Object[n]);
  for (int i = 0; i < n; i++)
    a[i] = f.get();
  return a;
}
static  A[] repF_array(Class type, int n, IF0 f) {
  A[] a = newArrayOfType(type, n);
  for (int i = 0; i < n; i++)
    a[i] = f.get();
  return a;
}
static  A[] newArrayOfType(Class type, int n) {
  return makeArray(type, n);
}
static  A[] makeArray(Class type, int n) {
  return (A[]) Array.newInstance(type, n);
}
static interface IF0 {
  A get();
}
}