def f(n, table):
if table[n] != -1: return table[n]
table[n] = (f(n-1, table) + f(n-2, table) + f(n-3, table) + f(n-4, table))*2
return table[n]
solutions = [0, 5, 10, 30] + [-1] * 500
n = 100 # plug any number (n) here
print( f(n, solutions) )
ZGVmIGYobiwgdGFibGUpOgogICAgaWYgdGFibGVbbl0gIT0gLTE6IHJldHVybiB0YWJsZVtuXQogICAgdGFibGVbbl0gPSAoZihuLTEsIHRhYmxlKSArIGYobi0yLCB0YWJsZSkgKyBmKG4tMywgdGFibGUpICsgZihuLTQsIHRhYmxlKSkqMgogICAgcmV0dXJuIHRhYmxlW25dCgpzb2x1dGlvbnMgPSBbMCwgNSwgMTAsIDMwXSArIFstMV0gKiA1MDAKbiA9IDEwMCAjIHBsdWcgYW55IG51bWJlciAobikgaGVyZQpwcmludCggZihuLCBzb2x1dGlvbnMpICkg