class Solution {
public List<Integer> splitIntoFibonacci(String S) {
List<Integer> res = new ArrayList<>();
helper(S, res, 0);
return res;
}
private boolean helper(String s, List<Integer> res, int pos) {
if (pos == s.length()) {
return res.size() > 2 ? true : false;
}
int num = 0;
int n = s.length();
for (int i = pos; i < n; i++) {
num = num * 10 + (s.charAt(i) - '0');
if (num < 0) return false;
if (res.size() < 2 || (res.get(res.size() - 2) + res.get(res.size() - 1) == num)) {
res.add(num);
if (helper(s, res, i + 1)) return true;
res.remove(res.size() - 1);
}
if (i == pos && s.charAt(i) == '0') return false;
}
return false;
}
}