up[1] = up[0] = 0; for (int i = 2; i < (1 << n); ++i) up[i] = up[i >> 1] + 1;