This documentation is automatically generated by online-judge-tools/verification-helper
import cp_library.bit.__header__
from cp_library.bit.bit_reverse32_fn import bit_reverse32
from cp_library.bit.ctz32_fn import ctz32
def clz32(x): return ctz32(bit_reverse32(x))
'''
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
https://kobejean.github.io/cp-library
'''
def bit_reverse32(x):
x = (x >> 16) | (x << 16)
x = ((x >> 8) & 0x00FF00FF) | ((x << 8) & 0xFF00FF00)
x = ((x >> 4) & 0x0F0F0F0F) | ((x << 4) & 0xF0F0F0F0)
x = ((x >> 2) & 0x33333333) | ((x << 2) & 0xCCCCCCCC)
x = ((x >> 1) & 0x55555555) | ((x << 1) & 0xAAAAAAAA)
return x
def popcnt32(x):
x = ((x >> 1) & 0x55555555) + (x & 0x55555555)
x = ((x >> 2) & 0x33333333) + (x & 0x33333333)
x = ((x >> 4) & 0x0f0f0f0f) + (x & 0x0f0f0f0f)
x = ((x >> 8) & 0x00ff00ff) + (x & 0x00ff00ff)
x = ((x >> 16) & 0x0000ffff) + (x & 0x0000ffff)
return x
def ctz32(x): return popcnt32(~x & (x - 1))
def clz32(x): return ctz32(bit_reverse32(x))