relax base upper bound
use array instead of list to represent board for constant tile access time