private void bt(List<String> list, String num, int l, List<String> rets, int target) {
	        if (l == num.length()) {
	            if (eval(list) == target) {
	                StringBuilder b = new StringBuilder();
	                for (String s : list)
	                    b.append(s);
	                rets.add(b.toString());
	            }
	        } else {
	            for (int r = l+1; r <= num.length(); r++) {
	                String next = num.substring(l, r);
	                if (Long.valueOf(next) > Integer.MAX_VALUE)
	                    break;
	                if (list.isEmpty()) { // ERROR: special case
	                    list.add(next); // modify
	                    bt(list, num, r, rets, target);
	                    list.remove(list.size()-1); // restore
	                } else {
	                    for (String op : ops) {
	                        list.add(op);
	                        list.add(next);  // modify
	                        bt(list, num, r, rets, target);
	                        // list = list.subList(0, list.size()-2);
	                        list.remove(list.size()-1);
	                        list.remove(list.size()-1); // restore
	                    }
	                }
	                if (num.charAt(l) == '0')
	                    break;
	            }
	        }
	    }