import java.util.*; abstract class List1 { public static List1 empty() { return new Empty(); } public abstract int head(); public abstract List1 tail(); public List1 cons(int n) { return new Cons(n,this); } public abstract boolean isEmpty(); public static List1 fromString(String str) { str=str.trim(); if(str.charAt(0)!='['||str.charAt(str.length()-1)!=']') return new Empty(); str = str.substring(1,str.length()-1); StringTokenizer toks = new StringTokenizer(str,","); try { return make(toks); } catch(NumberFormatException e) { return new Empty(); } } private static List1 make(StringTokenizer toks) { if(toks.hasMoreTokens()) { String num = toks.nextToken().trim(); return new Cons(Integer.parseInt(num),make(toks)); } else return new Empty(); } }