private int evalRPNHelper( List<String> los ){
		// trivial case
		if ( los.size() == 1 ) {
			return Integer.parseInt(los.get(0));
		}
		// non trivial case
		// 1. process the los
		List<String>	ret  =  new ArrayList<>();
		
		int		 i  =  2;	// index
		while ( i < los.size() ){
			if ( isOperator( los.get(i)) ){
				// once the first operator is found , break.
				int		k  =  compute(los.get(i-2), los.get(i-1), los.get(i));
				ret.add( Integer.toString(k) );
				ret.addAll( los.subList(i+1, los.size()));
				break;
			}
			ret.add( los.get(i-2) );
			++i;
		}
		// 2. do recursion on the result
		return evalRPNHelper(ret);
	}