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  Collection valuesForKeysContainingIC(Map map, String x) {
  List l = new ArrayList();
  if (map != null) for (Map.Entry e : map.entrySet())
    if (cic(e.getKey(), x))
      l.add(e.getValue());
  return l;
}
static boolean cic(Collection l, String s) {
  return containsIgnoreCase(l, s);
}
static boolean cic(String[] l, String s) {
  return containsIgnoreCase(l, s);
}
static boolean cic(String s, char c) {
  return containsIgnoreCase(s, c);
}
static boolean cic(String a, String b) {
  return containsIgnoreCase(a, b);
}
static boolean containsIgnoreCase(Collection l, String s) {
  if (l != null) for (String x : l)
    if (eqic(x, s))
      return true;
  return false;
}
static boolean containsIgnoreCase(String[] l, String s) {
  if (l != null) for (String x : l)
    if (eqic(x, s))
      return true;
  return false;
}
static boolean containsIgnoreCase(String s, char c) {
  return indexOfIgnoreCase(s, String.valueOf(c)) >= 0;
}
static boolean containsIgnoreCase(String a, String b) {
  return indexOfIgnoreCase(a, b) >= 0;
}
static boolean contains(Collection c, Object o) {
  return c != null && c.contains(o);
}
static boolean contains(Object[] x, Object o) {
  if (x != null)
    for (Object a : x)
      if (eq(a, o))
        return true;
  return false;
}
static boolean contains(String s, char c) {
  return s != null && s.indexOf(c) >= 0;
}
static boolean contains(String s, String b) {
  return s != null && s.indexOf(b) >= 0;
}
static boolean contains(BitSet bs, int i) {
  return bs != null && bs.get(i);
}
static boolean eqic(String a, String b) {
  
  
    if ((a == null) != (b == null)) return false;
    if (a == null) return true;
    return a.equalsIgnoreCase(b);
  
}
static boolean eqic(char a, char b) {
  if (a == b) return true;
  
    char u1 = Character.toUpperCase(a);
    char u2 = Character.toUpperCase(b);
    if (u1 == u2) return true;
  
  return Character.toLowerCase(u1) == Character.toLowerCase(u2);
}
// works on lists and strings and null
static int indexOfIgnoreCase(List a, String b) {
  return indexOfIgnoreCase(a, b, 0);
}
static int indexOfIgnoreCase(List a, String b, int i) {
  int n = a == null ? 0 : a.size();
  for (; i < n; i++)
    if (eqic(a.get(i), b)) return i;
  return -1;
}
static int indexOfIgnoreCase(String a, String b) {
  return indexOfIgnoreCase_manual(a, b);
  /*Matcher m = Pattern.compile(b, Pattern.CASE_INSENSITIVE + Pattern.LITERAL).matcher(a);
  if (m.find()) return m.start(); else ret -1;*/
}
static boolean eq(Object a, Object b) {
  return a == b || (a == null ? b == null : b != null && a.equals(b));
}
static String asString(Object o) {
  return o == null ? null : o.toString();
}
static int indexOfIgnoreCase_manual(String a, String b) {
  int la = strL(a), lb = strL(b);
  if (la < lb) return -1;
  int n = la-lb;
  
  loop: for (int i = 0; i <= n; i++) {
    for (int j = 0; j < lb; j++) {
      char c1 = a.charAt(i+j), c2 = b.charAt(j);
      if (!eqic(c1, c2))
        continue loop;
    }
    return i;
  }
  return -1;
}
static String str(Object o) {
  return o == null ? "null" : o.toString();
}
static String str(char[] c) {
  return new String(c);
}
static int strL(String s) {
  return s == null ? 0 : s.length();
}
}