public static List<Person>  LCS(List<Person>  lop1, List<Person> lop2) {
		
		// trivial case
		if ( lop1.isEmpty() || lop2.isEmpty()) {
			return new ArrayList<Person>();
		}
		// non trivial case
		int		size1  =  lop1.size();
		int		size2  =  lop2.size();
		if ( lop1.get(size1-1) == lop2.get(size2-1)){
			List<Person>  ret =  LCS(lop1.subList(0, size1-1), lop2.subList(0, size2-1));
			ret.add(lop1.get(size1-1));
			return		ret;
		} else {
			List<Person>	ret1  =  LCS(lop1.subList(0, size1), lop2.subList(0, size2-1));
			List<Person>	ret2  =  LCS(lop1.subList(0, size1-1), lop2.subList(0, size2));
			if ( ret1.size() > ret2.size() ){
				return ret1;
			} else 
				return ret2;
		}
	}