use malachite::Integer as BigInt;
use static_init::dynamic;

#[dynamic]
static MASK_TABLE: Vec<BigInt> = vec![
    mask_value(0),
    mask_value(1),
    mask_value(2),
    mask_value(3),
    mask_value(4),
    mask_value(5),
    mask_value(6),
    mask_value(7),
    mask_value(8),
    mask_value(9),
    mask_value(10),
    mask_value(11),
    mask_value(12),
    mask_value(13),
    mask_value(14),
    mask_value(15),
    mask_value(16),
    mask_value(17),
    mask_value(18),
    mask_value(19),
    mask_value(20),
    mask_value(21),
    mask_value(22),
    mask_value(23),
    mask_value(24),
    mask_value(25),
    mask_value(26),
    mask_value(27),
    mask_value(28),
    mask_value(29),
    mask_value(30),
    mask_value(31),
    mask_value(32),
    mask_value(33),
    mask_value(34),
    mask_value(35),
    mask_value(36),
    mask_value(37),
    mask_value(38),
    mask_value(39),
    mask_value(40),
    mask_value(41),
    mask_value(42),
    mask_value(43),
    mask_value(44),
    mask_value(45),
    mask_value(46),
    mask_value(47),
    mask_value(48),
    mask_value(49),
    mask_value(50),
    mask_value(51),
    mask_value(52),
    mask_value(53),
    mask_value(54),
    mask_value(55),
    mask_value(56),
    mask_value(57),
    mask_value(58),
    mask_value(59),
    mask_value(60),
    mask_value(61),
    mask_value(62),
    mask_value(63),
    mask_value(64),
    mask_value(65),
    mask_value(66),
    mask_value(67),
    mask_value(68),
    mask_value(69),
    mask_value(70),
    mask_value(71),
    mask_value(72),
    mask_value(73),
    mask_value(74),
    mask_value(75),
    mask_value(76),
    mask_value(77),
    mask_value(78),
    mask_value(79),
    mask_value(80),
    mask_value(81),
    mask_value(82),
    mask_value(83),
    mask_value(84),
    mask_value(85),
    mask_value(86),
    mask_value(87),
    mask_value(88),
    mask_value(89),
    mask_value(90),
    mask_value(91),
    mask_value(92),
    mask_value(93),
    mask_value(94),
    mask_value(95),
    mask_value(96),
    mask_value(97),
    mask_value(98),
    mask_value(99),
    mask_value(100),
    mask_value(101),
    mask_value(102),
    mask_value(103),
    mask_value(104),
    mask_value(105),
    mask_value(106),
    mask_value(107),
    mask_value(108),
    mask_value(109),
    mask_value(110),
    mask_value(111),
    mask_value(112),
    mask_value(113),
    mask_value(114),
    mask_value(115),
    mask_value(116),
    mask_value(117),
    mask_value(118),
    mask_value(119),
    mask_value(120),
    mask_value(121),
    mask_value(122),
    mask_value(123),
    mask_value(124),
    mask_value(125),
    mask_value(126),
    mask_value(127),
    mask_value(128),
    mask_value(129),
    mask_value(130),
    mask_value(131),
    mask_value(132),
    mask_value(133),
    mask_value(134),
    mask_value(135),
    mask_value(136),
    mask_value(137),
    mask_value(138),
    mask_value(139),
    mask_value(140),
    mask_value(141),
    mask_value(142),
    mask_value(143),
    mask_value(144),
    mask_value(145),
    mask_value(146),
    mask_value(147),
    mask_value(148),
    mask_value(149),
    mask_value(150),
    mask_value(151),
    mask_value(152),
    mask_value(153),
    mask_value(154),
    mask_value(155),
    mask_value(156),
    mask_value(157),
    mask_value(158),
    mask_value(159),
    mask_value(160),
    mask_value(161),
    mask_value(162),
    mask_value(163),
    mask_value(164),
    mask_value(165),
    mask_value(166),
    mask_value(167),
    mask_value(168),
    mask_value(169),
    mask_value(170),
    mask_value(171),
    mask_value(172),
    mask_value(173),
    mask_value(174),
    mask_value(175),
    mask_value(176),
    mask_value(177),
    mask_value(178),
    mask_value(179),
    mask_value(180),
    mask_value(181),
    mask_value(182),
    mask_value(183),
    mask_value(184),
    mask_value(185),
    mask_value(186),
    mask_value(187),
    mask_value(188),
    mask_value(189),
    mask_value(190),
    mask_value(191),
    mask_value(192),
    mask_value(193),
    mask_value(194),
    mask_value(195),
    mask_value(196),
    mask_value(197),
    mask_value(198),
    mask_value(199),
    mask_value(200),
    mask_value(201),
    mask_value(202),
    mask_value(203),
    mask_value(204),
    mask_value(205),
    mask_value(206),
    mask_value(207),
    mask_value(208),
    mask_value(209),
    mask_value(210),
    mask_value(211),
    mask_value(212),
    mask_value(213),
    mask_value(214),
    mask_value(215),
    mask_value(216),
    mask_value(217),
    mask_value(218),
    mask_value(219),
    mask_value(220),
    mask_value(221),
    mask_value(222),
    mask_value(223),
    mask_value(224),
    mask_value(225),
    mask_value(226),
    mask_value(227),
    mask_value(228),
    mask_value(229),
    mask_value(230),
    mask_value(231),
    mask_value(232),
    mask_value(233),
    mask_value(234),
    mask_value(235),
    mask_value(236),
    mask_value(237),
    mask_value(238),
    mask_value(239),
    mask_value(240),
    mask_value(241),
    mask_value(242),
    mask_value(243),
    mask_value(244),
    mask_value(245),
    mask_value(246),
    mask_value(247),
    mask_value(248),
    mask_value(249),
    mask_value(250),
    mask_value(251),
    mask_value(252),
    mask_value(253),
    mask_value(254),
    mask_value(255),
    mask_value(256),
    mask_value(257),
    mask_value(258),
    mask_value(259),
    mask_value(260),
    mask_value(261),
    mask_value(262),
    mask_value(263),
    mask_value(264),
    mask_value(265),
    mask_value(266),
    mask_value(267),
    mask_value(268),
    mask_value(269),
    mask_value(270),
    mask_value(271),
    mask_value(272),
    mask_value(273),
    mask_value(274),
    mask_value(275),
    mask_value(276),
    mask_value(277),
    mask_value(278),
    mask_value(279),
    mask_value(280),
    mask_value(281),
    mask_value(282),
    mask_value(283),
    mask_value(284),
    mask_value(285),
    mask_value(286),
    mask_value(287),
    mask_value(288),
    mask_value(289),
    mask_value(290),
    mask_value(291),
    mask_value(292),
    mask_value(293),
    mask_value(294),
    mask_value(295),
    mask_value(296),
    mask_value(297),
    mask_value(298),
    mask_value(299),
    mask_value(300),
    mask_value(301),
    mask_value(302),
    mask_value(303),
    mask_value(304),
    mask_value(305),
    mask_value(306),
    mask_value(307),
    mask_value(308),
    mask_value(309),
    mask_value(310),
    mask_value(311),
    mask_value(312),
    mask_value(313),
    mask_value(314),
    mask_value(315),
    mask_value(316),
    mask_value(317),
    mask_value(318),
    mask_value(319),
    mask_value(320),
    mask_value(321),
    mask_value(322),
    mask_value(323),
    mask_value(324),
    mask_value(325),
    mask_value(326),
    mask_value(327),
    mask_value(328),
    mask_value(329),
    mask_value(330),
    mask_value(331),
    mask_value(332),
    mask_value(333),
    mask_value(334),
    mask_value(335),
    mask_value(336),
    mask_value(337),
    mask_value(338),
    mask_value(339),
    mask_value(340),
    mask_value(341),
    mask_value(342),
    mask_value(343),
    mask_value(344),
    mask_value(345),
    mask_value(346),
    mask_value(347),
    mask_value(348),
    mask_value(349),
    mask_value(350),
    mask_value(351),
    mask_value(352),
    mask_value(353),
    mask_value(354),
    mask_value(355),
    mask_value(356),
    mask_value(357),
    mask_value(358),
    mask_value(359),
    mask_value(360),
    mask_value(361),
    mask_value(362),
    mask_value(363),
    mask_value(364),
    mask_value(365),
    mask_value(366),
    mask_value(367),
    mask_value(368),
    mask_value(369),
    mask_value(370),
    mask_value(371),
    mask_value(372),
    mask_value(373),
    mask_value(374),
    mask_value(375),
    mask_value(376),
    mask_value(377),
    mask_value(378),
    mask_value(379),
    mask_value(380),
    mask_value(381),
    mask_value(382),
    mask_value(383),
    mask_value(384),
    mask_value(385),
    mask_value(386),
    mask_value(387),
    mask_value(388),
    mask_value(389),
    mask_value(390),
    mask_value(391),
    mask_value(392),
    mask_value(393),
    mask_value(394),
    mask_value(395),
    mask_value(396),
    mask_value(397),
    mask_value(398),
    mask_value(399),
    mask_value(400),
    mask_value(401),
    mask_value(402),
    mask_value(403),
    mask_value(404),
    mask_value(405),
    mask_value(406),
    mask_value(407),
    mask_value(408),
    mask_value(409),
    mask_value(410),
    mask_value(411),
    mask_value(412),
    mask_value(413),
    mask_value(414),
    mask_value(415),
    mask_value(416),
    mask_value(417),
    mask_value(418),
    mask_value(419),
    mask_value(420),
    mask_value(421),
    mask_value(422),
    mask_value(423),
    mask_value(424),
    mask_value(425),
    mask_value(426),
    mask_value(427),
    mask_value(428),
    mask_value(429),
    mask_value(430),
    mask_value(431),
    mask_value(432),
    mask_value(433),
    mask_value(434),
    mask_value(435),
    mask_value(436),
    mask_value(437),
    mask_value(438),
    mask_value(439),
    mask_value(440),
    mask_value(441),
    mask_value(442),
    mask_value(443),
    mask_value(444),
    mask_value(445),
    mask_value(446),
    mask_value(447),
    mask_value(448),
    mask_value(449),
    mask_value(450),
    mask_value(451),
    mask_value(452),
    mask_value(453),
    mask_value(454),
    mask_value(455),
    mask_value(456),
    mask_value(457),
    mask_value(458),
    mask_value(459),
    mask_value(460),
    mask_value(461),
    mask_value(462),
    mask_value(463),
    mask_value(464),
    mask_value(465),
    mask_value(466),
    mask_value(467),
    mask_value(468),
    mask_value(469),
    mask_value(470),
    mask_value(471),
    mask_value(472),
    mask_value(473),
    mask_value(474),
    mask_value(475),
    mask_value(476),
    mask_value(477),
    mask_value(478),
    mask_value(479),
    mask_value(480),
    mask_value(481),
    mask_value(482),
    mask_value(483),
    mask_value(484),
    mask_value(485),
    mask_value(486),
    mask_value(487),
    mask_value(488),
    mask_value(489),
    mask_value(490),
    mask_value(491),
    mask_value(492),
    mask_value(493),
    mask_value(494),
    mask_value(495),
    mask_value(496),
    mask_value(497),
    mask_value(498),
    mask_value(499),
    mask_value(500),
    mask_value(501),
    mask_value(502),
    mask_value(503),
    mask_value(504),
    mask_value(505),
    mask_value(506),
    mask_value(507),
    mask_value(508),
    mask_value(509),
    mask_value(510),
    mask_value(511),
    mask_value(512),
    mask_value(513),
    mask_value(514),
    mask_value(515),
    mask_value(516),
    mask_value(517),
    mask_value(518),
    mask_value(519),
    mask_value(520),
    mask_value(521),
    mask_value(522),
    mask_value(523),
    mask_value(524),
    mask_value(525),
    mask_value(526),
    mask_value(527),
    mask_value(528),
    mask_value(529),
    mask_value(530),
    mask_value(531),
    mask_value(532),
    mask_value(533),
    mask_value(534),
    mask_value(535),
    mask_value(536),
    mask_value(537),
    mask_value(538),
    mask_value(539),
    mask_value(540),
    mask_value(541),
    mask_value(542),
    mask_value(543),
    mask_value(544),
    mask_value(545),
    mask_value(546),
    mask_value(547),
    mask_value(548),
    mask_value(549),
    mask_value(550),
    mask_value(551),
    mask_value(552),
    mask_value(553),
    mask_value(554),
    mask_value(555),
    mask_value(556),
    mask_value(557),
    mask_value(558),
    mask_value(559),
    mask_value(560),
    mask_value(561),
    mask_value(562),
    mask_value(563),
    mask_value(564),
    mask_value(565),
    mask_value(566),
    mask_value(567),
    mask_value(568),
    mask_value(569),
    mask_value(570),
    mask_value(571),
    mask_value(572),
    mask_value(573),
    mask_value(574),
    mask_value(575),
    mask_value(576),
    mask_value(577),
    mask_value(578),
    mask_value(579),
    mask_value(580),
    mask_value(581),
    mask_value(582),
    mask_value(583),
    mask_value(584),
    mask_value(585),
    mask_value(586),
    mask_value(587),
    mask_value(588),
    mask_value(589),
    mask_value(590),
    mask_value(591),
    mask_value(592),
    mask_value(593),
    mask_value(594),
    mask_value(595),
    mask_value(596),
    mask_value(597),
    mask_value(598),
    mask_value(599),
    mask_value(600),
    mask_value(601),
    mask_value(602),
    mask_value(603),
    mask_value(604),
    mask_value(605),
    mask_value(606),
    mask_value(607),
    mask_value(608),
    mask_value(609),
    mask_value(610),
    mask_value(611),
    mask_value(612),
    mask_value(613),
    mask_value(614),
    mask_value(615),
    mask_value(616),
    mask_value(617),
    mask_value(618),
    mask_value(619),
    mask_value(620),
    mask_value(621),
    mask_value(622),
    mask_value(623),
    mask_value(624),
    mask_value(625),
    mask_value(626),
    mask_value(627),
    mask_value(628),
    mask_value(629),
    mask_value(630),
    mask_value(631),
    mask_value(632),
    mask_value(633),
    mask_value(634),
    mask_value(635),
    mask_value(636),
    mask_value(637),
    mask_value(638),
    mask_value(639),
    mask_value(640),
    mask_value(641),
    mask_value(642),
    mask_value(643),
    mask_value(644),
    mask_value(645),
    mask_value(646),
    mask_value(647),
    mask_value(648),
    mask_value(649),
    mask_value(650),
    mask_value(651),
    mask_value(652),
    mask_value(653),
    mask_value(654),
    mask_value(655),
    mask_value(656),
    mask_value(657),
    mask_value(658),
    mask_value(659),
    mask_value(660),
    mask_value(661),
    mask_value(662),
    mask_value(663),
    mask_value(664),
    mask_value(665),
    mask_value(666),
    mask_value(667),
    mask_value(668),
    mask_value(669),
    mask_value(670),
    mask_value(671),
    mask_value(672),
    mask_value(673),
    mask_value(674),
    mask_value(675),
    mask_value(676),
    mask_value(677),
    mask_value(678),
    mask_value(679),
    mask_value(680),
    mask_value(681),
    mask_value(682),
    mask_value(683),
    mask_value(684),
    mask_value(685),
    mask_value(686),
    mask_value(687),
    mask_value(688),
    mask_value(689),
    mask_value(690),
    mask_value(691),
    mask_value(692),
    mask_value(693),
    mask_value(694),
    mask_value(695),
    mask_value(696),
    mask_value(697),
    mask_value(698),
    mask_value(699),
    mask_value(700),
    mask_value(701),
    mask_value(702),
    mask_value(703),
    mask_value(704),
    mask_value(705),
    mask_value(706),
    mask_value(707),
    mask_value(708),
    mask_value(709),
    mask_value(710),
    mask_value(711),
    mask_value(712),
    mask_value(713),
    mask_value(714),
    mask_value(715),
    mask_value(716),
    mask_value(717),
    mask_value(718),
    mask_value(719),
    mask_value(720),
    mask_value(721),
    mask_value(722),
    mask_value(723),
    mask_value(724),
    mask_value(725),
    mask_value(726),
    mask_value(727),
    mask_value(728),
    mask_value(729),
    mask_value(730),
    mask_value(731),
    mask_value(732),
    mask_value(733),
    mask_value(734),
    mask_value(735),
    mask_value(736),
    mask_value(737),
    mask_value(738),
    mask_value(739),
    mask_value(740),
    mask_value(741),
    mask_value(742),
    mask_value(743),
    mask_value(744),
    mask_value(745),
    mask_value(746),
    mask_value(747),
    mask_value(748),
    mask_value(749),
    mask_value(750),
    mask_value(751),
    mask_value(752),
    mask_value(753),
    mask_value(754),
    mask_value(755),
    mask_value(756),
    mask_value(757),
    mask_value(758),
    mask_value(759),
    mask_value(760),
    mask_value(761),
    mask_value(762),
    mask_value(763),
    mask_value(764),
    mask_value(765),
    mask_value(766),
    mask_value(767),
    mask_value(768),
    mask_value(769),
    mask_value(770),
    mask_value(771),
    mask_value(772),
    mask_value(773),
    mask_value(774),
    mask_value(775),
    mask_value(776),
    mask_value(777),
    mask_value(778),
    mask_value(779),
    mask_value(780),
    mask_value(781),
    mask_value(782),
    mask_value(783),
    mask_value(784),
    mask_value(785),
    mask_value(786),
    mask_value(787),
    mask_value(788),
    mask_value(789),
    mask_value(790),
    mask_value(791),
    mask_value(792),
    mask_value(793),
    mask_value(794),
    mask_value(795),
    mask_value(796),
    mask_value(797),
    mask_value(798),
    mask_value(799),
    mask_value(800),
    mask_value(801),
    mask_value(802),
    mask_value(803),
    mask_value(804),
    mask_value(805),
    mask_value(806),
    mask_value(807),
    mask_value(808),
    mask_value(809),
    mask_value(810),
    mask_value(811),
    mask_value(812),
    mask_value(813),
    mask_value(814),
    mask_value(815),
    mask_value(816),
    mask_value(817),
    mask_value(818),
    mask_value(819),
    mask_value(820),
    mask_value(821),
    mask_value(822),
    mask_value(823),
    mask_value(824),
    mask_value(825),
    mask_value(826),
    mask_value(827),
    mask_value(828),
    mask_value(829),
    mask_value(830),
    mask_value(831),
    mask_value(832),
    mask_value(833),
    mask_value(834),
    mask_value(835),
    mask_value(836),
    mask_value(837),
    mask_value(838),
    mask_value(839),
    mask_value(840),
    mask_value(841),
    mask_value(842),
    mask_value(843),
    mask_value(844),
    mask_value(845),
    mask_value(846),
    mask_value(847),
    mask_value(848),
    mask_value(849),
    mask_value(850),
    mask_value(851),
    mask_value(852),
    mask_value(853),
    mask_value(854),
    mask_value(855),
    mask_value(856),
    mask_value(857),
    mask_value(858),
    mask_value(859),
    mask_value(860),
    mask_value(861),
    mask_value(862),
    mask_value(863),
    mask_value(864),
    mask_value(865),
    mask_value(866),
    mask_value(867),
    mask_value(868),
    mask_value(869),
    mask_value(870),
    mask_value(871),
    mask_value(872),
    mask_value(873),
    mask_value(874),
    mask_value(875),
    mask_value(876),
    mask_value(877),
    mask_value(878),
    mask_value(879),
    mask_value(880),
    mask_value(881),
    mask_value(882),
    mask_value(883),
    mask_value(884),
    mask_value(885),
    mask_value(886),
    mask_value(887),
    mask_value(888),
    mask_value(889),
    mask_value(890),
    mask_value(891),
    mask_value(892),
    mask_value(893),
    mask_value(894),
    mask_value(895),
    mask_value(896),
    mask_value(897),
    mask_value(898),
    mask_value(899),
    mask_value(900),
    mask_value(901),
    mask_value(902),
    mask_value(903),
    mask_value(904),
    mask_value(905),
    mask_value(906),
    mask_value(907),
    mask_value(908),
    mask_value(909),
    mask_value(910),
    mask_value(911),
    mask_value(912),
    mask_value(913),
    mask_value(914),
    mask_value(915),
    mask_value(916),
    mask_value(917),
    mask_value(918),
    mask_value(919),
    mask_value(920),
    mask_value(921),
    mask_value(922),
    mask_value(923),
    mask_value(924),
    mask_value(925),
    mask_value(926),
    mask_value(927),
    mask_value(928),
    mask_value(929),
    mask_value(930),
    mask_value(931),
    mask_value(932),
    mask_value(933),
    mask_value(934),
    mask_value(935),
    mask_value(936),
    mask_value(937),
    mask_value(938),
    mask_value(939),
    mask_value(940),
    mask_value(941),
    mask_value(942),
    mask_value(943),
    mask_value(944),
    mask_value(945),
    mask_value(946),
    mask_value(947),
    mask_value(948),
    mask_value(949),
    mask_value(950),
    mask_value(951),
    mask_value(952),
    mask_value(953),
    mask_value(954),
    mask_value(955),
    mask_value(956),
    mask_value(957),
    mask_value(958),
    mask_value(959),
    mask_value(960),
    mask_value(961),
    mask_value(962),
    mask_value(963),
    mask_value(964),
    mask_value(965),
    mask_value(966),
    mask_value(967),
    mask_value(968),
    mask_value(969),
    mask_value(970),
    mask_value(971),
    mask_value(972),
    mask_value(973),
    mask_value(974),
    mask_value(975),
    mask_value(976),
    mask_value(977),
    mask_value(978),
    mask_value(979),
    mask_value(980),
    mask_value(981),
    mask_value(982),
    mask_value(983),
    mask_value(984),
    mask_value(985),
    mask_value(986),
    mask_value(987),
    mask_value(988),
    mask_value(989),
    mask_value(990),
    mask_value(991),
    mask_value(992),
    mask_value(993),
    mask_value(994),
    mask_value(995),
    mask_value(996),
    mask_value(997),
    mask_value(998),
    mask_value(999),
    mask_value(1000),
    mask_value(1001),
    mask_value(1002),
    mask_value(1003),
    mask_value(1004),
    mask_value(1005),
    mask_value(1006),
    mask_value(1007),
    mask_value(1008),
    mask_value(1009),
    mask_value(1010),
    mask_value(1011),
    mask_value(1012),
    mask_value(1013),
    mask_value(1014),
    mask_value(1015),
    mask_value(1016),
    mask_value(1017),
    mask_value(1018),
    mask_value(1019),
    mask_value(1020),
    mask_value(1021),
    mask_value(1022),
    mask_value(1023),
    mask_value(1024),
    mask_value(1025),
    mask_value(1026),
    mask_value(1027),
    mask_value(1028),
    mask_value(1029),
    mask_value(1030),
    mask_value(1031),
    mask_value(1032),
    mask_value(1033),
    mask_value(1034),
    mask_value(1035),
    mask_value(1036),
    mask_value(1037),
    mask_value(1038),
    mask_value(1039),
    mask_value(1040),
    mask_value(1041),
    mask_value(1042),
    mask_value(1043),
    mask_value(1044),
    mask_value(1045),
    mask_value(1046),
    mask_value(1047),
    mask_value(1048),
    mask_value(1049),
    mask_value(1050),
    mask_value(1051),
    mask_value(1052),
    mask_value(1053),
    mask_value(1054),
    mask_value(1055),
    mask_value(1056),
    mask_value(1057),
    mask_value(1058),
    mask_value(1059),
    mask_value(1060),
    mask_value(1061),
    mask_value(1062),
    mask_value(1063),
    mask_value(1064),
    mask_value(1065),
    mask_value(1066),
    mask_value(1067),
    mask_value(1068),
    mask_value(1069),
    mask_value(1070),
    mask_value(1071),
    mask_value(1072),
    mask_value(1073),
    mask_value(1074),
    mask_value(1075),
    mask_value(1076),
    mask_value(1077),
    mask_value(1078),
    mask_value(1079),
    mask_value(1080),
    mask_value(1081),
    mask_value(1082),
    mask_value(1083),
    mask_value(1084),
    mask_value(1085),
    mask_value(1086),
    mask_value(1087),
    mask_value(1088),
    mask_value(1089),
    mask_value(1090),
    mask_value(1091),
    mask_value(1092),
    mask_value(1093),
    mask_value(1094),
    mask_value(1095),
    mask_value(1096),
    mask_value(1097),
    mask_value(1098),
    mask_value(1099),
    mask_value(1100),
    mask_value(1101),
    mask_value(1102),
    mask_value(1103),
    mask_value(1104),
    mask_value(1105),
    mask_value(1106),
    mask_value(1107),
    mask_value(1108),
    mask_value(1109),
    mask_value(1110),
    mask_value(1111),
    mask_value(1112),
    mask_value(1113),
    mask_value(1114),
    mask_value(1115),
    mask_value(1116),
    mask_value(1117),
    mask_value(1118),
    mask_value(1119),
    mask_value(1120),
    mask_value(1121),
    mask_value(1122),
    mask_value(1123),
    mask_value(1124),
    mask_value(1125),
    mask_value(1126),
    mask_value(1127),
    mask_value(1128),
    mask_value(1129),
    mask_value(1130),
    mask_value(1131),
    mask_value(1132),
    mask_value(1133),
    mask_value(1134),
    mask_value(1135),
    mask_value(1136),
    mask_value(1137),
    mask_value(1138),
    mask_value(1139),
    mask_value(1140),
    mask_value(1141),
    mask_value(1142),
    mask_value(1143),
    mask_value(1144),
    mask_value(1145),
    mask_value(1146),
    mask_value(1147),
    mask_value(1148),
    mask_value(1149),
    mask_value(1150),
    mask_value(1151),
    mask_value(1152),
    mask_value(1153),
    mask_value(1154),
    mask_value(1155),
    mask_value(1156),
    mask_value(1157),
    mask_value(1158),
    mask_value(1159),
    mask_value(1160),
    mask_value(1161),
    mask_value(1162),
    mask_value(1163),
    mask_value(1164),
    mask_value(1165),
    mask_value(1166),
    mask_value(1167),
    mask_value(1168),
    mask_value(1169),
    mask_value(1170),
    mask_value(1171),
    mask_value(1172),
    mask_value(1173),
    mask_value(1174),
    mask_value(1175),
    mask_value(1176),
    mask_value(1177),
    mask_value(1178),
    mask_value(1179),
    mask_value(1180),
    mask_value(1181),
    mask_value(1182),
    mask_value(1183),
    mask_value(1184),
    mask_value(1185),
    mask_value(1186),
    mask_value(1187),
    mask_value(1188),
    mask_value(1189),
    mask_value(1190),
    mask_value(1191),
    mask_value(1192),
    mask_value(1193),
    mask_value(1194),
    mask_value(1195),
    mask_value(1196),
    mask_value(1197),
    mask_value(1198),
    mask_value(1199),
    mask_value(1200),
    mask_value(1201),
    mask_value(1202),
    mask_value(1203),
    mask_value(1204),
    mask_value(1205),
    mask_value(1206),
    mask_value(1207),
    mask_value(1208),
    mask_value(1209),
    mask_value(1210),
    mask_value(1211),
    mask_value(1212),
    mask_value(1213),
    mask_value(1214),
    mask_value(1215),
    mask_value(1216),
    mask_value(1217),
    mask_value(1218),
    mask_value(1219),
    mask_value(1220),
    mask_value(1221),
    mask_value(1222),
    mask_value(1223),
    mask_value(1224),
    mask_value(1225),
    mask_value(1226),
    mask_value(1227),
    mask_value(1228),
    mask_value(1229),
    mask_value(1230),
    mask_value(1231),
    mask_value(1232),
    mask_value(1233),
    mask_value(1234),
    mask_value(1235),
    mask_value(1236),
    mask_value(1237),
    mask_value(1238),
    mask_value(1239),
    mask_value(1240),
    mask_value(1241),
    mask_value(1242),
    mask_value(1243),
    mask_value(1244),
    mask_value(1245),
    mask_value(1246),
    mask_value(1247),
    mask_value(1248),
    mask_value(1249),
    mask_value(1250),
    mask_value(1251),
    mask_value(1252),
    mask_value(1253),
    mask_value(1254),
    mask_value(1255),
    mask_value(1256),
    mask_value(1257),
    mask_value(1258),
    mask_value(1259),
    mask_value(1260),
    mask_value(1261),
    mask_value(1262),
    mask_value(1263),
    mask_value(1264),
    mask_value(1265),
    mask_value(1266),
    mask_value(1267),
    mask_value(1268),
    mask_value(1269),
    mask_value(1270),
    mask_value(1271),
    mask_value(1272),
    mask_value(1273),
    mask_value(1274),
    mask_value(1275),
    mask_value(1276),
    mask_value(1277),
    mask_value(1278),
    mask_value(1279),
    mask_value(1280),
    mask_value(1281),
    mask_value(1282),
    mask_value(1283),
    mask_value(1284),
    mask_value(1285),
    mask_value(1286),
    mask_value(1287),
    mask_value(1288),
    mask_value(1289),
    mask_value(1290),
    mask_value(1291),
    mask_value(1292),
    mask_value(1293),
    mask_value(1294),
    mask_value(1295),
    mask_value(1296),
    mask_value(1297),
    mask_value(1298),
    mask_value(1299),
    mask_value(1300),
    mask_value(1301),
    mask_value(1302),
    mask_value(1303),
    mask_value(1304),
    mask_value(1305),
    mask_value(1306),
    mask_value(1307),
    mask_value(1308),
    mask_value(1309),
    mask_value(1310),
    mask_value(1311),
    mask_value(1312),
    mask_value(1313),
    mask_value(1314),
    mask_value(1315),
    mask_value(1316),
    mask_value(1317),
    mask_value(1318),
    mask_value(1319),
    mask_value(1320),
    mask_value(1321),
    mask_value(1322),
    mask_value(1323),
    mask_value(1324),
    mask_value(1325),
    mask_value(1326),
    mask_value(1327),
    mask_value(1328),
    mask_value(1329),
    mask_value(1330),
    mask_value(1331),
    mask_value(1332),
    mask_value(1333),
    mask_value(1334),
    mask_value(1335),
    mask_value(1336),
    mask_value(1337),
    mask_value(1338),
    mask_value(1339),
    mask_value(1340),
    mask_value(1341),
    mask_value(1342),
    mask_value(1343),
    mask_value(1344),
    mask_value(1345),
    mask_value(1346),
    mask_value(1347),
    mask_value(1348),
    mask_value(1349),
    mask_value(1350),
    mask_value(1351),
    mask_value(1352),
    mask_value(1353),
    mask_value(1354),
    mask_value(1355),
    mask_value(1356),
    mask_value(1357),
    mask_value(1358),
    mask_value(1359),
    mask_value(1360),
    mask_value(1361),
    mask_value(1362),
    mask_value(1363),
    mask_value(1364),
    mask_value(1365),
    mask_value(1366),
    mask_value(1367),
    mask_value(1368),
    mask_value(1369),
    mask_value(1370),
    mask_value(1371),
    mask_value(1372),
    mask_value(1373),
    mask_value(1374),
    mask_value(1375),
    mask_value(1376),
    mask_value(1377),
    mask_value(1378),
    mask_value(1379),
    mask_value(1380),
    mask_value(1381),
    mask_value(1382),
    mask_value(1383),
    mask_value(1384),
    mask_value(1385),
    mask_value(1386),
    mask_value(1387),
    mask_value(1388),
    mask_value(1389),
    mask_value(1390),
    mask_value(1391),
    mask_value(1392),
    mask_value(1393),
    mask_value(1394),
    mask_value(1395),
    mask_value(1396),
    mask_value(1397),
    mask_value(1398),
    mask_value(1399),
    mask_value(1400),
    mask_value(1401),
    mask_value(1402),
    mask_value(1403),
    mask_value(1404),
    mask_value(1405),
    mask_value(1406),
    mask_value(1407),
    mask_value(1408),
    mask_value(1409),
    mask_value(1410),
    mask_value(1411),
    mask_value(1412),
    mask_value(1413),
    mask_value(1414),
    mask_value(1415),
    mask_value(1416),
    mask_value(1417),
    mask_value(1418),
    mask_value(1419),
    mask_value(1420),
    mask_value(1421),
    mask_value(1422),
    mask_value(1423),
    mask_value(1424),
    mask_value(1425),
    mask_value(1426),
    mask_value(1427),
    mask_value(1428),
    mask_value(1429),
    mask_value(1430),
    mask_value(1431),
    mask_value(1432),
    mask_value(1433),
    mask_value(1434),
    mask_value(1435),
    mask_value(1436),
    mask_value(1437),
    mask_value(1438),
    mask_value(1439),
    mask_value(1440),
    mask_value(1441),
    mask_value(1442),
    mask_value(1443),
    mask_value(1444),
    mask_value(1445),
    mask_value(1446),
    mask_value(1447),
    mask_value(1448),
    mask_value(1449),
    mask_value(1450),
    mask_value(1451),
    mask_value(1452),
    mask_value(1453),
    mask_value(1454),
    mask_value(1455),
    mask_value(1456),
    mask_value(1457),
    mask_value(1458),
    mask_value(1459),
    mask_value(1460),
    mask_value(1461),
    mask_value(1462),
    mask_value(1463),
    mask_value(1464),
    mask_value(1465),
    mask_value(1466),
    mask_value(1467),
    mask_value(1468),
    mask_value(1469),
    mask_value(1470),
    mask_value(1471),
    mask_value(1472),
    mask_value(1473),
    mask_value(1474),
    mask_value(1475),
    mask_value(1476),
    mask_value(1477),
    mask_value(1478),
    mask_value(1479),
    mask_value(1480),
    mask_value(1481),
    mask_value(1482),
    mask_value(1483),
    mask_value(1484),
    mask_value(1485),
    mask_value(1486),
    mask_value(1487),
    mask_value(1488),
    mask_value(1489),
    mask_value(1490),
    mask_value(1491),
    mask_value(1492),
    mask_value(1493),
    mask_value(1494),
    mask_value(1495),
    mask_value(1496),
    mask_value(1497),
    mask_value(1498),
    mask_value(1499),
    mask_value(1500),
    mask_value(1501),
    mask_value(1502),
    mask_value(1503),
    mask_value(1504),
    mask_value(1505),
    mask_value(1506),
    mask_value(1507),
    mask_value(1508),
    mask_value(1509),
    mask_value(1510),
    mask_value(1511),
    mask_value(1512),
    mask_value(1513),
    mask_value(1514),
    mask_value(1515),
    mask_value(1516),
    mask_value(1517),
    mask_value(1518),
    mask_value(1519),
    mask_value(1520),
    mask_value(1521),
    mask_value(1522),
    mask_value(1523),
    mask_value(1524),
    mask_value(1525),
    mask_value(1526),
    mask_value(1527),
    mask_value(1528),
    mask_value(1529),
    mask_value(1530),
    mask_value(1531),
    mask_value(1532),
    mask_value(1533),
    mask_value(1534),
    mask_value(1535),
    mask_value(1536),
    mask_value(1537),
    mask_value(1538),
    mask_value(1539),
    mask_value(1540),
    mask_value(1541),
    mask_value(1542),
    mask_value(1543),
    mask_value(1544),
    mask_value(1545),
    mask_value(1546),
    mask_value(1547),
    mask_value(1548),
    mask_value(1549),
    mask_value(1550),
    mask_value(1551),
    mask_value(1552),
    mask_value(1553),
    mask_value(1554),
    mask_value(1555),
    mask_value(1556),
    mask_value(1557),
    mask_value(1558),
    mask_value(1559),
    mask_value(1560),
    mask_value(1561),
    mask_value(1562),
    mask_value(1563),
    mask_value(1564),
    mask_value(1565),
    mask_value(1566),
    mask_value(1567),
    mask_value(1568),
    mask_value(1569),
    mask_value(1570),
    mask_value(1571),
    mask_value(1572),
    mask_value(1573),
    mask_value(1574),
    mask_value(1575),
    mask_value(1576),
    mask_value(1577),
    mask_value(1578),
    mask_value(1579),
    mask_value(1580),
    mask_value(1581),
    mask_value(1582),
    mask_value(1583),
    mask_value(1584),
    mask_value(1585),
    mask_value(1586),
    mask_value(1587),
    mask_value(1588),
    mask_value(1589),
    mask_value(1590),
    mask_value(1591),
    mask_value(1592),
    mask_value(1593),
    mask_value(1594),
    mask_value(1595),
    mask_value(1596),
    mask_value(1597),
    mask_value(1598),
    mask_value(1599),
    mask_value(1600),
    mask_value(1601),
    mask_value(1602),
    mask_value(1603),
    mask_value(1604),
    mask_value(1605),
    mask_value(1606),
    mask_value(1607),
    mask_value(1608),
    mask_value(1609),
    mask_value(1610),
    mask_value(1611),
    mask_value(1612),
    mask_value(1613),
    mask_value(1614),
    mask_value(1615),
    mask_value(1616),
    mask_value(1617),
    mask_value(1618),
    mask_value(1619),
    mask_value(1620),
    mask_value(1621),
    mask_value(1622),
    mask_value(1623),
    mask_value(1624),
    mask_value(1625),
    mask_value(1626),
    mask_value(1627),
    mask_value(1628),
    mask_value(1629),
    mask_value(1630),
    mask_value(1631),
    mask_value(1632),
    mask_value(1633),
    mask_value(1634),
    mask_value(1635),
    mask_value(1636),
    mask_value(1637),
    mask_value(1638),
    mask_value(1639),
    mask_value(1640),
    mask_value(1641),
    mask_value(1642),
    mask_value(1643),
    mask_value(1644),
    mask_value(1645),
    mask_value(1646),
    mask_value(1647),
    mask_value(1648),
    mask_value(1649),
    mask_value(1650),
    mask_value(1651),
    mask_value(1652),
    mask_value(1653),
    mask_value(1654),
    mask_value(1655),
    mask_value(1656),
    mask_value(1657),
    mask_value(1658),
    mask_value(1659),
    mask_value(1660),
    mask_value(1661),
    mask_value(1662),
    mask_value(1663),
    mask_value(1664),
    mask_value(1665),
    mask_value(1666),
    mask_value(1667),
    mask_value(1668),
    mask_value(1669),
    mask_value(1670),
    mask_value(1671),
    mask_value(1672),
    mask_value(1673),
    mask_value(1674),
    mask_value(1675),
    mask_value(1676),
    mask_value(1677),
    mask_value(1678),
    mask_value(1679),
    mask_value(1680),
    mask_value(1681),
    mask_value(1682),
    mask_value(1683),
    mask_value(1684),
    mask_value(1685),
    mask_value(1686),
    mask_value(1687),
    mask_value(1688),
    mask_value(1689),
    mask_value(1690),
    mask_value(1691),
    mask_value(1692),
    mask_value(1693),
    mask_value(1694),
    mask_value(1695),
    mask_value(1696),
    mask_value(1697),
    mask_value(1698),
    mask_value(1699),
    mask_value(1700),
    mask_value(1701),
    mask_value(1702),
    mask_value(1703),
    mask_value(1704),
    mask_value(1705),
    mask_value(1706),
    mask_value(1707),
    mask_value(1708),
    mask_value(1709),
    mask_value(1710),
    mask_value(1711),
    mask_value(1712),
    mask_value(1713),
    mask_value(1714),
    mask_value(1715),
    mask_value(1716),
    mask_value(1717),
    mask_value(1718),
    mask_value(1719),
    mask_value(1720),
    mask_value(1721),
    mask_value(1722),
    mask_value(1723),
    mask_value(1724),
    mask_value(1725),
    mask_value(1726),
    mask_value(1727),
    mask_value(1728),
    mask_value(1729),
    mask_value(1730),
    mask_value(1731),
    mask_value(1732),
    mask_value(1733),
    mask_value(1734),
    mask_value(1735),
    mask_value(1736),
    mask_value(1737),
    mask_value(1738),
    mask_value(1739),
    mask_value(1740),
    mask_value(1741),
    mask_value(1742),
    mask_value(1743),
    mask_value(1744),
    mask_value(1745),
    mask_value(1746),
    mask_value(1747),
    mask_value(1748),
    mask_value(1749),
    mask_value(1750),
    mask_value(1751),
    mask_value(1752),
    mask_value(1753),
    mask_value(1754),
    mask_value(1755),
    mask_value(1756),
    mask_value(1757),
    mask_value(1758),
    mask_value(1759),
    mask_value(1760),
    mask_value(1761),
    mask_value(1762),
    mask_value(1763),
    mask_value(1764),
    mask_value(1765),
    mask_value(1766),
    mask_value(1767),
    mask_value(1768),
    mask_value(1769),
    mask_value(1770),
    mask_value(1771),
    mask_value(1772),
    mask_value(1773),
    mask_value(1774),
    mask_value(1775),
    mask_value(1776),
    mask_value(1777),
    mask_value(1778),
    mask_value(1779),
    mask_value(1780),
    mask_value(1781),
    mask_value(1782),
    mask_value(1783),
    mask_value(1784),
    mask_value(1785),
    mask_value(1786),
    mask_value(1787),
    mask_value(1788),
    mask_value(1789),
    mask_value(1790),
    mask_value(1791),
    mask_value(1792),
    mask_value(1793),
    mask_value(1794),
    mask_value(1795),
    mask_value(1796),
    mask_value(1797),
    mask_value(1798),
    mask_value(1799),
    mask_value(1800),
    mask_value(1801),
    mask_value(1802),
    mask_value(1803),
    mask_value(1804),
    mask_value(1805),
    mask_value(1806),
    mask_value(1807),
    mask_value(1808),
    mask_value(1809),
    mask_value(1810),
    mask_value(1811),
    mask_value(1812),
    mask_value(1813),
    mask_value(1814),
    mask_value(1815),
    mask_value(1816),
    mask_value(1817),
    mask_value(1818),
    mask_value(1819),
    mask_value(1820),
    mask_value(1821),
    mask_value(1822),
    mask_value(1823),
    mask_value(1824),
    mask_value(1825),
    mask_value(1826),
    mask_value(1827),
    mask_value(1828),
    mask_value(1829),
    mask_value(1830),
    mask_value(1831),
    mask_value(1832),
    mask_value(1833),
    mask_value(1834),
    mask_value(1835),
    mask_value(1836),
    mask_value(1837),
    mask_value(1838),
    mask_value(1839),
    mask_value(1840),
    mask_value(1841),
    mask_value(1842),
    mask_value(1843),
    mask_value(1844),
    mask_value(1845),
    mask_value(1846),
    mask_value(1847),
    mask_value(1848),
    mask_value(1849),
    mask_value(1850),
    mask_value(1851),
    mask_value(1852),
    mask_value(1853),
    mask_value(1854),
    mask_value(1855),
    mask_value(1856),
    mask_value(1857),
    mask_value(1858),
    mask_value(1859),
    mask_value(1860),
    mask_value(1861),
    mask_value(1862),
    mask_value(1863),
    mask_value(1864),
    mask_value(1865),
    mask_value(1866),
    mask_value(1867),
    mask_value(1868),
    mask_value(1869),
    mask_value(1870),
    mask_value(1871),
    mask_value(1872),
    mask_value(1873),
    mask_value(1874),
    mask_value(1875),
    mask_value(1876),
    mask_value(1877),
    mask_value(1878),
    mask_value(1879),
    mask_value(1880),
    mask_value(1881),
    mask_value(1882),
    mask_value(1883),
    mask_value(1884),
    mask_value(1885),
    mask_value(1886),
    mask_value(1887),
    mask_value(1888),
    mask_value(1889),
    mask_value(1890),
    mask_value(1891),
    mask_value(1892),
    mask_value(1893),
    mask_value(1894),
    mask_value(1895),
    mask_value(1896),
    mask_value(1897),
    mask_value(1898),
    mask_value(1899),
    mask_value(1900),
    mask_value(1901),
    mask_value(1902),
    mask_value(1903),
    mask_value(1904),
    mask_value(1905),
    mask_value(1906),
    mask_value(1907),
    mask_value(1908),
    mask_value(1909),
    mask_value(1910),
    mask_value(1911),
    mask_value(1912),
    mask_value(1913),
    mask_value(1914),
    mask_value(1915),
    mask_value(1916),
    mask_value(1917),
    mask_value(1918),
    mask_value(1919),
    mask_value(1920),
    mask_value(1921),
    mask_value(1922),
    mask_value(1923),
    mask_value(1924),
    mask_value(1925),
    mask_value(1926),
    mask_value(1927),
    mask_value(1928),
    mask_value(1929),
    mask_value(1930),
    mask_value(1931),
    mask_value(1932),
    mask_value(1933),
    mask_value(1934),
    mask_value(1935),
    mask_value(1936),
    mask_value(1937),
    mask_value(1938),
    mask_value(1939),
    mask_value(1940),
    mask_value(1941),
    mask_value(1942),
    mask_value(1943),
    mask_value(1944),
    mask_value(1945),
    mask_value(1946),
    mask_value(1947),
    mask_value(1948),
    mask_value(1949),
    mask_value(1950),
    mask_value(1951),
    mask_value(1952),
    mask_value(1953),
    mask_value(1954),
    mask_value(1955),
    mask_value(1956),
    mask_value(1957),
    mask_value(1958),
    mask_value(1959),
    mask_value(1960),
    mask_value(1961),
    mask_value(1962),
    mask_value(1963),
    mask_value(1964),
    mask_value(1965),
    mask_value(1966),
    mask_value(1967),
    mask_value(1968),
    mask_value(1969),
    mask_value(1970),
    mask_value(1971),
    mask_value(1972),
    mask_value(1973),
    mask_value(1974),
    mask_value(1975),
    mask_value(1976),
    mask_value(1977),
    mask_value(1978),
    mask_value(1979),
    mask_value(1980),
    mask_value(1981),
    mask_value(1982),
    mask_value(1983),
    mask_value(1984),
    mask_value(1985),
    mask_value(1986),
    mask_value(1987),
    mask_value(1988),
    mask_value(1989),
    mask_value(1990),
    mask_value(1991),
    mask_value(1992),
    mask_value(1993),
    mask_value(1994),
    mask_value(1995),
    mask_value(1996),
    mask_value(1997),
    mask_value(1998),
    mask_value(1999),
    mask_value(2000),
    mask_value(2001),
    mask_value(2002),
    mask_value(2003),
    mask_value(2004),
    mask_value(2005),
    mask_value(2006),
    mask_value(2007),
    mask_value(2008),
    mask_value(2009),
    mask_value(2010),
    mask_value(2011),
    mask_value(2012),
    mask_value(2013),
    mask_value(2014),
    mask_value(2015),
    mask_value(2016),
    mask_value(2017),
    mask_value(2018),
    mask_value(2019),
    mask_value(2020),
    mask_value(2021),
    mask_value(2022),
    mask_value(2023),
    mask_value(2024),
    mask_value(2025),
    mask_value(2026),
    mask_value(2027),
    mask_value(2028),
    mask_value(2029),
    mask_value(2030),
    mask_value(2031),
    mask_value(2032),
    mask_value(2033),
    mask_value(2034),
    mask_value(2035),
    mask_value(2036),
    mask_value(2037),
    mask_value(2038),
    mask_value(2039),
    mask_value(2040),
    mask_value(2041),
    mask_value(2042),
    mask_value(2043),
    mask_value(2044),
    mask_value(2045),
    mask_value(2046),
    mask_value(2047),
    mask_value(2048),
];

#[inline]
fn mask_value(bits: u32) -> BigInt {
    (BigInt::from(1) << bits) - BigInt::from(1)
}

#[inline(always)]
pub(crate) fn lookup_mask(bits: usize) -> &'static BigInt {
    assert!(bits <= 2048, "unsupported BitVec size: {bits}");

    &MASK_TABLE[bits]
}
