memoizing
ternar