#pragma once
// This file is a fork of AtCoder Library.#define E6NLAQ_INTERNAL_BITOP_HPP
#ifdef _MSC_VER
#include<intrin.h>
#endif
#if __cplusplus >= 202002L
#include<bit>
#endif
namespacee6nlaq{namespaceinternal{#if __cplusplus >= 202002L
usingstd::bit_ceil;#else
// @return same with std::bit::bit_ceilunsignedintbit_ceil(unsignedintn){unsignedintx=1;while(x<(unsignedint)(n))x*=2;returnx;}#endif
// @param n `1 <= n`// @return same with std::bit::countr_zerointcountr_zero(unsignedintn){#ifdef _MSC_VER
unsignedlongindex;_BitScanForward(&index,n);returnindex;#else
return__builtin_ctz(n);#endif
}// @param n `1 <= n`// @return same with std::bit::countr_zeroconstexprintcountr_zero_constexpr(unsignedintn){intx=0;while(!(n&(1<<x)))x++;returnx;}}// namespace internal}// namespace e6nlaq
#line 2 "include/e6nlaq/internal/bit.hpp"
// This file is a fork of AtCoder Library.#define E6NLAQ_INTERNAL_BITOP_HPP
#ifdef _MSC_VER
#include<intrin.h>
#endif
#if __cplusplus >= 202002L
#include<bit>
#endif
namespacee6nlaq{namespaceinternal{#if __cplusplus >= 202002L
usingstd::bit_ceil;#else
// @return same with std::bit::bit_ceilunsignedintbit_ceil(unsignedintn){unsignedintx=1;while(x<(unsignedint)(n))x*=2;returnx;}#endif
// @param n `1 <= n`// @return same with std::bit::countr_zerointcountr_zero(unsignedintn){#ifdef _MSC_VER
unsignedlongindex;_BitScanForward(&index,n);returnindex;#else
return__builtin_ctz(n);#endif
}// @param n `1 <= n`// @return same with std::bit::countr_zeroconstexprintcountr_zero_constexpr(unsignedintn){intx=0;while(!(n&(1<<x)))x++;returnx;}}// namespace internal}// namespace e6nlaq