text: #ifndef ATCODER_INTERNAL_BITOP_HPP
  #define ATCODER_INTERNAL_BITOP_HPP 1
  
  #ifdef _MSC_VER
  #include <intrin.h>
  #endif
  
  namespace atcoder {
  
  namespace internal {
  
  // @param n `0 <= n`
  // @return minimum non-negative `x` s.t. `n <= 2**x`
  int ceil_pow2(int n) {
      int x = 0;
      while ((1U << x) < (unsigned int)(n)) x++;
      return x;
  }
  
  // @param n `1 <= n`
  // @return minimum non-negative `x` s.t. `(n & (1 << x)) != 0`
  int bsf(unsigned int n) {
  #ifdef _MSC_VER
      unsigned long index;
      _BitScanForward(&index, n);
      return index;
  #else
      return __builtin_ctz(n);
  #endif
  }
  
  }  // namespace internal
  
  }  // namespace atcoder
  
  #endif  // ATCODER_INTERNAL_BITOP_HPP
  