#include <stdint.h>
typedef uint64_t u64;
int msb(u64 v)
{
if (!v) return 0;
int k = 0;
if (v > 0xFFFFFFFFUL) { v >>= 32; k = 32; }
if (v > 0x0000FFFFUL) { v >>= 16; k |= 16; }
if (v > 0x000000FFUL) { v >>= 8; k |= 8; }
if (v > 0x0000000FUL) { v >>= 4; k |= 4; }
if (v > 0x00000003UL) { v >>= 2; k |= 2; }
if (v > 0x00000001UL) { k |= 1; }
return k + 1;
}