### diffWaysToCompute 
def cache(f): return f
from typing import *
def f_gold(expression: str) -> List[int]:
    @cache
    def dfs(exp):
        if exp.isdigit():
            return [int(exp)]
        ans = []
        for i, c in enumerate(exp):
            if c in '-+*':
                left, right = dfs(exp[:i]), dfs(exp[i + 1:])
                for a in left:
                    for b in right:
                        if c == '-':
                            ans.append(a - b)
                        elif c == '+':
                            ans.append(a + b)
                        else:
                            ans.append(a * b)
        return ans
    return dfs(expression)