// 停滞しているから落としてみよう。
// 各整数型のビット数を数える関数
// >>が多過ぎって怒られたから≫で代用w
static inline unsigned count(unsigned long bits)
{
 bits -= bits ≫ 1 & 0x55555555;
 unsigned tmp = (bits & 0x33333333) + (bits ≫ 2 & 0x33333333);
 tmp += tmp ≫ 4;
 tmp &= 0x0f0f0f0f;
 tmp += tmp ≫ 8;
 tmp += tmp ≫ 16;
 return (unsigned char) tmp;
}
static inline unsigned count(unsigned short bits)
{
 bits -= bits ≫ 1 & 0x5555;
 unsigned tmp = (bits & 0x3333) + (bits ≫ 2 & 0x3333);
 tmp += tmp ≫ 4;
 tmp &= 0x0f0f;
 tmp += tmp ≫ 8;
 return (unsigned char) tmp;
}
static inline unsigned count(unsigned char bits)
{
 bits -= bits ≫ 1 & 0x55;
 unsigned tmp = (bits & 0x33) + (bits ≫ 2 & 0x33);
 tmp += tmp ≫ 4;
 return tmp & 0x0f;
}