des

The DES library, a software library dedicated to the Data Encryption Standard (DES).

:Date: 2020-05-04 :Authors: - Renaud Pacalet, renaud.pacalet@telecom-paris.fr

Attention

  1. Most functions of the des library check their input parameters and issue warnings or errors when they carry invalid values. Warnings are printed on the standard error output. Errors are also printed on the standard error output and the program exits.
  2. The des library uses a single data type to represent all the data of the DES standard: unsigned integers.
  3. Data are always right aligned: the meaningful bits are always the rightmost bits of the unsigned integer.
   1# MAIN-ONLY: DO NOT MODIFY THIS FILE
   2
   3#
   4# Copyright (C) Telecom Paris
   5# 
   6# This file must be used under the terms of the CeCILL. This source
   7# file is licensed as described in the file COPYING, which you should
   8# have received as part of this distribution. The terms are also
   9# available at:
  10# https://cecill.info/licences/Licence_CeCILL_V2.1-en.html
  11#
  12
  13"""
  14The DES library, a software library dedicated to the Data Encryption Standard (DES).
  15
  16:Date: 2020-05-04
  17:Authors:
  18    - Renaud Pacalet, renaud.pacalet@telecom-paris.fr
  19
  20Attention
  21=========
  22
  231. Most functions of the des library check their input parameters and issue
  24warnings or errors when they carry invalid values. Warnings are printed on the
  25standard error output. Errors are also printed on the standard error output and
  26the program exits.
  272. The des library uses a single data type to represent all the data of the DES
  28standard: unsigned integers.
  293. Data are always right aligned: the meaningful bits are always the rightmost
  30bits of the unsigned integer.
  31
  32"""
  33
  34import sys
  35
  36# Number of test vectors
  37NUM_TEST_VECTORS = 64
  38
  39# IP permutation table
  40IP_K = (
  41  0x0000000000000000, 0x0000008000000000,
  42  0x0000000000000080, 0x0000008000000080,
  43  0x0000800000000000, 0x0000808000000000,
  44  0x0000800000000080, 0x0000808000000080,
  45  0x0000000000008000, 0x0000008000008000,
  46  0x0000000000008080, 0x0000008000008080,
  47  0x0000800000008000, 0x0000808000008000,
  48  0x0000800000008080, 0x0000808000008080,
  49  0x0080000000000000, 0x0080008000000000,
  50  0x0080000000000080, 0x0080008000000080,
  51  0x0080800000000000, 0x0080808000000000,
  52  0x0080800000000080, 0x0080808000000080,
  53  0x0080000000008000, 0x0080008000008000,
  54  0x0080000000008080, 0x0080008000008080,
  55  0x0080800000008000, 0x0080808000008000,
  56  0x0080800000008080, 0x0080808000008080,
  57  0x0000000000800000, 0x0000008000800000,
  58  0x0000000000800080, 0x0000008000800080,
  59  0x0000800000800000, 0x0000808000800000,
  60  0x0000800000800080, 0x0000808000800080,
  61  0x0000000000808000, 0x0000008000808000,
  62  0x0000000000808080, 0x0000008000808080,
  63  0x0000800000808000, 0x0000808000808000,
  64  0x0000800000808080, 0x0000808000808080,
  65  0x0080000000800000, 0x0080008000800000,
  66  0x0080000000800080, 0x0080008000800080,
  67  0x0080800000800000, 0x0080808000800000,
  68  0x0080800000800080, 0x0080808000800080,
  69  0x0080000000808000, 0x0080008000808000,
  70  0x0080000000808080, 0x0080008000808080,
  71  0x0080800000808000, 0x0080808000808000,
  72  0x0080800000808080, 0x0080808000808080,
  73  0x8000000000000000, 0x8000008000000000,
  74  0x8000000000000080, 0x8000008000000080,
  75  0x8000800000000000, 0x8000808000000000,
  76  0x8000800000000080, 0x8000808000000080,
  77  0x8000000000008000, 0x8000008000008000,
  78  0x8000000000008080, 0x8000008000008080,
  79  0x8000800000008000, 0x8000808000008000,
  80  0x8000800000008080, 0x8000808000008080,
  81  0x8080000000000000, 0x8080008000000000,
  82  0x8080000000000080, 0x8080008000000080,
  83  0x8080800000000000, 0x8080808000000000,
  84  0x8080800000000080, 0x8080808000000080,
  85  0x8080000000008000, 0x8080008000008000,
  86  0x8080000000008080, 0x8080008000008080,
  87  0x8080800000008000, 0x8080808000008000,
  88  0x8080800000008080, 0x8080808000008080,
  89  0x8000000000800000, 0x8000008000800000,
  90  0x8000000000800080, 0x8000008000800080,
  91  0x8000800000800000, 0x8000808000800000,
  92  0x8000800000800080, 0x8000808000800080,
  93  0x8000000000808000, 0x8000008000808000,
  94  0x8000000000808080, 0x8000008000808080,
  95  0x8000800000808000, 0x8000808000808000,
  96  0x8000800000808080, 0x8000808000808080,
  97  0x8080000000800000, 0x8080008000800000,
  98  0x8080000000800080, 0x8080008000800080,
  99  0x8080800000800000, 0x8080808000800000,
 100  0x8080800000800080, 0x8080808000800080,
 101  0x8080000000808000, 0x8080008000808000,
 102  0x8080000000808080, 0x8080008000808080,
 103  0x8080800000808000, 0x8080808000808000,
 104  0x8080800000808080, 0x8080808000808080,
 105  0x0000000080000000, 0x0000008080000000,
 106  0x0000000080000080, 0x0000008080000080,
 107  0x0000800080000000, 0x0000808080000000,
 108  0x0000800080000080, 0x0000808080000080,
 109  0x0000000080008000, 0x0000008080008000,
 110  0x0000000080008080, 0x0000008080008080,
 111  0x0000800080008000, 0x0000808080008000,
 112  0x0000800080008080, 0x0000808080008080,
 113  0x0080000080000000, 0x0080008080000000,
 114  0x0080000080000080, 0x0080008080000080,
 115  0x0080800080000000, 0x0080808080000000,
 116  0x0080800080000080, 0x0080808080000080,
 117  0x0080000080008000, 0x0080008080008000,
 118  0x0080000080008080, 0x0080008080008080,
 119  0x0080800080008000, 0x0080808080008000,
 120  0x0080800080008080, 0x0080808080008080,
 121  0x0000000080800000, 0x0000008080800000,
 122  0x0000000080800080, 0x0000008080800080,
 123  0x0000800080800000, 0x0000808080800000,
 124  0x0000800080800080, 0x0000808080800080,
 125  0x0000000080808000, 0x0000008080808000,
 126  0x0000000080808080, 0x0000008080808080,
 127  0x0000800080808000, 0x0000808080808000,
 128  0x0000800080808080, 0x0000808080808080,
 129  0x0080000080800000, 0x0080008080800000,
 130  0x0080000080800080, 0x0080008080800080,
 131  0x0080800080800000, 0x0080808080800000,
 132  0x0080800080800080, 0x0080808080800080,
 133  0x0080000080808000, 0x0080008080808000,
 134  0x0080000080808080, 0x0080008080808080,
 135  0x0080800080808000, 0x0080808080808000,
 136  0x0080800080808080, 0x0080808080808080,
 137  0x8000000080000000, 0x8000008080000000,
 138  0x8000000080000080, 0x8000008080000080,
 139  0x8000800080000000, 0x8000808080000000,
 140  0x8000800080000080, 0x8000808080000080,
 141  0x8000000080008000, 0x8000008080008000,
 142  0x8000000080008080, 0x8000008080008080,
 143  0x8000800080008000, 0x8000808080008000,
 144  0x8000800080008080, 0x8000808080008080,
 145  0x8080000080000000, 0x8080008080000000,
 146  0x8080000080000080, 0x8080008080000080,
 147  0x8080800080000000, 0x8080808080000000,
 148  0x8080800080000080, 0x8080808080000080,
 149  0x8080000080008000, 0x8080008080008000,
 150  0x8080000080008080, 0x8080008080008080,
 151  0x8080800080008000, 0x8080808080008000,
 152  0x8080800080008080, 0x8080808080008080,
 153  0x8000000080800000, 0x8000008080800000,
 154  0x8000000080800080, 0x8000008080800080,
 155  0x8000800080800000, 0x8000808080800000,
 156  0x8000800080800080, 0x8000808080800080,
 157  0x8000000080808000, 0x8000008080808000,
 158  0x8000000080808080, 0x8000008080808080,
 159  0x8000800080808000, 0x8000808080808000,
 160  0x8000800080808080, 0x8000808080808080,
 161  0x8080000080800000, 0x8080008080800000,
 162  0x8080000080800080, 0x8080008080800080,
 163  0x8080800080800000, 0x8080808080800000,
 164  0x8080800080800080, 0x8080808080800080,
 165  0x8080000080808000, 0x8080008080808000,
 166  0x8080000080808080, 0x8080008080808080,
 167  0x8080800080808000, 0x8080808080808000,
 168  0x8080800080808080, 0x8080808080808080,
 169  0x0000000000000000, 0x0000004000000000,
 170  0x0000000000000040, 0x0000004000000040,
 171  0x0000400000000000, 0x0000404000000000,
 172  0x0000400000000040, 0x0000404000000040,
 173  0x0000000000004000, 0x0000004000004000,
 174  0x0000000000004040, 0x0000004000004040,
 175  0x0000400000004000, 0x0000404000004000,
 176  0x0000400000004040, 0x0000404000004040,
 177  0x0040000000000000, 0x0040004000000000,
 178  0x0040000000000040, 0x0040004000000040,
 179  0x0040400000000000, 0x0040404000000000,
 180  0x0040400000000040, 0x0040404000000040,
 181  0x0040000000004000, 0x0040004000004000,
 182  0x0040000000004040, 0x0040004000004040,
 183  0x0040400000004000, 0x0040404000004000,
 184  0x0040400000004040, 0x0040404000004040,
 185  0x0000000000400000, 0x0000004000400000,
 186  0x0000000000400040, 0x0000004000400040,
 187  0x0000400000400000, 0x0000404000400000,
 188  0x0000400000400040, 0x0000404000400040,
 189  0x0000000000404000, 0x0000004000404000,
 190  0x0000000000404040, 0x0000004000404040,
 191  0x0000400000404000, 0x0000404000404000,
 192  0x0000400000404040, 0x0000404000404040,
 193  0x0040000000400000, 0x0040004000400000,
 194  0x0040000000400040, 0x0040004000400040,
 195  0x0040400000400000, 0x0040404000400000,
 196  0x0040400000400040, 0x0040404000400040,
 197  0x0040000000404000, 0x0040004000404000,
 198  0x0040000000404040, 0x0040004000404040,
 199  0x0040400000404000, 0x0040404000404000,
 200  0x0040400000404040, 0x0040404000404040,
 201  0x4000000000000000, 0x4000004000000000,
 202  0x4000000000000040, 0x4000004000000040,
 203  0x4000400000000000, 0x4000404000000000,
 204  0x4000400000000040, 0x4000404000000040,
 205  0x4000000000004000, 0x4000004000004000,
 206  0x4000000000004040, 0x4000004000004040,
 207  0x4000400000004000, 0x4000404000004000,
 208  0x4000400000004040, 0x4000404000004040,
 209  0x4040000000000000, 0x4040004000000000,
 210  0x4040000000000040, 0x4040004000000040,
 211  0x4040400000000000, 0x4040404000000000,
 212  0x4040400000000040, 0x4040404000000040,
 213  0x4040000000004000, 0x4040004000004000,
 214  0x4040000000004040, 0x4040004000004040,
 215  0x4040400000004000, 0x4040404000004000,
 216  0x4040400000004040, 0x4040404000004040,
 217  0x4000000000400000, 0x4000004000400000,
 218  0x4000000000400040, 0x4000004000400040,
 219  0x4000400000400000, 0x4000404000400000,
 220  0x4000400000400040, 0x4000404000400040,
 221  0x4000000000404000, 0x4000004000404000,
 222  0x4000000000404040, 0x4000004000404040,
 223  0x4000400000404000, 0x4000404000404000,
 224  0x4000400000404040, 0x4000404000404040,
 225  0x4040000000400000, 0x4040004000400000,
 226  0x4040000000400040, 0x4040004000400040,
 227  0x4040400000400000, 0x4040404000400000,
 228  0x4040400000400040, 0x4040404000400040,
 229  0x4040000000404000, 0x4040004000404000,
 230  0x4040000000404040, 0x4040004000404040,
 231  0x4040400000404000, 0x4040404000404000,
 232  0x4040400000404040, 0x4040404000404040,
 233  0x0000000040000000, 0x0000004040000000,
 234  0x0000000040000040, 0x0000004040000040,
 235  0x0000400040000000, 0x0000404040000000,
 236  0x0000400040000040, 0x0000404040000040,
 237  0x0000000040004000, 0x0000004040004000,
 238  0x0000000040004040, 0x0000004040004040,
 239  0x0000400040004000, 0x0000404040004000,
 240  0x0000400040004040, 0x0000404040004040,
 241  0x0040000040000000, 0x0040004040000000,
 242  0x0040000040000040, 0x0040004040000040,
 243  0x0040400040000000, 0x0040404040000000,
 244  0x0040400040000040, 0x0040404040000040,
 245  0x0040000040004000, 0x0040004040004000,
 246  0x0040000040004040, 0x0040004040004040,
 247  0x0040400040004000, 0x0040404040004000,
 248  0x0040400040004040, 0x0040404040004040,
 249  0x0000000040400000, 0x0000004040400000,
 250  0x0000000040400040, 0x0000004040400040,
 251  0x0000400040400000, 0x0000404040400000,
 252  0x0000400040400040, 0x0000404040400040,
 253  0x0000000040404000, 0x0000004040404000,
 254  0x0000000040404040, 0x0000004040404040,
 255  0x0000400040404000, 0x0000404040404000,
 256  0x0000400040404040, 0x0000404040404040,
 257  0x0040000040400000, 0x0040004040400000,
 258  0x0040000040400040, 0x0040004040400040,
 259  0x0040400040400000, 0x0040404040400000,
 260  0x0040400040400040, 0x0040404040400040,
 261  0x0040000040404000, 0x0040004040404000,
 262  0x0040000040404040, 0x0040004040404040,
 263  0x0040400040404000, 0x0040404040404000,
 264  0x0040400040404040, 0x0040404040404040,
 265  0x4000000040000000, 0x4000004040000000,
 266  0x4000000040000040, 0x4000004040000040,
 267  0x4000400040000000, 0x4000404040000000,
 268  0x4000400040000040, 0x4000404040000040,
 269  0x4000000040004000, 0x4000004040004000,
 270  0x4000000040004040, 0x4000004040004040,
 271  0x4000400040004000, 0x4000404040004000,
 272  0x4000400040004040, 0x4000404040004040,
 273  0x4040000040000000, 0x4040004040000000,
 274  0x4040000040000040, 0x4040004040000040,
 275  0x4040400040000000, 0x4040404040000000,
 276  0x4040400040000040, 0x4040404040000040,
 277  0x4040000040004000, 0x4040004040004000,
 278  0x4040000040004040, 0x4040004040004040,
 279  0x4040400040004000, 0x4040404040004000,
 280  0x4040400040004040, 0x4040404040004040,
 281  0x4000000040400000, 0x4000004040400000,
 282  0x4000000040400040, 0x4000004040400040,
 283  0x4000400040400000, 0x4000404040400000,
 284  0x4000400040400040, 0x4000404040400040,
 285  0x4000000040404000, 0x4000004040404000,
 286  0x4000000040404040, 0x4000004040404040,
 287  0x4000400040404000, 0x4000404040404000,
 288  0x4000400040404040, 0x4000404040404040,
 289  0x4040000040400000, 0x4040004040400000,
 290  0x4040000040400040, 0x4040004040400040,
 291  0x4040400040400000, 0x4040404040400000,
 292  0x4040400040400040, 0x4040404040400040,
 293  0x4040000040404000, 0x4040004040404000,
 294  0x4040000040404040, 0x4040004040404040,
 295  0x4040400040404000, 0x4040404040404000,
 296  0x4040400040404040, 0x4040404040404040,
 297  0x0000000000000000, 0x0000002000000000,
 298  0x0000000000000020, 0x0000002000000020,
 299  0x0000200000000000, 0x0000202000000000,
 300  0x0000200000000020, 0x0000202000000020,
 301  0x0000000000002000, 0x0000002000002000,
 302  0x0000000000002020, 0x0000002000002020,
 303  0x0000200000002000, 0x0000202000002000,
 304  0x0000200000002020, 0x0000202000002020,
 305  0x0020000000000000, 0x0020002000000000,
 306  0x0020000000000020, 0x0020002000000020,
 307  0x0020200000000000, 0x0020202000000000,
 308  0x0020200000000020, 0x0020202000000020,
 309  0x0020000000002000, 0x0020002000002000,
 310  0x0020000000002020, 0x0020002000002020,
 311  0x0020200000002000, 0x0020202000002000,
 312  0x0020200000002020, 0x0020202000002020,
 313  0x0000000000200000, 0x0000002000200000,
 314  0x0000000000200020, 0x0000002000200020,
 315  0x0000200000200000, 0x0000202000200000,
 316  0x0000200000200020, 0x0000202000200020,
 317  0x0000000000202000, 0x0000002000202000,
 318  0x0000000000202020, 0x0000002000202020,
 319  0x0000200000202000, 0x0000202000202000,
 320  0x0000200000202020, 0x0000202000202020,
 321  0x0020000000200000, 0x0020002000200000,
 322  0x0020000000200020, 0x0020002000200020,
 323  0x0020200000200000, 0x0020202000200000,
 324  0x0020200000200020, 0x0020202000200020,
 325  0x0020000000202000, 0x0020002000202000,
 326  0x0020000000202020, 0x0020002000202020,
 327  0x0020200000202000, 0x0020202000202000,
 328  0x0020200000202020, 0x0020202000202020,
 329  0x2000000000000000, 0x2000002000000000,
 330  0x2000000000000020, 0x2000002000000020,
 331  0x2000200000000000, 0x2000202000000000,
 332  0x2000200000000020, 0x2000202000000020,
 333  0x2000000000002000, 0x2000002000002000,
 334  0x2000000000002020, 0x2000002000002020,
 335  0x2000200000002000, 0x2000202000002000,
 336  0x2000200000002020, 0x2000202000002020,
 337  0x2020000000000000, 0x2020002000000000,
 338  0x2020000000000020, 0x2020002000000020,
 339  0x2020200000000000, 0x2020202000000000,
 340  0x2020200000000020, 0x2020202000000020,
 341  0x2020000000002000, 0x2020002000002000,
 342  0x2020000000002020, 0x2020002000002020,
 343  0x2020200000002000, 0x2020202000002000,
 344  0x2020200000002020, 0x2020202000002020,
 345  0x2000000000200000, 0x2000002000200000,
 346  0x2000000000200020, 0x2000002000200020,
 347  0x2000200000200000, 0x2000202000200000,
 348  0x2000200000200020, 0x2000202000200020,
 349  0x2000000000202000, 0x2000002000202000,
 350  0x2000000000202020, 0x2000002000202020,
 351  0x2000200000202000, 0x2000202000202000,
 352  0x2000200000202020, 0x2000202000202020,
 353  0x2020000000200000, 0x2020002000200000,
 354  0x2020000000200020, 0x2020002000200020,
 355  0x2020200000200000, 0x2020202000200000,
 356  0x2020200000200020, 0x2020202000200020,
 357  0x2020000000202000, 0x2020002000202000,
 358  0x2020000000202020, 0x2020002000202020,
 359  0x2020200000202000, 0x2020202000202000,
 360  0x2020200000202020, 0x2020202000202020,
 361  0x0000000020000000, 0x0000002020000000,
 362  0x0000000020000020, 0x0000002020000020,
 363  0x0000200020000000, 0x0000202020000000,
 364  0x0000200020000020, 0x0000202020000020,
 365  0x0000000020002000, 0x0000002020002000,
 366  0x0000000020002020, 0x0000002020002020,
 367  0x0000200020002000, 0x0000202020002000,
 368  0x0000200020002020, 0x0000202020002020,
 369  0x0020000020000000, 0x0020002020000000,
 370  0x0020000020000020, 0x0020002020000020,
 371  0x0020200020000000, 0x0020202020000000,
 372  0x0020200020000020, 0x0020202020000020,
 373  0x0020000020002000, 0x0020002020002000,
 374  0x0020000020002020, 0x0020002020002020,
 375  0x0020200020002000, 0x0020202020002000,
 376  0x0020200020002020, 0x0020202020002020,
 377  0x0000000020200000, 0x0000002020200000,
 378  0x0000000020200020, 0x0000002020200020,
 379  0x0000200020200000, 0x0000202020200000,
 380  0x0000200020200020, 0x0000202020200020,
 381  0x0000000020202000, 0x0000002020202000,
 382  0x0000000020202020, 0x0000002020202020,
 383  0x0000200020202000, 0x0000202020202000,
 384  0x0000200020202020, 0x0000202020202020,
 385  0x0020000020200000, 0x0020002020200000,
 386  0x0020000020200020, 0x0020002020200020,
 387  0x0020200020200000, 0x0020202020200000,
 388  0x0020200020200020, 0x0020202020200020,
 389  0x0020000020202000, 0x0020002020202000,
 390  0x0020000020202020, 0x0020002020202020,
 391  0x0020200020202000, 0x0020202020202000,
 392  0x0020200020202020, 0x0020202020202020,
 393  0x2000000020000000, 0x2000002020000000,
 394  0x2000000020000020, 0x2000002020000020,
 395  0x2000200020000000, 0x2000202020000000,
 396  0x2000200020000020, 0x2000202020000020,
 397  0x2000000020002000, 0x2000002020002000,
 398  0x2000000020002020, 0x2000002020002020,
 399  0x2000200020002000, 0x2000202020002000,
 400  0x2000200020002020, 0x2000202020002020,
 401  0x2020000020000000, 0x2020002020000000,
 402  0x2020000020000020, 0x2020002020000020,
 403  0x2020200020000000, 0x2020202020000000,
 404  0x2020200020000020, 0x2020202020000020,
 405  0x2020000020002000, 0x2020002020002000,
 406  0x2020000020002020, 0x2020002020002020,
 407  0x2020200020002000, 0x2020202020002000,
 408  0x2020200020002020, 0x2020202020002020,
 409  0x2000000020200000, 0x2000002020200000,
 410  0x2000000020200020, 0x2000002020200020,
 411  0x2000200020200000, 0x2000202020200000,
 412  0x2000200020200020, 0x2000202020200020,
 413  0x2000000020202000, 0x2000002020202000,
 414  0x2000000020202020, 0x2000002020202020,
 415  0x2000200020202000, 0x2000202020202000,
 416  0x2000200020202020, 0x2000202020202020,
 417  0x2020000020200000, 0x2020002020200000,
 418  0x2020000020200020, 0x2020002020200020,
 419  0x2020200020200000, 0x2020202020200000,
 420  0x2020200020200020, 0x2020202020200020,
 421  0x2020000020202000, 0x2020002020202000,
 422  0x2020000020202020, 0x2020002020202020,
 423  0x2020200020202000, 0x2020202020202000,
 424  0x2020200020202020, 0x2020202020202020,
 425  0x0000000000000000, 0x0000001000000000,
 426  0x0000000000000010, 0x0000001000000010,
 427  0x0000100000000000, 0x0000101000000000,
 428  0x0000100000000010, 0x0000101000000010,
 429  0x0000000000001000, 0x0000001000001000,
 430  0x0000000000001010, 0x0000001000001010,
 431  0x0000100000001000, 0x0000101000001000,
 432  0x0000100000001010, 0x0000101000001010,
 433  0x0010000000000000, 0x0010001000000000,
 434  0x0010000000000010, 0x0010001000000010,
 435  0x0010100000000000, 0x0010101000000000,
 436  0x0010100000000010, 0x0010101000000010,
 437  0x0010000000001000, 0x0010001000001000,
 438  0x0010000000001010, 0x0010001000001010,
 439  0x0010100000001000, 0x0010101000001000,
 440  0x0010100000001010, 0x0010101000001010,
 441  0x0000000000100000, 0x0000001000100000,
 442  0x0000000000100010, 0x0000001000100010,
 443  0x0000100000100000, 0x0000101000100000,
 444  0x0000100000100010, 0x0000101000100010,
 445  0x0000000000101000, 0x0000001000101000,
 446  0x0000000000101010, 0x0000001000101010,
 447  0x0000100000101000, 0x0000101000101000,
 448  0x0000100000101010, 0x0000101000101010,
 449  0x0010000000100000, 0x0010001000100000,
 450  0x0010000000100010, 0x0010001000100010,
 451  0x0010100000100000, 0x0010101000100000,
 452  0x0010100000100010, 0x0010101000100010,
 453  0x0010000000101000, 0x0010001000101000,
 454  0x0010000000101010, 0x0010001000101010,
 455  0x0010100000101000, 0x0010101000101000,
 456  0x0010100000101010, 0x0010101000101010,
 457  0x1000000000000000, 0x1000001000000000,
 458  0x1000000000000010, 0x1000001000000010,
 459  0x1000100000000000, 0x1000101000000000,
 460  0x1000100000000010, 0x1000101000000010,
 461  0x1000000000001000, 0x1000001000001000,
 462  0x1000000000001010, 0x1000001000001010,
 463  0x1000100000001000, 0x1000101000001000,
 464  0x1000100000001010, 0x1000101000001010,
 465  0x1010000000000000, 0x1010001000000000,
 466  0x1010000000000010, 0x1010001000000010,
 467  0x1010100000000000, 0x1010101000000000,
 468  0x1010100000000010, 0x1010101000000010,
 469  0x1010000000001000, 0x1010001000001000,
 470  0x1010000000001010, 0x1010001000001010,
 471  0x1010100000001000, 0x1010101000001000,
 472  0x1010100000001010, 0x1010101000001010,
 473  0x1000000000100000, 0x1000001000100000,
 474  0x1000000000100010, 0x1000001000100010,
 475  0x1000100000100000, 0x1000101000100000,
 476  0x1000100000100010, 0x1000101000100010,
 477  0x1000000000101000, 0x1000001000101000,
 478  0x1000000000101010, 0x1000001000101010,
 479  0x1000100000101000, 0x1000101000101000,
 480  0x1000100000101010, 0x1000101000101010,
 481  0x1010000000100000, 0x1010001000100000,
 482  0x1010000000100010, 0x1010001000100010,
 483  0x1010100000100000, 0x1010101000100000,
 484  0x1010100000100010, 0x1010101000100010,
 485  0x1010000000101000, 0x1010001000101000,
 486  0x1010000000101010, 0x1010001000101010,
 487  0x1010100000101000, 0x1010101000101000,
 488  0x1010100000101010, 0x1010101000101010,
 489  0x0000000010000000, 0x0000001010000000,
 490  0x0000000010000010, 0x0000001010000010,
 491  0x0000100010000000, 0x0000101010000000,
 492  0x0000100010000010, 0x0000101010000010,
 493  0x0000000010001000, 0x0000001010001000,
 494  0x0000000010001010, 0x0000001010001010,
 495  0x0000100010001000, 0x0000101010001000,
 496  0x0000100010001010, 0x0000101010001010,
 497  0x0010000010000000, 0x0010001010000000,
 498  0x0010000010000010, 0x0010001010000010,
 499  0x0010100010000000, 0x0010101010000000,
 500  0x0010100010000010, 0x0010101010000010,
 501  0x0010000010001000, 0x0010001010001000,
 502  0x0010000010001010, 0x0010001010001010,
 503  0x0010100010001000, 0x0010101010001000,
 504  0x0010100010001010, 0x0010101010001010,
 505  0x0000000010100000, 0x0000001010100000,
 506  0x0000000010100010, 0x0000001010100010,
 507  0x0000100010100000, 0x0000101010100000,
 508  0x0000100010100010, 0x0000101010100010,
 509  0x0000000010101000, 0x0000001010101000,
 510  0x0000000010101010, 0x0000001010101010,
 511  0x0000100010101000, 0x0000101010101000,
 512  0x0000100010101010, 0x0000101010101010,
 513  0x0010000010100000, 0x0010001010100000,
 514  0x0010000010100010, 0x0010001010100010,
 515  0x0010100010100000, 0x0010101010100000,
 516  0x0010100010100010, 0x0010101010100010,
 517  0x0010000010101000, 0x0010001010101000,
 518  0x0010000010101010, 0x0010001010101010,
 519  0x0010100010101000, 0x0010101010101000,
 520  0x0010100010101010, 0x0010101010101010,
 521  0x1000000010000000, 0x1000001010000000,
 522  0x1000000010000010, 0x1000001010000010,
 523  0x1000100010000000, 0x1000101010000000,
 524  0x1000100010000010, 0x1000101010000010,
 525  0x1000000010001000, 0x1000001010001000,
 526  0x1000000010001010, 0x1000001010001010,
 527  0x1000100010001000, 0x1000101010001000,
 528  0x1000100010001010, 0x1000101010001010,
 529  0x1010000010000000, 0x1010001010000000,
 530  0x1010000010000010, 0x1010001010000010,
 531  0x1010100010000000, 0x1010101010000000,
 532  0x1010100010000010, 0x1010101010000010,
 533  0x1010000010001000, 0x1010001010001000,
 534  0x1010000010001010, 0x1010001010001010,
 535  0x1010100010001000, 0x1010101010001000,
 536  0x1010100010001010, 0x1010101010001010,
 537  0x1000000010100000, 0x1000001010100000,
 538  0x1000000010100010, 0x1000001010100010,
 539  0x1000100010100000, 0x1000101010100000,
 540  0x1000100010100010, 0x1000101010100010,
 541  0x1000000010101000, 0x1000001010101000,
 542  0x1000000010101010, 0x1000001010101010,
 543  0x1000100010101000, 0x1000101010101000,
 544  0x1000100010101010, 0x1000101010101010,
 545  0x1010000010100000, 0x1010001010100000,
 546  0x1010000010100010, 0x1010001010100010,
 547  0x1010100010100000, 0x1010101010100000,
 548  0x1010100010100010, 0x1010101010100010,
 549  0x1010000010101000, 0x1010001010101000,
 550  0x1010000010101010, 0x1010001010101010,
 551  0x1010100010101000, 0x1010101010101000,
 552  0x1010100010101010, 0x1010101010101010,
 553  0x0000000000000000, 0x0000000800000000,
 554  0x0000000000000008, 0x0000000800000008,
 555  0x0000080000000000, 0x0000080800000000,
 556  0x0000080000000008, 0x0000080800000008,
 557  0x0000000000000800, 0x0000000800000800,
 558  0x0000000000000808, 0x0000000800000808,
 559  0x0000080000000800, 0x0000080800000800,
 560  0x0000080000000808, 0x0000080800000808,
 561  0x0008000000000000, 0x0008000800000000,
 562  0x0008000000000008, 0x0008000800000008,
 563  0x0008080000000000, 0x0008080800000000,
 564  0x0008080000000008, 0x0008080800000008,
 565  0x0008000000000800, 0x0008000800000800,
 566  0x0008000000000808, 0x0008000800000808,
 567  0x0008080000000800, 0x0008080800000800,
 568  0x0008080000000808, 0x0008080800000808,
 569  0x0000000000080000, 0x0000000800080000,
 570  0x0000000000080008, 0x0000000800080008,
 571  0x0000080000080000, 0x0000080800080000,
 572  0x0000080000080008, 0x0000080800080008,
 573  0x0000000000080800, 0x0000000800080800,
 574  0x0000000000080808, 0x0000000800080808,
 575  0x0000080000080800, 0x0000080800080800,
 576  0x0000080000080808, 0x0000080800080808,
 577  0x0008000000080000, 0x0008000800080000,
 578  0x0008000000080008, 0x0008000800080008,
 579  0x0008080000080000, 0x0008080800080000,
 580  0x0008080000080008, 0x0008080800080008,
 581  0x0008000000080800, 0x0008000800080800,
 582  0x0008000000080808, 0x0008000800080808,
 583  0x0008080000080800, 0x0008080800080800,
 584  0x0008080000080808, 0x0008080800080808,
 585  0x0800000000000000, 0x0800000800000000,
 586  0x0800000000000008, 0x0800000800000008,
 587  0x0800080000000000, 0x0800080800000000,
 588  0x0800080000000008, 0x0800080800000008,
 589  0x0800000000000800, 0x0800000800000800,
 590  0x0800000000000808, 0x0800000800000808,
 591  0x0800080000000800, 0x0800080800000800,
 592  0x0800080000000808, 0x0800080800000808,
 593  0x0808000000000000, 0x0808000800000000,
 594  0x0808000000000008, 0x0808000800000008,
 595  0x0808080000000000, 0x0808080800000000,
 596  0x0808080000000008, 0x0808080800000008,
 597  0x0808000000000800, 0x0808000800000800,
 598  0x0808000000000808, 0x0808000800000808,
 599  0x0808080000000800, 0x0808080800000800,
 600  0x0808080000000808, 0x0808080800000808,
 601  0x0800000000080000, 0x0800000800080000,
 602  0x0800000000080008, 0x0800000800080008,
 603  0x0800080000080000, 0x0800080800080000,
 604  0x0800080000080008, 0x0800080800080008,
 605  0x0800000000080800, 0x0800000800080800,
 606  0x0800000000080808, 0x0800000800080808,
 607  0x0800080000080800, 0x0800080800080800,
 608  0x0800080000080808, 0x0800080800080808,
 609  0x0808000000080000, 0x0808000800080000,
 610  0x0808000000080008, 0x0808000800080008,
 611  0x0808080000080000, 0x0808080800080000,
 612  0x0808080000080008, 0x0808080800080008,
 613  0x0808000000080800, 0x0808000800080800,
 614  0x0808000000080808, 0x0808000800080808,
 615  0x0808080000080800, 0x0808080800080800,
 616  0x0808080000080808, 0x0808080800080808,
 617  0x0000000008000000, 0x0000000808000000,
 618  0x0000000008000008, 0x0000000808000008,
 619  0x0000080008000000, 0x0000080808000000,
 620  0x0000080008000008, 0x0000080808000008,
 621  0x0000000008000800, 0x0000000808000800,
 622  0x0000000008000808, 0x0000000808000808,
 623  0x0000080008000800, 0x0000080808000800,
 624  0x0000080008000808, 0x0000080808000808,
 625  0x0008000008000000, 0x0008000808000000,
 626  0x0008000008000008, 0x0008000808000008,
 627  0x0008080008000000, 0x0008080808000000,
 628  0x0008080008000008, 0x0008080808000008,
 629  0x0008000008000800, 0x0008000808000800,
 630  0x0008000008000808, 0x0008000808000808,
 631  0x0008080008000800, 0x0008080808000800,
 632  0x0008080008000808, 0x0008080808000808,
 633  0x0000000008080000, 0x0000000808080000,
 634  0x0000000008080008, 0x0000000808080008,
 635  0x0000080008080000, 0x0000080808080000,
 636  0x0000080008080008, 0x0000080808080008,
 637  0x0000000008080800, 0x0000000808080800,
 638  0x0000000008080808, 0x0000000808080808,
 639  0x0000080008080800, 0x0000080808080800,
 640  0x0000080008080808, 0x0000080808080808,
 641  0x0008000008080000, 0x0008000808080000,
 642  0x0008000008080008, 0x0008000808080008,
 643  0x0008080008080000, 0x0008080808080000,
 644  0x0008080008080008, 0x0008080808080008,
 645  0x0008000008080800, 0x0008000808080800,
 646  0x0008000008080808, 0x0008000808080808,
 647  0x0008080008080800, 0x0008080808080800,
 648  0x0008080008080808, 0x0008080808080808,
 649  0x0800000008000000, 0x0800000808000000,
 650  0x0800000008000008, 0x0800000808000008,
 651  0x0800080008000000, 0x0800080808000000,
 652  0x0800080008000008, 0x0800080808000008,
 653  0x0800000008000800, 0x0800000808000800,
 654  0x0800000008000808, 0x0800000808000808,
 655  0x0800080008000800, 0x0800080808000800,
 656  0x0800080008000808, 0x0800080808000808,
 657  0x0808000008000000, 0x0808000808000000,
 658  0x0808000008000008, 0x0808000808000008,
 659  0x0808080008000000, 0x0808080808000000,
 660  0x0808080008000008, 0x0808080808000008,
 661  0x0808000008000800, 0x0808000808000800,
 662  0x0808000008000808, 0x0808000808000808,
 663  0x0808080008000800, 0x0808080808000800,
 664  0x0808080008000808, 0x0808080808000808,
 665  0x0800000008080000, 0x0800000808080000,
 666  0x0800000008080008, 0x0800000808080008,
 667  0x0800080008080000, 0x0800080808080000,
 668  0x0800080008080008, 0x0800080808080008,
 669  0x0800000008080800, 0x0800000808080800,
 670  0x0800000008080808, 0x0800000808080808,
 671  0x0800080008080800, 0x0800080808080800,
 672  0x0800080008080808, 0x0800080808080808,
 673  0x0808000008080000, 0x0808000808080000,
 674  0x0808000008080008, 0x0808000808080008,
 675  0x0808080008080000, 0x0808080808080000,
 676  0x0808080008080008, 0x0808080808080008,
 677  0x0808000008080800, 0x0808000808080800,
 678  0x0808000008080808, 0x0808000808080808,
 679  0x0808080008080800, 0x0808080808080800,
 680  0x0808080008080808, 0x0808080808080808,
 681  0x0000000000000000, 0x0000000400000000,
 682  0x0000000000000004, 0x0000000400000004,
 683  0x0000040000000000, 0x0000040400000000,
 684  0x0000040000000004, 0x0000040400000004,
 685  0x0000000000000400, 0x0000000400000400,
 686  0x0000000000000404, 0x0000000400000404,
 687  0x0000040000000400, 0x0000040400000400,
 688  0x0000040000000404, 0x0000040400000404,
 689  0x0004000000000000, 0x0004000400000000,
 690  0x0004000000000004, 0x0004000400000004,
 691  0x0004040000000000, 0x0004040400000000,
 692  0x0004040000000004, 0x0004040400000004,
 693  0x0004000000000400, 0x0004000400000400,
 694  0x0004000000000404, 0x0004000400000404,
 695  0x0004040000000400, 0x0004040400000400,
 696  0x0004040000000404, 0x0004040400000404,
 697  0x0000000000040000, 0x0000000400040000,
 698  0x0000000000040004, 0x0000000400040004,
 699  0x0000040000040000, 0x0000040400040000,
 700  0x0000040000040004, 0x0000040400040004,
 701  0x0000000000040400, 0x0000000400040400,
 702  0x0000000000040404, 0x0000000400040404,
 703  0x0000040000040400, 0x0000040400040400,
 704  0x0000040000040404, 0x0000040400040404,
 705  0x0004000000040000, 0x0004000400040000,
 706  0x0004000000040004, 0x0004000400040004,
 707  0x0004040000040000, 0x0004040400040000,
 708  0x0004040000040004, 0x0004040400040004,
 709  0x0004000000040400, 0x0004000400040400,
 710  0x0004000000040404, 0x0004000400040404,
 711  0x0004040000040400, 0x0004040400040400,
 712  0x0004040000040404, 0x0004040400040404,
 713  0x0400000000000000, 0x0400000400000000,
 714  0x0400000000000004, 0x0400000400000004,
 715  0x0400040000000000, 0x0400040400000000,
 716  0x0400040000000004, 0x0400040400000004,
 717  0x0400000000000400, 0x0400000400000400,
 718  0x0400000000000404, 0x0400000400000404,
 719  0x0400040000000400, 0x0400040400000400,
 720  0x0400040000000404, 0x0400040400000404,
 721  0x0404000000000000, 0x0404000400000000,
 722  0x0404000000000004, 0x0404000400000004,
 723  0x0404040000000000, 0x0404040400000000,
 724  0x0404040000000004, 0x0404040400000004,
 725  0x0404000000000400, 0x0404000400000400,
 726  0x0404000000000404, 0x0404000400000404,
 727  0x0404040000000400, 0x0404040400000400,
 728  0x0404040000000404, 0x0404040400000404,
 729  0x0400000000040000, 0x0400000400040000,
 730  0x0400000000040004, 0x0400000400040004,
 731  0x0400040000040000, 0x0400040400040000,
 732  0x0400040000040004, 0x0400040400040004,
 733  0x0400000000040400, 0x0400000400040400,
 734  0x0400000000040404, 0x0400000400040404,
 735  0x0400040000040400, 0x0400040400040400,
 736  0x0400040000040404, 0x0400040400040404,
 737  0x0404000000040000, 0x0404000400040000,
 738  0x0404000000040004, 0x0404000400040004,
 739  0x0404040000040000, 0x0404040400040000,
 740  0x0404040000040004, 0x0404040400040004,
 741  0x0404000000040400, 0x0404000400040400,
 742  0x0404000000040404, 0x0404000400040404,
 743  0x0404040000040400, 0x0404040400040400,
 744  0x0404040000040404, 0x0404040400040404,
 745  0x0000000004000000, 0x0000000404000000,
 746  0x0000000004000004, 0x0000000404000004,
 747  0x0000040004000000, 0x0000040404000000,
 748  0x0000040004000004, 0x0000040404000004,
 749  0x0000000004000400, 0x0000000404000400,
 750  0x0000000004000404, 0x0000000404000404,
 751  0x0000040004000400, 0x0000040404000400,
 752  0x0000040004000404, 0x0000040404000404,
 753  0x0004000004000000, 0x0004000404000000,
 754  0x0004000004000004, 0x0004000404000004,
 755  0x0004040004000000, 0x0004040404000000,
 756  0x0004040004000004, 0x0004040404000004,
 757  0x0004000004000400, 0x0004000404000400,
 758  0x0004000004000404, 0x0004000404000404,
 759  0x0004040004000400, 0x0004040404000400,
 760  0x0004040004000404, 0x0004040404000404,
 761  0x0000000004040000, 0x0000000404040000,
 762  0x0000000004040004, 0x0000000404040004,
 763  0x0000040004040000, 0x0000040404040000,
 764  0x0000040004040004, 0x0000040404040004,
 765  0x0000000004040400, 0x0000000404040400,
 766  0x0000000004040404, 0x0000000404040404,
 767  0x0000040004040400, 0x0000040404040400,
 768  0x0000040004040404, 0x0000040404040404,
 769  0x0004000004040000, 0x0004000404040000,
 770  0x0004000004040004, 0x0004000404040004,
 771  0x0004040004040000, 0x0004040404040000,
 772  0x0004040004040004, 0x0004040404040004,
 773  0x0004000004040400, 0x0004000404040400,
 774  0x0004000004040404, 0x0004000404040404,
 775  0x0004040004040400, 0x0004040404040400,
 776  0x0004040004040404, 0x0004040404040404,
 777  0x0400000004000000, 0x0400000404000000,
 778  0x0400000004000004, 0x0400000404000004,
 779  0x0400040004000000, 0x0400040404000000,
 780  0x0400040004000004, 0x0400040404000004,
 781  0x0400000004000400, 0x0400000404000400,
 782  0x0400000004000404, 0x0400000404000404,
 783  0x0400040004000400, 0x0400040404000400,
 784  0x0400040004000404, 0x0400040404000404,
 785  0x0404000004000000, 0x0404000404000000,
 786  0x0404000004000004, 0x0404000404000004,
 787  0x0404040004000000, 0x0404040404000000,
 788  0x0404040004000004, 0x0404040404000004,
 789  0x0404000004000400, 0x0404000404000400,
 790  0x0404000004000404, 0x0404000404000404,
 791  0x0404040004000400, 0x0404040404000400,
 792  0x0404040004000404, 0x0404040404000404,
 793  0x0400000004040000, 0x0400000404040000,
 794  0x0400000004040004, 0x0400000404040004,
 795  0x0400040004040000, 0x0400040404040000,
 796  0x0400040004040004, 0x0400040404040004,
 797  0x0400000004040400, 0x0400000404040400,
 798  0x0400000004040404, 0x0400000404040404,
 799  0x0400040004040400, 0x0400040404040400,
 800  0x0400040004040404, 0x0400040404040404,
 801  0x0404000004040000, 0x0404000404040000,
 802  0x0404000004040004, 0x0404000404040004,
 803  0x0404040004040000, 0x0404040404040000,
 804  0x0404040004040004, 0x0404040404040004,
 805  0x0404000004040400, 0x0404000404040400,
 806  0x0404000004040404, 0x0404000404040404,
 807  0x0404040004040400, 0x0404040404040400,
 808  0x0404040004040404, 0x0404040404040404,
 809  0x0000000000000000, 0x0000000200000000,
 810  0x0000000000000002, 0x0000000200000002,
 811  0x0000020000000000, 0x0000020200000000,
 812  0x0000020000000002, 0x0000020200000002,
 813  0x0000000000000200, 0x0000000200000200,
 814  0x0000000000000202, 0x0000000200000202,
 815  0x0000020000000200, 0x0000020200000200,
 816  0x0000020000000202, 0x0000020200000202,
 817  0x0002000000000000, 0x0002000200000000,
 818  0x0002000000000002, 0x0002000200000002,
 819  0x0002020000000000, 0x0002020200000000,
 820  0x0002020000000002, 0x0002020200000002,
 821  0x0002000000000200, 0x0002000200000200,
 822  0x0002000000000202, 0x0002000200000202,
 823  0x0002020000000200, 0x0002020200000200,
 824  0x0002020000000202, 0x0002020200000202,
 825  0x0000000000020000, 0x0000000200020000,
 826  0x0000000000020002, 0x0000000200020002,
 827  0x0000020000020000, 0x0000020200020000,
 828  0x0000020000020002, 0x0000020200020002,
 829  0x0000000000020200, 0x0000000200020200,
 830  0x0000000000020202, 0x0000000200020202,
 831  0x0000020000020200, 0x0000020200020200,
 832  0x0000020000020202, 0x0000020200020202,
 833  0x0002000000020000, 0x0002000200020000,
 834  0x0002000000020002, 0x0002000200020002,
 835  0x0002020000020000, 0x0002020200020000,
 836  0x0002020000020002, 0x0002020200020002,
 837  0x0002000000020200, 0x0002000200020200,
 838  0x0002000000020202, 0x0002000200020202,
 839  0x0002020000020200, 0x0002020200020200,
 840  0x0002020000020202, 0x0002020200020202,
 841  0x0200000000000000, 0x0200000200000000,
 842  0x0200000000000002, 0x0200000200000002,
 843  0x0200020000000000, 0x0200020200000000,
 844  0x0200020000000002, 0x0200020200000002,
 845  0x0200000000000200, 0x0200000200000200,
 846  0x0200000000000202, 0x0200000200000202,
 847  0x0200020000000200, 0x0200020200000200,
 848  0x0200020000000202, 0x0200020200000202,
 849  0x0202000000000000, 0x0202000200000000,
 850  0x0202000000000002, 0x0202000200000002,
 851  0x0202020000000000, 0x0202020200000000,
 852  0x0202020000000002, 0x0202020200000002,
 853  0x0202000000000200, 0x0202000200000200,
 854  0x0202000000000202, 0x0202000200000202,
 855  0x0202020000000200, 0x0202020200000200,
 856  0x0202020000000202, 0x0202020200000202,
 857  0x0200000000020000, 0x0200000200020000,
 858  0x0200000000020002, 0x0200000200020002,
 859  0x0200020000020000, 0x0200020200020000,
 860  0x0200020000020002, 0x0200020200020002,
 861  0x0200000000020200, 0x0200000200020200,
 862  0x0200000000020202, 0x0200000200020202,
 863  0x0200020000020200, 0x0200020200020200,
 864  0x0200020000020202, 0x0200020200020202,
 865  0x0202000000020000, 0x0202000200020000,
 866  0x0202000000020002, 0x0202000200020002,
 867  0x0202020000020000, 0x0202020200020000,
 868  0x0202020000020002, 0x0202020200020002,
 869  0x0202000000020200, 0x0202000200020200,
 870  0x0202000000020202, 0x0202000200020202,
 871  0x0202020000020200, 0x0202020200020200,
 872  0x0202020000020202, 0x0202020200020202,
 873  0x0000000002000000, 0x0000000202000000,
 874  0x0000000002000002, 0x0000000202000002,
 875  0x0000020002000000, 0x0000020202000000,
 876  0x0000020002000002, 0x0000020202000002,
 877  0x0000000002000200, 0x0000000202000200,
 878  0x0000000002000202, 0x0000000202000202,
 879  0x0000020002000200, 0x0000020202000200,
 880  0x0000020002000202, 0x0000020202000202,
 881  0x0002000002000000, 0x0002000202000000,
 882  0x0002000002000002, 0x0002000202000002,
 883  0x0002020002000000, 0x0002020202000000,
 884  0x0002020002000002, 0x0002020202000002,
 885  0x0002000002000200, 0x0002000202000200,
 886  0x0002000002000202, 0x0002000202000202,
 887  0x0002020002000200, 0x0002020202000200,
 888  0x0002020002000202, 0x0002020202000202,
 889  0x0000000002020000, 0x0000000202020000,
 890  0x0000000002020002, 0x0000000202020002,
 891  0x0000020002020000, 0x0000020202020000,
 892  0x0000020002020002, 0x0000020202020002,
 893  0x0000000002020200, 0x0000000202020200,
 894  0x0000000002020202, 0x0000000202020202,
 895  0x0000020002020200, 0x0000020202020200,
 896  0x0000020002020202, 0x0000020202020202,
 897  0x0002000002020000, 0x0002000202020000,
 898  0x0002000002020002, 0x0002000202020002,
 899  0x0002020002020000, 0x0002020202020000,
 900  0x0002020002020002, 0x0002020202020002,
 901  0x0002000002020200, 0x0002000202020200,
 902  0x0002000002020202, 0x0002000202020202,
 903  0x0002020002020200, 0x0002020202020200,
 904  0x0002020002020202, 0x0002020202020202,
 905  0x0200000002000000, 0x0200000202000000,
 906  0x0200000002000002, 0x0200000202000002,
 907  0x0200020002000000, 0x0200020202000000,
 908  0x0200020002000002, 0x0200020202000002,
 909  0x0200000002000200, 0x0200000202000200,
 910  0x0200000002000202, 0x0200000202000202,
 911  0x0200020002000200, 0x0200020202000200,
 912  0x0200020002000202, 0x0200020202000202,
 913  0x0202000002000000, 0x0202000202000000,
 914  0x0202000002000002, 0x0202000202000002,
 915  0x0202020002000000, 0x0202020202000000,
 916  0x0202020002000002, 0x0202020202000002,
 917  0x0202000002000200, 0x0202000202000200,
 918  0x0202000002000202, 0x0202000202000202,
 919  0x0202020002000200, 0x0202020202000200,
 920  0x0202020002000202, 0x0202020202000202,
 921  0x0200000002020000, 0x0200000202020000,
 922  0x0200000002020002, 0x0200000202020002,
 923  0x0200020002020000, 0x0200020202020000,
 924  0x0200020002020002, 0x0200020202020002,
 925  0x0200000002020200, 0x0200000202020200,
 926  0x0200000002020202, 0x0200000202020202,
 927  0x0200020002020200, 0x0200020202020200,
 928  0x0200020002020202, 0x0200020202020202,
 929  0x0202000002020000, 0x0202000202020000,
 930  0x0202000002020002, 0x0202000202020002,
 931  0x0202020002020000, 0x0202020202020000,
 932  0x0202020002020002, 0x0202020202020002,
 933  0x0202000002020200, 0x0202000202020200,
 934  0x0202000002020202, 0x0202000202020202,
 935  0x0202020002020200, 0x0202020202020200,
 936  0x0202020002020202, 0x0202020202020202,
 937  0x0000000000000000, 0x0000000100000000,
 938  0x0000000000000001, 0x0000000100000001,
 939  0x0000010000000000, 0x0000010100000000,
 940  0x0000010000000001, 0x0000010100000001,
 941  0x0000000000000100, 0x0000000100000100,
 942  0x0000000000000101, 0x0000000100000101,
 943  0x0000010000000100, 0x0000010100000100,
 944  0x0000010000000101, 0x0000010100000101,
 945  0x0001000000000000, 0x0001000100000000,
 946  0x0001000000000001, 0x0001000100000001,
 947  0x0001010000000000, 0x0001010100000000,
 948  0x0001010000000001, 0x0001010100000001,
 949  0x0001000000000100, 0x0001000100000100,
 950  0x0001000000000101, 0x0001000100000101,
 951  0x0001010000000100, 0x0001010100000100,
 952  0x0001010000000101, 0x0001010100000101,
 953  0x0000000000010000, 0x0000000100010000,
 954  0x0000000000010001, 0x0000000100010001,
 955  0x0000010000010000, 0x0000010100010000,
 956  0x0000010000010001, 0x0000010100010001,
 957  0x0000000000010100, 0x0000000100010100,
 958  0x0000000000010101, 0x0000000100010101,
 959  0x0000010000010100, 0x0000010100010100,
 960  0x0000010000010101, 0x0000010100010101,
 961  0x0001000000010000, 0x0001000100010000,
 962  0x0001000000010001, 0x0001000100010001,
 963  0x0001010000010000, 0x0001010100010000,
 964  0x0001010000010001, 0x0001010100010001,
 965  0x0001000000010100, 0x0001000100010100,
 966  0x0001000000010101, 0x0001000100010101,
 967  0x0001010000010100, 0x0001010100010100,
 968  0x0001010000010101, 0x0001010100010101,
 969  0x0100000000000000, 0x0100000100000000,
 970  0x0100000000000001, 0x0100000100000001,
 971  0x0100010000000000, 0x0100010100000000,
 972  0x0100010000000001, 0x0100010100000001,
 973  0x0100000000000100, 0x0100000100000100,
 974  0x0100000000000101, 0x0100000100000101,
 975  0x0100010000000100, 0x0100010100000100,
 976  0x0100010000000101, 0x0100010100000101,
 977  0x0101000000000000, 0x0101000100000000,
 978  0x0101000000000001, 0x0101000100000001,
 979  0x0101010000000000, 0x0101010100000000,
 980  0x0101010000000001, 0x0101010100000001,
 981  0x0101000000000100, 0x0101000100000100,
 982  0x0101000000000101, 0x0101000100000101,
 983  0x0101010000000100, 0x0101010100000100,
 984  0x0101010000000101, 0x0101010100000101,
 985  0x0100000000010000, 0x0100000100010000,
 986  0x0100000000010001, 0x0100000100010001,
 987  0x0100010000010000, 0x0100010100010000,
 988  0x0100010000010001, 0x0100010100010001,
 989  0x0100000000010100, 0x0100000100010100,
 990  0x0100000000010101, 0x0100000100010101,
 991  0x0100010000010100, 0x0100010100010100,
 992  0x0100010000010101, 0x0100010100010101,
 993  0x0101000000010000, 0x0101000100010000,
 994  0x0101000000010001, 0x0101000100010001,
 995  0x0101010000010000, 0x0101010100010000,
 996  0x0101010000010001, 0x0101010100010001,
 997  0x0101000000010100, 0x0101000100010100,
 998  0x0101000000010101, 0x0101000100010101,
 999  0x0101010000010100, 0x0101010100010100,
1000  0x0101010000010101, 0x0101010100010101,
1001  0x0000000001000000, 0x0000000101000000,
1002  0x0000000001000001, 0x0000000101000001,
1003  0x0000010001000000, 0x0000010101000000,
1004  0x0000010001000001, 0x0000010101000001,
1005  0x0000000001000100, 0x0000000101000100,
1006  0x0000000001000101, 0x0000000101000101,
1007  0x0000010001000100, 0x0000010101000100,
1008  0x0000010001000101, 0x0000010101000101,
1009  0x0001000001000000, 0x0001000101000000,
1010  0x0001000001000001, 0x0001000101000001,
1011  0x0001010001000000, 0x0001010101000000,
1012  0x0001010001000001, 0x0001010101000001,
1013  0x0001000001000100, 0x0001000101000100,
1014  0x0001000001000101, 0x0001000101000101,
1015  0x0001010001000100, 0x0001010101000100,
1016  0x0001010001000101, 0x0001010101000101,
1017  0x0000000001010000, 0x0000000101010000,
1018  0x0000000001010001, 0x0000000101010001,
1019  0x0000010001010000, 0x0000010101010000,
1020  0x0000010001010001, 0x0000010101010001,
1021  0x0000000001010100, 0x0000000101010100,
1022  0x0000000001010101, 0x0000000101010101,
1023  0x0000010001010100, 0x0000010101010100,
1024  0x0000010001010101, 0x0000010101010101,
1025  0x0001000001010000, 0x0001000101010000,
1026  0x0001000001010001, 0x0001000101010001,
1027  0x0001010001010000, 0x0001010101010000,
1028  0x0001010001010001, 0x0001010101010001,
1029  0x0001000001010100, 0x0001000101010100,
1030  0x0001000001010101, 0x0001000101010101,
1031  0x0001010001010100, 0x0001010101010100,
1032  0x0001010001010101, 0x0001010101010101,
1033  0x0100000001000000, 0x0100000101000000,
1034  0x0100000001000001, 0x0100000101000001,
1035  0x0100010001000000, 0x0100010101000000,
1036  0x0100010001000001, 0x0100010101000001,
1037  0x0100000001000100, 0x0100000101000100,
1038  0x0100000001000101, 0x0100000101000101,
1039  0x0100010001000100, 0x0100010101000100,
1040  0x0100010001000101, 0x0100010101000101,
1041  0x0101000001000000, 0x0101000101000000,
1042  0x0101000001000001, 0x0101000101000001,
1043  0x0101010001000000, 0x0101010101000000,
1044  0x0101010001000001, 0x0101010101000001,
1045  0x0101000001000100, 0x0101000101000100,
1046  0x0101000001000101, 0x0101000101000101,
1047  0x0101010001000100, 0x0101010101000100,
1048  0x0101010001000101, 0x0101010101000101,
1049  0x0100000001010000, 0x0100000101010000,
1050  0x0100000001010001, 0x0100000101010001,
1051  0x0100010001010000, 0x0100010101010000,
1052  0x0100010001010001, 0x0100010101010001,
1053  0x0100000001010100, 0x0100000101010100,
1054  0x0100000001010101, 0x0100000101010101,
1055  0x0100010001010100, 0x0100010101010100,
1056  0x0100010001010101, 0x0100010101010101,
1057  0x0101000001010000, 0x0101000101010000,
1058  0x0101000001010001, 0x0101000101010001,
1059  0x0101010001010000, 0x0101010101010000,
1060  0x0101010001010001, 0x0101010101010001,
1061  0x0101000001010100, 0x0101000101010100,
1062  0x0101000001010101, 0x0101000101010101,
1063  0x0101010001010100, 0x0101010101010100,
1064  0x0101010001010101, 0x0101010101010101
1065)
1066
1067# FP permutation table
1068N_IP_K = (
1069  0x0000000000000000, 0x0200000000000000,
1070  0x0002000000000000, 0x0202000000000000,
1071  0x0000020000000000, 0x0200020000000000,
1072  0x0002020000000000, 0x0202020000000000,
1073  0x0000000200000000, 0x0200000200000000,
1074  0x0002000200000000, 0x0202000200000000,
1075  0x0000020200000000, 0x0200020200000000,
1076  0x0002020200000000, 0x0202020200000000,
1077  0x0000000002000000, 0x0200000002000000,
1078  0x0002000002000000, 0x0202000002000000,
1079  0x0000020002000000, 0x0200020002000000,
1080  0x0002020002000000, 0x0202020002000000,
1081  0x0000000202000000, 0x0200000202000000,
1082  0x0002000202000000, 0x0202000202000000,
1083  0x0000020202000000, 0x0200020202000000,
1084  0x0002020202000000, 0x0202020202000000,
1085  0x0000000000020000, 0x0200000000020000,
1086  0x0002000000020000, 0x0202000000020000,
1087  0x0000020000020000, 0x0200020000020000,
1088  0x0002020000020000, 0x0202020000020000,
1089  0x0000000200020000, 0x0200000200020000,
1090  0x0002000200020000, 0x0202000200020000,
1091  0x0000020200020000, 0x0200020200020000,
1092  0x0002020200020000, 0x0202020200020000,
1093  0x0000000002020000, 0x0200000002020000,
1094  0x0002000002020000, 0x0202000002020000,
1095  0x0000020002020000, 0x0200020002020000,
1096  0x0002020002020000, 0x0202020002020000,
1097  0x0000000202020000, 0x0200000202020000,
1098  0x0002000202020000, 0x0202000202020000,
1099  0x0000020202020000, 0x0200020202020000,
1100  0x0002020202020000, 0x0202020202020000,
1101  0x0000000000000200, 0x0200000000000200,
1102  0x0002000000000200, 0x0202000000000200,
1103  0x0000020000000200, 0x0200020000000200,
1104  0x0002020000000200, 0x0202020000000200,
1105  0x0000000200000200, 0x0200000200000200,
1106  0x0002000200000200, 0x0202000200000200,
1107  0x0000020200000200, 0x0200020200000200,
1108  0x0002020200000200, 0x0202020200000200,
1109  0x0000000002000200, 0x0200000002000200,
1110  0x0002000002000200, 0x0202000002000200,
1111  0x0000020002000200, 0x0200020002000200,
1112  0x0002020002000200, 0x0202020002000200,
1113  0x0000000202000200, 0x0200000202000200,
1114  0x0002000202000200, 0x0202000202000200,
1115  0x0000020202000200, 0x0200020202000200,
1116  0x0002020202000200, 0x0202020202000200,
1117  0x0000000000020200, 0x0200000000020200,
1118  0x0002000000020200, 0x0202000000020200,
1119  0x0000020000020200, 0x0200020000020200,
1120  0x0002020000020200, 0x0202020000020200,
1121  0x0000000200020200, 0x0200000200020200,
1122  0x0002000200020200, 0x0202000200020200,
1123  0x0000020200020200, 0x0200020200020200,
1124  0x0002020200020200, 0x0202020200020200,
1125  0x0000000002020200, 0x0200000002020200,
1126  0x0002000002020200, 0x0202000002020200,
1127  0x0000020002020200, 0x0200020002020200,
1128  0x0002020002020200, 0x0202020002020200,
1129  0x0000000202020200, 0x0200000202020200,
1130  0x0002000202020200, 0x0202000202020200,
1131  0x0000020202020200, 0x0200020202020200,
1132  0x0002020202020200, 0x0202020202020200,
1133  0x0000000000000002, 0x0200000000000002,
1134  0x0002000000000002, 0x0202000000000002,
1135  0x0000020000000002, 0x0200020000000002,
1136  0x0002020000000002, 0x0202020000000002,
1137  0x0000000200000002, 0x0200000200000002,
1138  0x0002000200000002, 0x0202000200000002,
1139  0x0000020200000002, 0x0200020200000002,
1140  0x0002020200000002, 0x0202020200000002,
1141  0x0000000002000002, 0x0200000002000002,
1142  0x0002000002000002, 0x0202000002000002,
1143  0x0000020002000002, 0x0200020002000002,
1144  0x0002020002000002, 0x0202020002000002,
1145  0x0000000202000002, 0x0200000202000002,
1146  0x0002000202000002, 0x0202000202000002,
1147  0x0000020202000002, 0x0200020202000002,
1148  0x0002020202000002, 0x0202020202000002,
1149  0x0000000000020002, 0x0200000000020002,
1150  0x0002000000020002, 0x0202000000020002,
1151  0x0000020000020002, 0x0200020000020002,
1152  0x0002020000020002, 0x0202020000020002,
1153  0x0000000200020002, 0x0200000200020002,
1154  0x0002000200020002, 0x0202000200020002,
1155  0x0000020200020002, 0x0200020200020002,
1156  0x0002020200020002, 0x0202020200020002,
1157  0x0000000002020002, 0x0200000002020002,
1158  0x0002000002020002, 0x0202000002020002,
1159  0x0000020002020002, 0x0200020002020002,
1160  0x0002020002020002, 0x0202020002020002,
1161  0x0000000202020002, 0x0200000202020002,
1162  0x0002000202020002, 0x0202000202020002,
1163  0x0000020202020002, 0x0200020202020002,
1164  0x0002020202020002, 0x0202020202020002,
1165  0x0000000000000202, 0x0200000000000202,
1166  0x0002000000000202, 0x0202000000000202,
1167  0x0000020000000202, 0x0200020000000202,
1168  0x0002020000000202, 0x0202020000000202,
1169  0x0000000200000202, 0x0200000200000202,
1170  0x0002000200000202, 0x0202000200000202,
1171  0x0000020200000202, 0x0200020200000202,
1172  0x0002020200000202, 0x0202020200000202,
1173  0x0000000002000202, 0x0200000002000202,
1174  0x0002000002000202, 0x0202000002000202,
1175  0x0000020002000202, 0x0200020002000202,
1176  0x0002020002000202, 0x0202020002000202,
1177  0x0000000202000202, 0x0200000202000202,
1178  0x0002000202000202, 0x0202000202000202,
1179  0x0000020202000202, 0x0200020202000202,
1180  0x0002020202000202, 0x0202020202000202,
1181  0x0000000000020202, 0x0200000000020202,
1182  0x0002000000020202, 0x0202000000020202,
1183  0x0000020000020202, 0x0200020000020202,
1184  0x0002020000020202, 0x0202020000020202,
1185  0x0000000200020202, 0x0200000200020202,
1186  0x0002000200020202, 0x0202000200020202,
1187  0x0000020200020202, 0x0200020200020202,
1188  0x0002020200020202, 0x0202020200020202,
1189  0x0000000002020202, 0x0200000002020202,
1190  0x0002000002020202, 0x0202000002020202,
1191  0x0000020002020202, 0x0200020002020202,
1192  0x0002020002020202, 0x0202020002020202,
1193  0x0000000202020202, 0x0200000202020202,
1194  0x0002000202020202, 0x0202000202020202,
1195  0x0000020202020202, 0x0200020202020202,
1196  0x0002020202020202, 0x0202020202020202,
1197  0x0000000000000000, 0x0800000000000000,
1198  0x0008000000000000, 0x0808000000000000,
1199  0x0000080000000000, 0x0800080000000000,
1200  0x0008080000000000, 0x0808080000000000,
1201  0x0000000800000000, 0x0800000800000000,
1202  0x0008000800000000, 0x0808000800000000,
1203  0x0000080800000000, 0x0800080800000000,
1204  0x0008080800000000, 0x0808080800000000,
1205  0x0000000008000000, 0x0800000008000000,
1206  0x0008000008000000, 0x0808000008000000,
1207  0x0000080008000000, 0x0800080008000000,
1208  0x0008080008000000, 0x0808080008000000,
1209  0x0000000808000000, 0x0800000808000000,
1210  0x0008000808000000, 0x0808000808000000,
1211  0x0000080808000000, 0x0800080808000000,
1212  0x0008080808000000, 0x0808080808000000,
1213  0x0000000000080000, 0x0800000000080000,
1214  0x0008000000080000, 0x0808000000080000,
1215  0x0000080000080000, 0x0800080000080000,
1216  0x0008080000080000, 0x0808080000080000,
1217  0x0000000800080000, 0x0800000800080000,
1218  0x0008000800080000, 0x0808000800080000,
1219  0x0000080800080000, 0x0800080800080000,
1220  0x0008080800080000, 0x0808080800080000,
1221  0x0000000008080000, 0x0800000008080000,
1222  0x0008000008080000, 0x0808000008080000,
1223  0x0000080008080000, 0x0800080008080000,
1224  0x0008080008080000, 0x0808080008080000,
1225  0x0000000808080000, 0x0800000808080000,
1226  0x0008000808080000, 0x0808000808080000,
1227  0x0000080808080000, 0x0800080808080000,
1228  0x0008080808080000, 0x0808080808080000,
1229  0x0000000000000800, 0x0800000000000800,
1230  0x0008000000000800, 0x0808000000000800,
1231  0x0000080000000800, 0x0800080000000800,
1232  0x0008080000000800, 0x0808080000000800,
1233  0x0000000800000800, 0x0800000800000800,
1234  0x0008000800000800, 0x0808000800000800,
1235  0x0000080800000800, 0x0800080800000800,
1236  0x0008080800000800, 0x0808080800000800,
1237  0x0000000008000800, 0x0800000008000800,
1238  0x0008000008000800, 0x0808000008000800,
1239  0x0000080008000800, 0x0800080008000800,
1240  0x0008080008000800, 0x0808080008000800,
1241  0x0000000808000800, 0x0800000808000800,
1242  0x0008000808000800, 0x0808000808000800,
1243  0x0000080808000800, 0x0800080808000800,
1244  0x0008080808000800, 0x0808080808000800,
1245  0x0000000000080800, 0x0800000000080800,
1246  0x0008000000080800, 0x0808000000080800,
1247  0x0000080000080800, 0x0800080000080800,
1248  0x0008080000080800, 0x0808080000080800,
1249  0x0000000800080800, 0x0800000800080800,
1250  0x0008000800080800, 0x0808000800080800,
1251  0x0000080800080800, 0x0800080800080800,
1252  0x0008080800080800, 0x0808080800080800,
1253  0x0000000008080800, 0x0800000008080800,
1254  0x0008000008080800, 0x0808000008080800,
1255  0x0000080008080800, 0x0800080008080800,
1256  0x0008080008080800, 0x0808080008080800,
1257  0x0000000808080800, 0x0800000808080800,
1258  0x0008000808080800, 0x0808000808080800,
1259  0x0000080808080800, 0x0800080808080800,
1260  0x0008080808080800, 0x0808080808080800,
1261  0x0000000000000008, 0x0800000000000008,
1262  0x0008000000000008, 0x0808000000000008,
1263  0x0000080000000008, 0x0800080000000008,
1264  0x0008080000000008, 0x0808080000000008,
1265  0x0000000800000008, 0x0800000800000008,
1266  0x0008000800000008, 0x0808000800000008,
1267  0x0000080800000008, 0x0800080800000008,
1268  0x0008080800000008, 0x0808080800000008,
1269  0x0000000008000008, 0x0800000008000008,
1270  0x0008000008000008, 0x0808000008000008,
1271  0x0000080008000008, 0x0800080008000008,
1272  0x0008080008000008, 0x0808080008000008,
1273  0x0000000808000008, 0x0800000808000008,
1274  0x0008000808000008, 0x0808000808000008,
1275  0x0000080808000008, 0x0800080808000008,
1276  0x0008080808000008, 0x0808080808000008,
1277  0x0000000000080008, 0x0800000000080008,
1278  0x0008000000080008, 0x0808000000080008,
1279  0x0000080000080008, 0x0800080000080008,
1280  0x0008080000080008, 0x0808080000080008,
1281  0x0000000800080008, 0x0800000800080008,
1282  0x0008000800080008, 0x0808000800080008,
1283  0x0000080800080008, 0x0800080800080008,
1284  0x0008080800080008, 0x0808080800080008,
1285  0x0000000008080008, 0x0800000008080008,
1286  0x0008000008080008, 0x0808000008080008,
1287  0x0000080008080008, 0x0800080008080008,
1288  0x0008080008080008, 0x0808080008080008,
1289  0x0000000808080008, 0x0800000808080008,
1290  0x0008000808080008, 0x0808000808080008,
1291  0x0000080808080008, 0x0800080808080008,
1292  0x0008080808080008, 0x0808080808080008,
1293  0x0000000000000808, 0x0800000000000808,
1294  0x0008000000000808, 0x0808000000000808,
1295  0x0000080000000808, 0x0800080000000808,
1296  0x0008080000000808, 0x0808080000000808,
1297  0x0000000800000808, 0x0800000800000808,
1298  0x0008000800000808, 0x0808000800000808,
1299  0x0000080800000808, 0x0800080800000808,
1300  0x0008080800000808, 0x0808080800000808,
1301  0x0000000008000808, 0x0800000008000808,
1302  0x0008000008000808, 0x0808000008000808,
1303  0x0000080008000808, 0x0800080008000808,
1304  0x0008080008000808, 0x0808080008000808,
1305  0x0000000808000808, 0x0800000808000808,
1306  0x0008000808000808, 0x0808000808000808,
1307  0x0000080808000808, 0x0800080808000808,
1308  0x0008080808000808, 0x0808080808000808,
1309  0x0000000000080808, 0x0800000000080808,
1310  0x0008000000080808, 0x0808000000080808,
1311  0x0000080000080808, 0x0800080000080808,
1312  0x0008080000080808, 0x0808080000080808,
1313  0x0000000800080808, 0x0800000800080808,
1314  0x0008000800080808, 0x0808000800080808,
1315  0x0000080800080808, 0x0800080800080808,
1316  0x0008080800080808, 0x0808080800080808,
1317  0x0000000008080808, 0x0800000008080808,
1318  0x0008000008080808, 0x0808000008080808,
1319  0x0000080008080808, 0x0800080008080808,
1320  0x0008080008080808, 0x0808080008080808,
1321  0x0000000808080808, 0x0800000808080808,
1322  0x0008000808080808, 0x0808000808080808,
1323  0x0000080808080808, 0x0800080808080808,
1324  0x0008080808080808, 0x0808080808080808,
1325  0x0000000000000000, 0x2000000000000000,
1326  0x0020000000000000, 0x2020000000000000,
1327  0x0000200000000000, 0x2000200000000000,
1328  0x0020200000000000, 0x2020200000000000,
1329  0x0000002000000000, 0x2000002000000000,
1330  0x0020002000000000, 0x2020002000000000,
1331  0x0000202000000000, 0x2000202000000000,
1332  0x0020202000000000, 0x2020202000000000,
1333  0x0000000020000000, 0x2000000020000000,
1334  0x0020000020000000, 0x2020000020000000,
1335  0x0000200020000000, 0x2000200020000000,
1336  0x0020200020000000, 0x2020200020000000,
1337  0x0000002020000000, 0x2000002020000000,
1338  0x0020002020000000, 0x2020002020000000,
1339  0x0000202020000000, 0x2000202020000000,
1340  0x0020202020000000, 0x2020202020000000,
1341  0x0000000000200000, 0x2000000000200000,
1342  0x0020000000200000, 0x2020000000200000,
1343  0x0000200000200000, 0x2000200000200000,
1344  0x0020200000200000, 0x2020200000200000,
1345  0x0000002000200000, 0x2000002000200000,
1346  0x0020002000200000, 0x2020002000200000,
1347  0x0000202000200000, 0x2000202000200000,
1348  0x0020202000200000, 0x2020202000200000,
1349  0x0000000020200000, 0x2000000020200000,
1350  0x0020000020200000, 0x2020000020200000,
1351  0x0000200020200000, 0x2000200020200000,
1352  0x0020200020200000, 0x2020200020200000,
1353  0x0000002020200000, 0x2000002020200000,
1354  0x0020002020200000, 0x2020002020200000,
1355  0x0000202020200000, 0x2000202020200000,
1356  0x0020202020200000, 0x2020202020200000,
1357  0x0000000000002000, 0x2000000000002000,
1358  0x0020000000002000, 0x2020000000002000,
1359  0x0000200000002000, 0x2000200000002000,
1360  0x0020200000002000, 0x2020200000002000,
1361  0x0000002000002000, 0x2000002000002000,
1362  0x0020002000002000, 0x2020002000002000,
1363  0x0000202000002000, 0x2000202000002000,
1364  0x0020202000002000, 0x2020202000002000,
1365  0x0000000020002000, 0x2000000020002000,
1366  0x0020000020002000, 0x2020000020002000,
1367  0x0000200020002000, 0x2000200020002000,
1368  0x0020200020002000, 0x2020200020002000,
1369  0x0000002020002000, 0x2000002020002000,
1370  0x0020002020002000, 0x2020002020002000,
1371  0x0000202020002000, 0x2000202020002000,
1372  0x0020202020002000, 0x2020202020002000,
1373  0x0000000000202000, 0x2000000000202000,
1374  0x0020000000202000, 0x2020000000202000,
1375  0x0000200000202000, 0x2000200000202000,
1376  0x0020200000202000, 0x2020200000202000,
1377  0x0000002000202000, 0x2000002000202000,
1378  0x0020002000202000, 0x2020002000202000,
1379  0x0000202000202000, 0x2000202000202000,
1380  0x0020202000202000, 0x2020202000202000,
1381  0x0000000020202000, 0x2000000020202000,
1382  0x0020000020202000, 0x2020000020202000,
1383  0x0000200020202000, 0x2000200020202000,
1384  0x0020200020202000, 0x2020200020202000,
1385  0x0000002020202000, 0x2000002020202000,
1386  0x0020002020202000, 0x2020002020202000,
1387  0x0000202020202000, 0x2000202020202000,
1388  0x0020202020202000, 0x2020202020202000,
1389  0x0000000000000020, 0x2000000000000020,
1390  0x0020000000000020, 0x2020000000000020,
1391  0x0000200000000020, 0x2000200000000020,
1392  0x0020200000000020, 0x2020200000000020,
1393  0x0000002000000020, 0x2000002000000020,
1394  0x0020002000000020, 0x2020002000000020,
1395  0x0000202000000020, 0x2000202000000020,
1396  0x0020202000000020, 0x2020202000000020,
1397  0x0000000020000020, 0x2000000020000020,
1398  0x0020000020000020, 0x2020000020000020,
1399  0x0000200020000020, 0x2000200020000020,
1400  0x0020200020000020, 0x2020200020000020,
1401  0x0000002020000020, 0x2000002020000020,
1402  0x0020002020000020, 0x2020002020000020,
1403  0x0000202020000020, 0x2000202020000020,
1404  0x0020202020000020, 0x2020202020000020,
1405  0x0000000000200020, 0x2000000000200020,
1406  0x0020000000200020, 0x2020000000200020,
1407  0x0000200000200020, 0x2000200000200020,
1408  0x0020200000200020, 0x2020200000200020,
1409  0x0000002000200020, 0x2000002000200020,
1410  0x0020002000200020, 0x2020002000200020,
1411  0x0000202000200020, 0x2000202000200020,
1412  0x0020202000200020, 0x2020202000200020,
1413  0x0000000020200020, 0x2000000020200020,
1414  0x0020000020200020, 0x2020000020200020,
1415  0x0000200020200020, 0x2000200020200020,
1416  0x0020200020200020, 0x2020200020200020,
1417  0x0000002020200020, 0x2000002020200020,
1418  0x0020002020200020, 0x2020002020200020,
1419  0x0000202020200020, 0x2000202020200020,
1420  0x0020202020200020, 0x2020202020200020,
1421  0x0000000000002020, 0x2000000000002020,
1422  0x0020000000002020, 0x2020000000002020,
1423  0x0000200000002020, 0x2000200000002020,
1424  0x0020200000002020, 0x2020200000002020,
1425  0x0000002000002020, 0x2000002000002020,
1426  0x0020002000002020, 0x2020002000002020,
1427  0x0000202000002020, 0x2000202000002020,
1428  0x0020202000002020, 0x2020202000002020,
1429  0x0000000020002020, 0x2000000020002020,
1430  0x0020000020002020, 0x2020000020002020,
1431  0x0000200020002020, 0x2000200020002020,
1432  0x0020200020002020, 0x2020200020002020,
1433  0x0000002020002020, 0x2000002020002020,
1434  0x0020002020002020, 0x2020002020002020,
1435  0x0000202020002020, 0x2000202020002020,
1436  0x0020202020002020, 0x2020202020002020,
1437  0x0000000000202020, 0x2000000000202020,
1438  0x0020000000202020, 0x2020000000202020,
1439  0x0000200000202020, 0x2000200000202020,
1440  0x0020200000202020, 0x2020200000202020,
1441  0x0000002000202020, 0x2000002000202020,
1442  0x0020002000202020, 0x2020002000202020,
1443  0x0000202000202020, 0x2000202000202020,
1444  0x0020202000202020, 0x2020202000202020,
1445  0x0000000020202020, 0x2000000020202020,
1446  0x0020000020202020, 0x2020000020202020,
1447  0x0000200020202020, 0x2000200020202020,
1448  0x0020200020202020, 0x2020200020202020,
1449  0x0000002020202020, 0x2000002020202020,
1450  0x0020002020202020, 0x2020002020202020,
1451  0x0000202020202020, 0x2000202020202020,
1452  0x0020202020202020, 0x2020202020202020,
1453  0x0000000000000000, 0x8000000000000000,
1454  0x0080000000000000, 0x8080000000000000,
1455  0x0000800000000000, 0x8000800000000000,
1456  0x0080800000000000, 0x8080800000000000,
1457  0x0000008000000000, 0x8000008000000000,
1458  0x0080008000000000, 0x8080008000000000,
1459  0x0000808000000000, 0x8000808000000000,
1460  0x0080808000000000, 0x8080808000000000,
1461  0x0000000080000000, 0x8000000080000000,
1462  0x0080000080000000, 0x8080000080000000,
1463  0x0000800080000000, 0x8000800080000000,
1464  0x0080800080000000, 0x8080800080000000,
1465  0x0000008080000000, 0x8000008080000000,
1466  0x0080008080000000, 0x8080008080000000,
1467  0x0000808080000000, 0x8000808080000000,
1468  0x0080808080000000, 0x8080808080000000,
1469  0x0000000000800000, 0x8000000000800000,
1470  0x0080000000800000, 0x8080000000800000,
1471  0x0000800000800000, 0x8000800000800000,
1472  0x0080800000800000, 0x8080800000800000,
1473  0x0000008000800000, 0x8000008000800000,
1474  0x0080008000800000, 0x8080008000800000,
1475  0x0000808000800000, 0x8000808000800000,
1476  0x0080808000800000, 0x8080808000800000,
1477  0x0000000080800000, 0x8000000080800000,
1478  0x0080000080800000, 0x8080000080800000,
1479  0x0000800080800000, 0x8000800080800000,
1480  0x0080800080800000, 0x8080800080800000,
1481  0x0000008080800000, 0x8000008080800000,
1482  0x0080008080800000, 0x8080008080800000,
1483  0x0000808080800000, 0x8000808080800000,
1484  0x0080808080800000, 0x8080808080800000,
1485  0x0000000000008000, 0x8000000000008000,
1486  0x0080000000008000, 0x8080000000008000,
1487  0x0000800000008000, 0x8000800000008000,
1488  0x0080800000008000, 0x8080800000008000,
1489  0x0000008000008000, 0x8000008000008000,
1490  0x0080008000008000, 0x8080008000008000,
1491  0x0000808000008000, 0x8000808000008000,
1492  0x0080808000008000, 0x8080808000008000,
1493  0x0000000080008000, 0x8000000080008000,
1494  0x0080000080008000, 0x8080000080008000,
1495  0x0000800080008000, 0x8000800080008000,
1496  0x0080800080008000, 0x8080800080008000,
1497  0x0000008080008000, 0x8000008080008000,
1498  0x0080008080008000, 0x8080008080008000,
1499  0x0000808080008000, 0x8000808080008000,
1500  0x0080808080008000, 0x8080808080008000,
1501  0x0000000000808000, 0x8000000000808000,
1502  0x0080000000808000, 0x8080000000808000,
1503  0x0000800000808000, 0x8000800000808000,
1504  0x0080800000808000, 0x8080800000808000,
1505  0x0000008000808000, 0x8000008000808000,
1506  0x0080008000808000, 0x8080008000808000,
1507  0x0000808000808000, 0x8000808000808000,
1508  0x0080808000808000, 0x8080808000808000,
1509  0x0000000080808000, 0x8000000080808000,
1510  0x0080000080808000, 0x8080000080808000,
1511  0x0000800080808000, 0x8000800080808000,
1512  0x0080800080808000, 0x8080800080808000,
1513  0x0000008080808000, 0x8000008080808000,
1514  0x0080008080808000, 0x8080008080808000,
1515  0x0000808080808000, 0x8000808080808000,
1516  0x0080808080808000, 0x8080808080808000,
1517  0x0000000000000080, 0x8000000000000080,
1518  0x0080000000000080, 0x8080000000000080,
1519  0x0000800000000080, 0x8000800000000080,
1520  0x0080800000000080, 0x8080800000000080,
1521  0x0000008000000080, 0x8000008000000080,
1522  0x0080008000000080, 0x8080008000000080,
1523  0x0000808000000080, 0x8000808000000080,
1524  0x0080808000000080, 0x8080808000000080,
1525  0x0000000080000080, 0x8000000080000080,
1526  0x0080000080000080, 0x8080000080000080,
1527  0x0000800080000080, 0x8000800080000080,
1528  0x0080800080000080, 0x8080800080000080,
1529  0x0000008080000080, 0x8000008080000080,
1530  0x0080008080000080, 0x8080008080000080,
1531  0x0000808080000080, 0x8000808080000080,
1532  0x0080808080000080, 0x8080808080000080,
1533  0x0000000000800080, 0x8000000000800080,
1534  0x0080000000800080, 0x8080000000800080,
1535  0x0000800000800080, 0x8000800000800080,
1536  0x0080800000800080, 0x8080800000800080,
1537  0x0000008000800080, 0x8000008000800080,
1538  0x0080008000800080, 0x8080008000800080,
1539  0x0000808000800080, 0x8000808000800080,
1540  0x0080808000800080, 0x8080808000800080,
1541  0x0000000080800080, 0x8000000080800080,
1542  0x0080000080800080, 0x8080000080800080,
1543  0x0000800080800080, 0x8000800080800080,
1544  0x0080800080800080, 0x8080800080800080,
1545  0x0000008080800080, 0x8000008080800080,
1546  0x0080008080800080, 0x8080008080800080,
1547  0x0000808080800080, 0x8000808080800080,
1548  0x0080808080800080, 0x8080808080800080,
1549  0x0000000000008080, 0x8000000000008080,
1550  0x0080000000008080, 0x8080000000008080,
1551  0x0000800000008080, 0x8000800000008080,
1552  0x0080800000008080, 0x8080800000008080,
1553  0x0000008000008080, 0x8000008000008080,
1554  0x0080008000008080, 0x8080008000008080,
1555  0x0000808000008080, 0x8000808000008080,
1556  0x0080808000008080, 0x8080808000008080,
1557  0x0000000080008080, 0x8000000080008080,
1558  0x0080000080008080, 0x8080000080008080,
1559  0x0000800080008080, 0x8000800080008080,
1560  0x0080800080008080, 0x8080800080008080,
1561  0x0000008080008080, 0x8000008080008080,
1562  0x0080008080008080, 0x8080008080008080,
1563  0x0000808080008080, 0x8000808080008080,
1564  0x0080808080008080, 0x8080808080008080,
1565  0x0000000000808080, 0x8000000000808080,
1566  0x0080000000808080, 0x8080000000808080,
1567  0x0000800000808080, 0x8000800000808080,
1568  0x0080800000808080, 0x8080800000808080,
1569  0x0000008000808080, 0x8000008000808080,
1570  0x0080008000808080, 0x8080008000808080,
1571  0x0000808000808080, 0x8000808000808080,
1572  0x0080808000808080, 0x8080808000808080,
1573  0x0000000080808080, 0x8000000080808080,
1574  0x0080000080808080, 0x8080000080808080,
1575  0x0000800080808080, 0x8000800080808080,
1576  0x0080800080808080, 0x8080800080808080,
1577  0x0000008080808080, 0x8000008080808080,
1578  0x0080008080808080, 0x8080008080808080,
1579  0x0000808080808080, 0x8000808080808080,
1580  0x0080808080808080, 0x8080808080808080,
1581  0x0000000000000000, 0x0100000000000000,
1582  0x0001000000000000, 0x0101000000000000,
1583  0x0000010000000000, 0x0100010000000000,
1584  0x0001010000000000, 0x0101010000000000,
1585  0x0000000100000000, 0x0100000100000000,
1586  0x0001000100000000, 0x0101000100000000,
1587  0x0000010100000000, 0x0100010100000000,
1588  0x0001010100000000, 0x0101010100000000,
1589  0x0000000001000000, 0x0100000001000000,
1590  0x0001000001000000, 0x0101000001000000,
1591  0x0000010001000000, 0x0100010001000000,
1592  0x0001010001000000, 0x0101010001000000,
1593  0x0000000101000000, 0x0100000101000000,
1594  0x0001000101000000, 0x0101000101000000,
1595  0x0000010101000000, 0x0100010101000000,
1596  0x0001010101000000, 0x0101010101000000,
1597  0x0000000000010000, 0x0100000000010000,
1598  0x0001000000010000, 0x0101000000010000,
1599  0x0000010000010000, 0x0100010000010000,
1600  0x0001010000010000, 0x0101010000010000,
1601  0x0000000100010000, 0x0100000100010000,
1602  0x0001000100010000, 0x0101000100010000,
1603  0x0000010100010000, 0x0100010100010000,
1604  0x0001010100010000, 0x0101010100010000,
1605  0x0000000001010000, 0x0100000001010000,
1606  0x0001000001010000, 0x0101000001010000,
1607  0x0000010001010000, 0x0100010001010000,
1608  0x0001010001010000, 0x0101010001010000,
1609  0x0000000101010000, 0x0100000101010000,
1610  0x0001000101010000, 0x0101000101010000,
1611  0x0000010101010000, 0x0100010101010000,
1612  0x0001010101010000, 0x0101010101010000,
1613  0x0000000000000100, 0x0100000000000100,
1614  0x0001000000000100, 0x0101000000000100,
1615  0x0000010000000100, 0x0100010000000100,
1616  0x0001010000000100, 0x0101010000000100,
1617  0x0000000100000100, 0x0100000100000100,
1618  0x0001000100000100, 0x0101000100000100,
1619  0x0000010100000100, 0x0100010100000100,
1620  0x0001010100000100, 0x0101010100000100,
1621  0x0000000001000100, 0x0100000001000100,
1622  0x0001000001000100, 0x0101000001000100,
1623  0x0000010001000100, 0x0100010001000100,
1624  0x0001010001000100, 0x0101010001000100,
1625  0x0000000101000100, 0x0100000101000100,
1626  0x0001000101000100, 0x0101000101000100,
1627  0x0000010101000100, 0x0100010101000100,
1628  0x0001010101000100, 0x0101010101000100,
1629  0x0000000000010100, 0x0100000000010100,
1630  0x0001000000010100, 0x0101000000010100,
1631  0x0000010000010100, 0x0100010000010100,
1632  0x0001010000010100, 0x0101010000010100,
1633  0x0000000100010100, 0x0100000100010100,
1634  0x0001000100010100, 0x0101000100010100,
1635  0x0000010100010100, 0x0100010100010100,
1636  0x0001010100010100, 0x0101010100010100,
1637  0x0000000001010100, 0x0100000001010100,
1638  0x0001000001010100, 0x0101000001010100,
1639  0x0000010001010100, 0x0100010001010100,
1640  0x0001010001010100, 0x0101010001010100,
1641  0x0000000101010100, 0x0100000101010100,
1642  0x0001000101010100, 0x0101000101010100,
1643  0x0000010101010100, 0x0100010101010100,
1644  0x0001010101010100, 0x0101010101010100,
1645  0x0000000000000001, 0x0100000000000001,
1646  0x0001000000000001, 0x0101000000000001,
1647  0x0000010000000001, 0x0100010000000001,
1648  0x0001010000000001, 0x0101010000000001,
1649  0x0000000100000001, 0x0100000100000001,
1650  0x0001000100000001, 0x0101000100000001,
1651  0x0000010100000001, 0x0100010100000001,
1652  0x0001010100000001, 0x0101010100000001,
1653  0x0000000001000001, 0x0100000001000001,
1654  0x0001000001000001, 0x0101000001000001,
1655  0x0000010001000001, 0x0100010001000001,
1656  0x0001010001000001, 0x0101010001000001,
1657  0x0000000101000001, 0x0100000101000001,
1658  0x0001000101000001, 0x0101000101000001,
1659  0x0000010101000001, 0x0100010101000001,
1660  0x0001010101000001, 0x0101010101000001,
1661  0x0000000000010001, 0x0100000000010001,
1662  0x0001000000010001, 0x0101000000010001,
1663  0x0000010000010001, 0x0100010000010001,
1664  0x0001010000010001, 0x0101010000010001,
1665  0x0000000100010001, 0x0100000100010001,
1666  0x0001000100010001, 0x0101000100010001,
1667  0x0000010100010001, 0x0100010100010001,
1668  0x0001010100010001, 0x0101010100010001,
1669  0x0000000001010001, 0x0100000001010001,
1670  0x0001000001010001, 0x0101000001010001,
1671  0x0000010001010001, 0x0100010001010001,
1672  0x0001010001010001, 0x0101010001010001,
1673  0x0000000101010001, 0x0100000101010001,
1674  0x0001000101010001, 0x0101000101010001,
1675  0x0000010101010001, 0x0100010101010001,
1676  0x0001010101010001, 0x0101010101010001,
1677  0x0000000000000101, 0x0100000000000101,
1678  0x0001000000000101, 0x0101000000000101,
1679  0x0000010000000101, 0x0100010000000101,
1680  0x0001010000000101, 0x0101010000000101,
1681  0x0000000100000101, 0x0100000100000101,
1682  0x0001000100000101, 0x0101000100000101,
1683  0x0000010100000101, 0x0100010100000101,
1684  0x0001010100000101, 0x0101010100000101,
1685  0x0000000001000101, 0x0100000001000101,
1686  0x0001000001000101, 0x0101000001000101,
1687  0x0000010001000101, 0x0100010001000101,
1688  0x0001010001000101, 0x0101010001000101,
1689  0x0000000101000101, 0x0100000101000101,
1690  0x0001000101000101, 0x0101000101000101,
1691  0x0000010101000101, 0x0100010101000101,
1692  0x0001010101000101, 0x0101010101000101,
1693  0x0000000000010101, 0x0100000000010101,
1694  0x0001000000010101, 0x0101000000010101,
1695  0x0000010000010101, 0x0100010000010101,
1696  0x0001010000010101, 0x0101010000010101,
1697  0x0000000100010101, 0x0100000100010101,
1698  0x0001000100010101, 0x0101000100010101,
1699  0x0000010100010101, 0x0100010100010101,
1700  0x0001010100010101, 0x0101010100010101,
1701  0x0000000001010101, 0x0100000001010101,
1702  0x0001000001010101, 0x0101000001010101,
1703  0x0000010001010101, 0x0100010001010101,
1704  0x0001010001010101, 0x0101010001010101,
1705  0x0000000101010101, 0x0100000101010101,
1706  0x0001000101010101, 0x0101000101010101,
1707  0x0000010101010101, 0x0100010101010101,
1708  0x0001010101010101, 0x0101010101010101,
1709  0x0000000000000000, 0x0400000000000000,
1710  0x0004000000000000, 0x0404000000000000,
1711  0x0000040000000000, 0x0400040000000000,
1712  0x0004040000000000, 0x0404040000000000,
1713  0x0000000400000000, 0x0400000400000000,
1714  0x0004000400000000, 0x0404000400000000,
1715  0x0000040400000000, 0x0400040400000000,
1716  0x0004040400000000, 0x0404040400000000,
1717  0x0000000004000000, 0x0400000004000000,
1718  0x0004000004000000, 0x0404000004000000,
1719  0x0000040004000000, 0x0400040004000000,
1720  0x0004040004000000, 0x0404040004000000,
1721  0x0000000404000000, 0x0400000404000000,
1722  0x0004000404000000, 0x0404000404000000,
1723  0x0000040404000000, 0x0400040404000000,
1724  0x0004040404000000, 0x0404040404000000,
1725  0x0000000000040000, 0x0400000000040000,
1726  0x0004000000040000, 0x0404000000040000,
1727  0x0000040000040000, 0x0400040000040000,
1728  0x0004040000040000, 0x0404040000040000,
1729  0x0000000400040000, 0x0400000400040000,
1730  0x0004000400040000, 0x0404000400040000,
1731  0x0000040400040000, 0x0400040400040000,
1732  0x0004040400040000, 0x0404040400040000,
1733  0x0000000004040000, 0x0400000004040000,
1734  0x0004000004040000, 0x0404000004040000,
1735  0x0000040004040000, 0x0400040004040000,
1736  0x0004040004040000, 0x0404040004040000,
1737  0x0000000404040000, 0x0400000404040000,
1738  0x0004000404040000, 0x0404000404040000,
1739  0x0000040404040000, 0x0400040404040000,
1740  0x0004040404040000, 0x0404040404040000,
1741  0x0000000000000400, 0x0400000000000400,
1742  0x0004000000000400, 0x0404000000000400,
1743  0x0000040000000400, 0x0400040000000400,
1744  0x0004040000000400, 0x0404040000000400,
1745  0x0000000400000400, 0x0400000400000400,
1746  0x0004000400000400, 0x0404000400000400,
1747  0x0000040400000400, 0x0400040400000400,
1748  0x0004040400000400, 0x0404040400000400,
1749  0x0000000004000400, 0x0400000004000400,
1750  0x0004000004000400, 0x0404000004000400,
1751  0x0000040004000400, 0x0400040004000400,
1752  0x0004040004000400, 0x0404040004000400,
1753  0x0000000404000400, 0x0400000404000400,
1754  0x0004000404000400, 0x0404000404000400,
1755  0x0000040404000400, 0x0400040404000400,
1756  0x0004040404000400, 0x0404040404000400,
1757  0x0000000000040400, 0x0400000000040400,
1758  0x0004000000040400, 0x0404000000040400,
1759  0x0000040000040400, 0x0400040000040400,
1760  0x0004040000040400, 0x0404040000040400,
1761  0x0000000400040400, 0x0400000400040400,
1762  0x0004000400040400, 0x0404000400040400,
1763  0x0000040400040400, 0x0400040400040400,
1764  0x0004040400040400, 0x0404040400040400,
1765  0x0000000004040400, 0x0400000004040400,
1766  0x0004000004040400, 0x0404000004040400,
1767  0x0000040004040400, 0x0400040004040400,
1768  0x0004040004040400, 0x0404040004040400,
1769  0x0000000404040400, 0x0400000404040400,
1770  0x0004000404040400, 0x0404000404040400,
1771  0x0000040404040400, 0x0400040404040400,
1772  0x0004040404040400, 0x0404040404040400,
1773  0x0000000000000004, 0x0400000000000004,
1774  0x0004000000000004, 0x0404000000000004,
1775  0x0000040000000004, 0x0400040000000004,
1776  0x0004040000000004, 0x0404040000000004,
1777  0x0000000400000004, 0x0400000400000004,
1778  0x0004000400000004, 0x0404000400000004,
1779  0x0000040400000004, 0x0400040400000004,
1780  0x0004040400000004, 0x0404040400000004,
1781  0x0000000004000004, 0x0400000004000004,
1782  0x0004000004000004, 0x0404000004000004,
1783  0x0000040004000004, 0x0400040004000004,
1784  0x0004040004000004, 0x0404040004000004,
1785  0x0000000404000004, 0x0400000404000004,
1786  0x0004000404000004, 0x0404000404000004,
1787  0x0000040404000004, 0x0400040404000004,
1788  0x0004040404000004, 0x0404040404000004,
1789  0x0000000000040004, 0x0400000000040004,
1790  0x0004000000040004, 0x0404000000040004,
1791  0x0000040000040004, 0x0400040000040004,
1792  0x0004040000040004, 0x0404040000040004,
1793  0x0000000400040004, 0x0400000400040004,
1794  0x0004000400040004, 0x0404000400040004,
1795  0x0000040400040004, 0x0400040400040004,
1796  0x0004040400040004, 0x0404040400040004,
1797  0x0000000004040004, 0x0400000004040004,
1798  0x0004000004040004, 0x0404000004040004,
1799  0x0000040004040004, 0x0400040004040004,
1800  0x0004040004040004, 0x0404040004040004,
1801  0x0000000404040004, 0x0400000404040004,
1802  0x0004000404040004, 0x0404000404040004,
1803  0x0000040404040004, 0x0400040404040004,
1804  0x0004040404040004, 0x0404040404040004,
1805  0x0000000000000404, 0x0400000000000404,
1806  0x0004000000000404, 0x0404000000000404,
1807  0x0000040000000404, 0x0400040000000404,
1808  0x0004040000000404, 0x0404040000000404,
1809  0x0000000400000404, 0x0400000400000404,
1810  0x0004000400000404, 0x0404000400000404,
1811  0x0000040400000404, 0x0400040400000404,
1812  0x0004040400000404, 0x0404040400000404,
1813  0x0000000004000404, 0x0400000004000404,
1814  0x0004000004000404, 0x0404000004000404,
1815  0x0000040004000404, 0x0400040004000404,
1816  0x0004040004000404, 0x0404040004000404,
1817  0x0000000404000404, 0x0400000404000404,
1818  0x0004000404000404, 0x0404000404000404,
1819  0x0000040404000404, 0x0400040404000404,
1820  0x0004040404000404, 0x0404040404000404,
1821  0x0000000000040404, 0x0400000000040404,
1822  0x0004000000040404, 0x0404000000040404,
1823  0x0000040000040404, 0x0400040000040404,
1824  0x0004040000040404, 0x0404040000040404,
1825  0x0000000400040404, 0x0400000400040404,
1826  0x0004000400040404, 0x0404000400040404,
1827  0x0000040400040404, 0x0400040400040404,
1828  0x0004040400040404, 0x0404040400040404,
1829  0x0000000004040404, 0x0400000004040404,
1830  0x0004000004040404, 0x0404000004040404,
1831  0x0000040004040404, 0x0400040004040404,
1832  0x0004040004040404, 0x0404040004040404,
1833  0x0000000404040404, 0x0400000404040404,
1834  0x0004000404040404, 0x0404000404040404,
1835  0x0000040404040404, 0x0400040404040404,
1836  0x0004040404040404, 0x0404040404040404,
1837  0x0000000000000000, 0x1000000000000000,
1838  0x0010000000000000, 0x1010000000000000,
1839  0x0000100000000000, 0x1000100000000000,
1840  0x0010100000000000, 0x1010100000000000,
1841  0x0000001000000000, 0x1000001000000000,
1842  0x0010001000000000, 0x1010001000000000,
1843  0x0000101000000000, 0x1000101000000000,
1844  0x0010101000000000, 0x1010101000000000,
1845  0x0000000010000000, 0x1000000010000000,
1846  0x0010000010000000, 0x1010000010000000,
1847  0x0000100010000000, 0x1000100010000000,
1848  0x0010100010000000, 0x1010100010000000,
1849  0x0000001010000000, 0x1000001010000000,
1850  0x0010001010000000, 0x1010001010000000,
1851  0x0000101010000000, 0x1000101010000000,
1852  0x0010101010000000, 0x1010101010000000,
1853  0x0000000000100000, 0x1000000000100000,
1854  0x0010000000100000, 0x1010000000100000,
1855  0x0000100000100000, 0x1000100000100000,
1856  0x0010100000100000, 0x1010100000100000,
1857  0x0000001000100000, 0x1000001000100000,
1858  0x0010001000100000, 0x1010001000100000,
1859  0x0000101000100000, 0x1000101000100000,
1860  0x0010101000100000, 0x1010101000100000,
1861  0x0000000010100000, 0x1000000010100000,
1862  0x0010000010100000, 0x1010000010100000,
1863  0x0000100010100000, 0x1000100010100000,
1864  0x0010100010100000, 0x1010100010100000,
1865  0x0000001010100000, 0x1000001010100000,
1866  0x0010001010100000, 0x1010001010100000,
1867  0x0000101010100000, 0x1000101010100000,
1868  0x0010101010100000, 0x1010101010100000,
1869  0x0000000000001000, 0x1000000000001000,
1870  0x0010000000001000, 0x1010000000001000,
1871  0x0000100000001000, 0x1000100000001000,
1872  0x0010100000001000, 0x1010100000001000,
1873  0x0000001000001000, 0x1000001000001000,
1874  0x0010001000001000, 0x1010001000001000,
1875  0x0000101000001000, 0x1000101000001000,
1876  0x0010101000001000, 0x1010101000001000,
1877  0x0000000010001000, 0x1000000010001000,
1878  0x0010000010001000, 0x1010000010001000,
1879  0x0000100010001000, 0x1000100010001000,
1880  0x0010100010001000, 0x1010100010001000,
1881  0x0000001010001000, 0x1000001010001000,
1882  0x0010001010001000, 0x1010001010001000,
1883  0x0000101010001000, 0x1000101010001000,
1884  0x0010101010001000, 0x1010101010001000,
1885  0x0000000000101000, 0x1000000000101000,
1886  0x0010000000101000, 0x1010000000101000,
1887  0x0000100000101000, 0x1000100000101000,
1888  0x0010100000101000, 0x1010100000101000,
1889  0x0000001000101000, 0x1000001000101000,
1890  0x0010001000101000, 0x1010001000101000,
1891  0x0000101000101000, 0x1000101000101000,
1892  0x0010101000101000, 0x1010101000101000,
1893  0x0000000010101000, 0x1000000010101000,
1894  0x0010000010101000, 0x1010000010101000,
1895  0x0000100010101000, 0x1000100010101000,
1896  0x0010100010101000, 0x1010100010101000,
1897  0x0000001010101000, 0x1000001010101000,
1898  0x0010001010101000, 0x1010001010101000,
1899  0x0000101010101000, 0x1000101010101000,
1900  0x0010101010101000, 0x1010101010101000,
1901  0x0000000000000010, 0x1000000000000010,
1902  0x0010000000000010, 0x1010000000000010,
1903  0x0000100000000010, 0x1000100000000010,
1904  0x0010100000000010, 0x1010100000000010,
1905  0x0000001000000010, 0x1000001000000010,
1906  0x0010001000000010, 0x1010001000000010,
1907  0x0000101000000010, 0x1000101000000010,
1908  0x0010101000000010, 0x1010101000000010,
1909  0x0000000010000010, 0x1000000010000010,
1910  0x0010000010000010, 0x1010000010000010,
1911  0x0000100010000010, 0x1000100010000010,
1912  0x0010100010000010, 0x1010100010000010,
1913  0x0000001010000010, 0x1000001010000010,
1914  0x0010001010000010, 0x1010001010000010,
1915  0x0000101010000010, 0x1000101010000010,
1916  0x0010101010000010, 0x1010101010000010,
1917  0x0000000000100010, 0x1000000000100010,
1918  0x0010000000100010, 0x1010000000100010,
1919  0x0000100000100010, 0x1000100000100010,
1920  0x0010100000100010, 0x1010100000100010,
1921  0x0000001000100010, 0x1000001000100010,
1922  0x0010001000100010, 0x1010001000100010,
1923  0x0000101000100010, 0x1000101000100010,
1924  0x0010101000100010, 0x1010101000100010,
1925  0x0000000010100010, 0x1000000010100010,
1926  0x0010000010100010, 0x1010000010100010,
1927  0x0000100010100010, 0x1000100010100010,
1928  0x0010100010100010, 0x1010100010100010,
1929  0x0000001010100010, 0x1000001010100010,
1930  0x0010001010100010, 0x1010001010100010,
1931  0x0000101010100010, 0x1000101010100010,
1932  0x0010101010100010, 0x1010101010100010,
1933  0x0000000000001010, 0x1000000000001010,
1934  0x0010000000001010, 0x1010000000001010,
1935  0x0000100000001010, 0x1000100000001010,
1936  0x0010100000001010, 0x1010100000001010,
1937  0x0000001000001010, 0x1000001000001010,
1938  0x0010001000001010, 0x1010001000001010,
1939  0x0000101000001010, 0x1000101000001010,
1940  0x0010101000001010, 0x1010101000001010,
1941  0x0000000010001010, 0x1000000010001010,
1942  0x0010000010001010, 0x1010000010001010,
1943  0x0000100010001010, 0x1000100010001010,
1944  0x0010100010001010, 0x1010100010001010,
1945  0x0000001010001010, 0x1000001010001010,
1946  0x0010001010001010, 0x1010001010001010,
1947  0x0000101010001010, 0x1000101010001010,
1948  0x0010101010001010, 0x1010101010001010,
1949  0x0000000000101010, 0x1000000000101010,
1950  0x0010000000101010, 0x1010000000101010,
1951  0x0000100000101010, 0x1000100000101010,
1952  0x0010100000101010, 0x1010100000101010,
1953  0x0000001000101010, 0x1000001000101010,
1954  0x0010001000101010, 0x1010001000101010,
1955  0x0000101000101010, 0x1000101000101010,
1956  0x0010101000101010, 0x1010101000101010,
1957  0x0000000010101010, 0x1000000010101010,
1958  0x0010000010101010, 0x1010000010101010,
1959  0x0000100010101010, 0x1000100010101010,
1960  0x0010100010101010, 0x1010100010101010,
1961  0x0000001010101010, 0x1000001010101010,
1962  0x0010001010101010, 0x1010001010101010,
1963  0x0000101010101010, 0x1000101010101010,
1964  0x0010101010101010, 0x1010101010101010,
1965  0x0000000000000000, 0x4000000000000000,
1966  0x0040000000000000, 0x4040000000000000,
1967  0x0000400000000000, 0x4000400000000000,
1968  0x0040400000000000, 0x4040400000000000,
1969  0x0000004000000000, 0x4000004000000000,
1970  0x0040004000000000, 0x4040004000000000,
1971  0x0000404000000000, 0x4000404000000000,
1972  0x0040404000000000, 0x4040404000000000,
1973  0x0000000040000000, 0x4000000040000000,
1974  0x0040000040000000, 0x4040000040000000,
1975  0x0000400040000000, 0x4000400040000000,
1976  0x0040400040000000, 0x4040400040000000,
1977  0x0000004040000000, 0x4000004040000000,
1978  0x0040004040000000, 0x4040004040000000,
1979  0x0000404040000000, 0x4000404040000000,
1980  0x0040404040000000, 0x4040404040000000,
1981  0x0000000000400000, 0x4000000000400000,
1982  0x0040000000400000, 0x4040000000400000,
1983  0x0000400000400000, 0x4000400000400000,
1984  0x0040400000400000, 0x4040400000400000,
1985  0x0000004000400000, 0x4000004000400000,
1986  0x0040004000400000, 0x4040004000400000,
1987  0x0000404000400000, 0x4000404000400000,
1988  0x0040404000400000, 0x4040404000400000,
1989  0x0000000040400000, 0x4000000040400000,
1990  0x0040000040400000, 0x4040000040400000,
1991  0x0000400040400000, 0x4000400040400000,
1992  0x0040400040400000, 0x4040400040400000,
1993  0x0000004040400000, 0x4000004040400000,
1994  0x0040004040400000, 0x4040004040400000,
1995  0x0000404040400000, 0x4000404040400000,
1996  0x0040404040400000, 0x4040404040400000,
1997  0x0000000000004000, 0x4000000000004000,
1998  0x0040000000004000, 0x4040000000004000,
1999  0x0000400000004000, 0x4000400000004000,
2000  0x0040400000004000, 0x4040400000004000,
2001  0x0000004000004000, 0x4000004000004000,
2002  0x0040004000004000, 0x4040004000004000,
2003  0x0000404000004000, 0x4000404000004000,
2004  0x0040404000004000, 0x4040404000004000,
2005  0x0000000040004000, 0x4000000040004000,
2006  0x0040000040004000, 0x4040000040004000,
2007  0x0000400040004000, 0x4000400040004000,
2008  0x0040400040004000, 0x4040400040004000,
2009  0x0000004040004000, 0x4000004040004000,
2010  0x0040004040004000, 0x4040004040004000,
2011  0x0000404040004000, 0x4000404040004000,
2012  0x0040404040004000, 0x4040404040004000,
2013  0x0000000000404000, 0x4000000000404000,
2014  0x0040000000404000, 0x4040000000404000,
2015  0x0000400000404000, 0x4000400000404000,
2016  0x0040400000404000, 0x4040400000404000,
2017  0x0000004000404000, 0x4000004000404000,
2018  0x0040004000404000, 0x4040004000404000,
2019  0x0000404000404000, 0x4000404000404000,
2020  0x0040404000404000, 0x4040404000404000,
2021  0x0000000040404000, 0x4000000040404000,
2022  0x0040000040404000, 0x4040000040404000,
2023  0x0000400040404000, 0x4000400040404000,
2024  0x0040400040404000, 0x4040400040404000,
2025  0x0000004040404000, 0x4000004040404000,
2026  0x0040004040404000, 0x4040004040404000,
2027  0x0000404040404000, 0x4000404040404000,
2028  0x0040404040404000, 0x4040404040404000,
2029  0x0000000000000040, 0x4000000000000040,
2030  0x0040000000000040, 0x4040000000000040,
2031  0x0000400000000040, 0x4000400000000040,
2032  0x0040400000000040, 0x4040400000000040,
2033  0x0000004000000040, 0x4000004000000040,
2034  0x0040004000000040, 0x4040004000000040,
2035  0x0000404000000040, 0x4000404000000040,
2036  0x0040404000000040, 0x4040404000000040,
2037  0x0000000040000040, 0x4000000040000040,
2038  0x0040000040000040, 0x4040000040000040,
2039  0x0000400040000040, 0x4000400040000040,
2040  0x0040400040000040, 0x4040400040000040,
2041  0x0000004040000040, 0x4000004040000040,
2042  0x0040004040000040, 0x4040004040000040,
2043  0x0000404040000040, 0x4000404040000040,
2044  0x0040404040000040, 0x4040404040000040,
2045  0x0000000000400040, 0x4000000000400040,
2046  0x0040000000400040, 0x4040000000400040,
2047  0x0000400000400040, 0x4000400000400040,
2048  0x0040400000400040, 0x4040400000400040,
2049  0x0000004000400040, 0x4000004000400040,
2050  0x0040004000400040, 0x4040004000400040,
2051  0x0000404000400040, 0x4000404000400040,
2052  0x0040404000400040, 0x4040404000400040,
2053  0x0000000040400040, 0x4000000040400040,
2054  0x0040000040400040, 0x4040000040400040,
2055  0x0000400040400040, 0x4000400040400040,
2056  0x0040400040400040, 0x4040400040400040,
2057  0x0000004040400040, 0x4000004040400040,
2058  0x0040004040400040, 0x4040004040400040,
2059  0x0000404040400040, 0x4000404040400040,
2060  0x0040404040400040, 0x4040404040400040,
2061  0x0000000000004040, 0x4000000000004040,
2062  0x0040000000004040, 0x4040000000004040,
2063  0x0000400000004040, 0x4000400000004040,
2064  0x0040400000004040, 0x4040400000004040,
2065  0x0000004000004040, 0x4000004000004040,
2066  0x0040004000004040, 0x4040004000004040,
2067  0x0000404000004040, 0x4000404000004040,
2068  0x0040404000004040, 0x4040404000004040,
2069  0x0000000040004040, 0x4000000040004040,
2070  0x0040000040004040, 0x4040000040004040,
2071  0x0000400040004040, 0x4000400040004040,
2072  0x0040400040004040, 0x4040400040004040,
2073  0x0000004040004040, 0x4000004040004040,
2074  0x0040004040004040, 0x4040004040004040,
2075  0x0000404040004040, 0x4000404040004040,
2076  0x0040404040004040, 0x4040404040004040,
2077  0x0000000000404040, 0x4000000000404040,
2078  0x0040000000404040, 0x4040000000404040,
2079  0x0000400000404040, 0x4000400000404040,
2080  0x0040400000404040, 0x4040400000404040,
2081  0x0000004000404040, 0x4000004000404040,
2082  0x0040004000404040, 0x4040004000404040,
2083  0x0000404000404040, 0x4000404000404040,
2084  0x0040404000404040, 0x4040404000404040,
2085  0x0000000040404040, 0x4000000040404040,
2086  0x0040000040404040, 0x4040000040404040,
2087  0x0000400040404040, 0x4000400040404040,
2088  0x0040400040404040, 0x4040400040404040,
2089  0x0000004040404040, 0x4000004040404040,
2090  0x0040004040404040, 0x4040004040404040,
2091  0x0000404040404040, 0x4000404040404040,
2092  0x0040404040404040, 0x4040404040404040
2093)
2094
2095# E permutation table
2096E_K = (
2097  0x0000000000000000, 0x0000800000000002,
2098  0x0000000000000004, 0x0000800000000006,
2099  0x0000000000000008, 0x000080000000000a,
2100  0x000000000000000c, 0x000080000000000e,
2101  0x0000000000000050, 0x0000800000000052,
2102  0x0000000000000054, 0x0000800000000056,
2103  0x0000000000000058, 0x000080000000005a,
2104  0x000000000000005c, 0x000080000000005e,
2105  0x00000000000000a0, 0x00008000000000a2,
2106  0x00000000000000a4, 0x00008000000000a6,
2107  0x00000000000000a8, 0x00008000000000aa,
2108  0x00000000000000ac, 0x00008000000000ae,
2109  0x00000000000000f0, 0x00008000000000f2,
2110  0x00000000000000f4, 0x00008000000000f6,
2111  0x00000000000000f8, 0x00008000000000fa,
2112  0x00000000000000fc, 0x00008000000000fe,
2113  0x0000000000000100, 0x0000800000000102,
2114  0x0000000000000104, 0x0000800000000106,
2115  0x0000000000000108, 0x000080000000010a,
2116  0x000000000000010c, 0x000080000000010e,
2117  0x0000000000000150, 0x0000800000000152,
2118  0x0000000000000154, 0x0000800000000156,
2119  0x0000000000000158, 0x000080000000015a,
2120  0x000000000000015c, 0x000080000000015e,
2121  0x00000000000001a0, 0x00008000000001a2,
2122  0x00000000000001a4, 0x00008000000001a6,
2123  0x00000000000001a8, 0x00008000000001aa,
2124  0x00000000000001ac, 0x00008000000001ae,
2125  0x00000000000001f0, 0x00008000000001f2,
2126  0x00000000000001f4, 0x00008000000001f6,
2127  0x00000000000001f8, 0x00008000000001fa,
2128  0x00000000000001fc, 0x00008000000001fe,
2129  0x0000000000000200, 0x0000800000000202,
2130  0x0000000000000204, 0x0000800000000206,
2131  0x0000000000000208, 0x000080000000020a,
2132  0x000000000000020c, 0x000080000000020e,
2133  0x0000000000000250, 0x0000800000000252,
2134  0x0000000000000254, 0x0000800000000256,
2135  0x0000000000000258, 0x000080000000025a,
2136  0x000000000000025c, 0x000080000000025e,
2137  0x00000000000002a0, 0x00008000000002a2,
2138  0x00000000000002a4, 0x00008000000002a6,
2139  0x00000000000002a8, 0x00008000000002aa,
2140  0x00000000000002ac, 0x00008000000002ae,
2141  0x00000000000002f0, 0x00008000000002f2,
2142  0x00000000000002f4, 0x00008000000002f6,
2143  0x00000000000002f8, 0x00008000000002fa,
2144  0x00000000000002fc, 0x00008000000002fe,
2145  0x0000000000000300, 0x0000800000000302,
2146  0x0000000000000304, 0x0000800000000306,
2147  0x0000000000000308, 0x000080000000030a,
2148  0x000000000000030c, 0x000080000000030e,
2149  0x0000000000000350, 0x0000800000000352,
2150  0x0000000000000354, 0x0000800000000356,
2151  0x0000000000000358, 0x000080000000035a,
2152  0x000000000000035c, 0x000080000000035e,
2153  0x00000000000003a0, 0x00008000000003a2,
2154  0x00000000000003a4, 0x00008000000003a6,
2155  0x00000000000003a8, 0x00008000000003aa,
2156  0x00000000000003ac, 0x00008000000003ae,
2157  0x00000000000003f0, 0x00008000000003f2,
2158  0x00000000000003f4, 0x00008000000003f6,
2159  0x00000000000003f8, 0x00008000000003fa,
2160  0x00000000000003fc, 0x00008000000003fe,
2161  0x0000000000001400, 0x0000800000001402,
2162  0x0000000000001404, 0x0000800000001406,
2163  0x0000000000001408, 0x000080000000140a,
2164  0x000000000000140c, 0x000080000000140e,
2165  0x0000000000001450, 0x0000800000001452,
2166  0x0000000000001454, 0x0000800000001456,
2167  0x0000000000001458, 0x000080000000145a,
2168  0x000000000000145c, 0x000080000000145e,
2169  0x00000000000014a0, 0x00008000000014a2,
2170  0x00000000000014a4, 0x00008000000014a6,
2171  0x00000000000014a8, 0x00008000000014aa,
2172  0x00000000000014ac, 0x00008000000014ae,
2173  0x00000000000014f0, 0x00008000000014f2,
2174  0x00000000000014f4, 0x00008000000014f6,
2175  0x00000000000014f8, 0x00008000000014fa,
2176  0x00000000000014fc, 0x00008000000014fe,
2177  0x0000000000001500, 0x0000800000001502,
2178  0x0000000000001504, 0x0000800000001506,
2179  0x0000000000001508, 0x000080000000150a,
2180  0x000000000000150c, 0x000080000000150e,
2181  0x0000000000001550, 0x0000800000001552,
2182  0x0000000000001554, 0x0000800000001556,
2183  0x0000000000001558, 0x000080000000155a,
2184  0x000000000000155c, 0x000080000000155e,
2185  0x00000000000015a0, 0x00008000000015a2,
2186  0x00000000000015a4, 0x00008000000015a6,
2187  0x00000000000015a8, 0x00008000000015aa,
2188  0x00000000000015ac, 0x00008000000015ae,
2189  0x00000000000015f0, 0x00008000000015f2,
2190  0x00000000000015f4, 0x00008000000015f6,
2191  0x00000000000015f8, 0x00008000000015fa,
2192  0x00000000000015fc, 0x00008000000015fe,
2193  0x0000000000001600, 0x0000800000001602,
2194  0x0000000000001604, 0x0000800000001606,
2195  0x0000000000001608, 0x000080000000160a,
2196  0x000000000000160c, 0x000080000000160e,
2197  0x0000000000001650, 0x0000800000001652,
2198  0x0000000000001654, 0x0000800000001656,
2199  0x0000000000001658, 0x000080000000165a,
2200  0x000000000000165c, 0x000080000000165e,
2201  0x00000000000016a0, 0x00008000000016a2,
2202  0x00000000000016a4, 0x00008000000016a6,
2203  0x00000000000016a8, 0x00008000000016aa,
2204  0x00000000000016ac, 0x00008000000016ae,
2205  0x00000000000016f0, 0x00008000000016f2,
2206  0x00000000000016f4, 0x00008000000016f6,
2207  0x00000000000016f8, 0x00008000000016fa,
2208  0x00000000000016fc, 0x00008000000016fe,
2209  0x0000000000001700, 0x0000800000001702,
2210  0x0000000000001704, 0x0000800000001706,
2211  0x0000000000001708, 0x000080000000170a,
2212  0x000000000000170c, 0x000080000000170e,
2213  0x0000000000001750, 0x0000800000001752,
2214  0x0000000000001754, 0x0000800000001756,
2215  0x0000000000001758, 0x000080000000175a,
2216  0x000000000000175c, 0x000080000000175e,
2217  0x00000000000017a0, 0x00008000000017a2,
2218  0x00000000000017a4, 0x00008000000017a6,
2219  0x00000000000017a8, 0x00008000000017aa,
2220  0x00000000000017ac, 0x00008000000017ae,
2221  0x00000000000017f0, 0x00008000000017f2,
2222  0x00000000000017f4, 0x00008000000017f6,
2223  0x00000000000017f8, 0x00008000000017fa,
2224  0x00000000000017fc, 0x00008000000017fe,
2225  0x0000000000000000, 0x0000000000002800,
2226  0x0000000000004000, 0x0000000000006800,
2227  0x0000000000008000, 0x000000000000a800,
2228  0x000000000000c000, 0x000000000000e800,
2229  0x0000000000050000, 0x0000000000052800,
2230  0x0000000000054000, 0x0000000000056800,
2231  0x0000000000058000, 0x000000000005a800,
2232  0x000000000005c000, 0x000000000005e800,
2233  0x00000000000a0000, 0x00000000000a2800,
2234  0x00000000000a4000, 0x00000000000a6800,
2235  0x00000000000a8000, 0x00000000000aa800,
2236  0x00000000000ac000, 0x00000000000ae800,
2237  0x00000000000f0000, 0x00000000000f2800,
2238  0x00000000000f4000, 0x00000000000f6800,
2239  0x00000000000f8000, 0x00000000000fa800,
2240  0x00000000000fc000, 0x00000000000fe800,
2241  0x0000000000100000, 0x0000000000102800,
2242  0x0000000000104000, 0x0000000000106800,
2243  0x0000000000108000, 0x000000000010a800,
2244  0x000000000010c000, 0x000000000010e800,
2245  0x0000000000150000, 0x0000000000152800,
2246  0x0000000000154000, 0x0000000000156800,
2247  0x0000000000158000, 0x000000000015a800,
2248  0x000000000015c000, 0x000000000015e800,
2249  0x00000000001a0000, 0x00000000001a2800,
2250  0x00000000001a4000, 0x00000000001a6800,
2251  0x00000000001a8000, 0x00000000001aa800,
2252  0x00000000001ac000, 0x00000000001ae800,
2253  0x00000000001f0000, 0x00000000001f2800,
2254  0x00000000001f4000, 0x00000000001f6800,
2255  0x00000000001f8000, 0x00000000001fa800,
2256  0x00000000001fc000, 0x00000000001fe800,
2257  0x0000000000200000, 0x0000000000202800,
2258  0x0000000000204000, 0x0000000000206800,
2259  0x0000000000208000, 0x000000000020a800,
2260  0x000000000020c000, 0x000000000020e800,
2261  0x0000000000250000, 0x0000000000252800,
2262  0x0000000000254000, 0x0000000000256800,
2263  0x0000000000258000, 0x000000000025a800,
2264  0x000000000025c000, 0x000000000025e800,
2265  0x00000000002a0000, 0x00000000002a2800,
2266  0x00000000002a4000, 0x00000000002a6800,
2267  0x00000000002a8000, 0x00000000002aa800,
2268  0x00000000002ac000, 0x00000000002ae800,
2269  0x00000000002f0000, 0x00000000002f2800,
2270  0x00000000002f4000, 0x00000000002f6800,
2271  0x00000000002f8000, 0x00000000002fa800,
2272  0x00000000002fc000, 0x00000000002fe800,
2273  0x0000000000300000, 0x0000000000302800,
2274  0x0000000000304000, 0x0000000000306800,
2275  0x0000000000308000, 0x000000000030a800,
2276  0x000000000030c000, 0x000000000030e800,
2277  0x0000000000350000, 0x0000000000352800,
2278  0x0000000000354000, 0x0000000000356800,
2279  0x0000000000358000, 0x000000000035a800,
2280  0x000000000035c000, 0x000000000035e800,
2281  0x00000000003a0000, 0x00000000003a2800,
2282  0x00000000003a4000, 0x00000000003a6800,
2283  0x00000000003a8000, 0x00000000003aa800,
2284  0x00000000003ac000, 0x00000000003ae800,
2285  0x00000000003f0000, 0x00000000003f2800,
2286  0x00000000003f4000, 0x00000000003f6800,
2287  0x00000000003f8000, 0x00000000003fa800,
2288  0x00000000003fc000, 0x00000000003fe800,
2289  0x0000000001400000, 0x0000000001402800,
2290  0x0000000001404000, 0x0000000001406800,
2291  0x0000000001408000, 0x000000000140a800,
2292  0x000000000140c000, 0x000000000140e800,
2293  0x0000000001450000, 0x0000000001452800,
2294  0x0000000001454000, 0x0000000001456800,
2295  0x0000000001458000, 0x000000000145a800,
2296  0x000000000145c000, 0x000000000145e800,
2297  0x00000000014a0000, 0x00000000014a2800,
2298  0x00000000014a4000, 0x00000000014a6800,
2299  0x00000000014a8000, 0x00000000014aa800,
2300  0x00000000014ac000, 0x00000000014ae800,
2301  0x00000000014f0000, 0x00000000014f2800,
2302  0x00000000014f4000, 0x00000000014f6800,
2303  0x00000000014f8000, 0x00000000014fa800,
2304  0x00000000014fc000, 0x00000000014fe800,
2305  0x0000000001500000, 0x0000000001502800,
2306  0x0000000001504000, 0x0000000001506800,
2307  0x0000000001508000, 0x000000000150a800,
2308  0x000000000150c000, 0x000000000150e800,
2309  0x0000000001550000, 0x0000000001552800,
2310  0x0000000001554000, 0x0000000001556800,
2311  0x0000000001558000, 0x000000000155a800,
2312  0x000000000155c000, 0x000000000155e800,
2313  0x00000000015a0000, 0x00000000015a2800,
2314  0x00000000015a4000, 0x00000000015a6800,
2315  0x00000000015a8000, 0x00000000015aa800,
2316  0x00000000015ac000, 0x00000000015ae800,
2317  0x00000000015f0000, 0x00000000015f2800,
2318  0x00000000015f4000, 0x00000000015f6800,
2319  0x00000000015f8000, 0x00000000015fa800,
2320  0x00000000015fc000, 0x00000000015fe800,
2321  0x0000000001600000, 0x0000000001602800,
2322  0x0000000001604000, 0x0000000001606800,
2323  0x0000000001608000, 0x000000000160a800,
2324  0x000000000160c000, 0x000000000160e800,
2325  0x0000000001650000, 0x0000000001652800,
2326  0x0000000001654000, 0x0000000001656800,
2327  0x0000000001658000, 0x000000000165a800,
2328  0x000000000165c000, 0x000000000165e800,
2329  0x00000000016a0000, 0x00000000016a2800,
2330  0x00000000016a4000, 0x00000000016a6800,
2331  0x00000000016a8000, 0x00000000016aa800,
2332  0x00000000016ac000, 0x00000000016ae800,
2333  0x00000000016f0000, 0x00000000016f2800,
2334  0x00000000016f4000, 0x00000000016f6800,
2335  0x00000000016f8000, 0x00000000016fa800,
2336  0x00000000016fc000, 0x00000000016fe800,
2337  0x0000000001700000, 0x0000000001702800,
2338  0x0000000001704000, 0x0000000001706800,
2339  0x0000000001708000, 0x000000000170a800,
2340  0x000000000170c000, 0x000000000170e800,
2341  0x0000000001750000, 0x0000000001752800,
2342  0x0000000001754000, 0x0000000001756800,
2343  0x0000000001758000, 0x000000000175a800,
2344  0x000000000175c000, 0x000000000175e800,
2345  0x00000000017a0000, 0x00000000017a2800,
2346  0x00000000017a4000, 0x00000000017a6800,
2347  0x00000000017a8000, 0x00000000017aa800,
2348  0x00000000017ac000, 0x00000000017ae800,
2349  0x00000000017f0000, 0x00000000017f2800,
2350  0x00000000017f4000, 0x00000000017f6800,
2351  0x00000000017f8000, 0x00000000017fa800,
2352  0x00000000017fc000, 0x00000000017fe800,
2353  0x0000000000000000, 0x0000000002800000,
2354  0x0000000004000000, 0x0000000006800000,
2355  0x0000000008000000, 0x000000000a800000,
2356  0x000000000c000000, 0x000000000e800000,
2357  0x0000000050000000, 0x0000000052800000,
2358  0x0000000054000000, 0x0000000056800000,
2359  0x0000000058000000, 0x000000005a800000,
2360  0x000000005c000000, 0x000000005e800000,
2361  0x00000000a0000000, 0x00000000a2800000,
2362  0x00000000a4000000, 0x00000000a6800000,
2363  0x00000000a8000000, 0x00000000aa800000,
2364  0x00000000ac000000, 0x00000000ae800000,
2365  0x00000000f0000000, 0x00000000f2800000,
2366  0x00000000f4000000, 0x00000000f6800000,
2367  0x00000000f8000000, 0x00000000fa800000,
2368  0x00000000fc000000, 0x00000000fe800000,
2369  0x0000000100000000, 0x0000000102800000,
2370  0x0000000104000000, 0x0000000106800000,
2371  0x0000000108000000, 0x000000010a800000,
2372  0x000000010c000000, 0x000000010e800000,
2373  0x0000000150000000, 0x0000000152800000,
2374  0x0000000154000000, 0x0000000156800000,
2375  0x0000000158000000, 0x000000015a800000,
2376  0x000000015c000000, 0x000000015e800000,
2377  0x00000001a0000000, 0x00000001a2800000,
2378  0x00000001a4000000, 0x00000001a6800000,
2379  0x00000001a8000000, 0x00000001aa800000,
2380  0x00000001ac000000, 0x00000001ae800000,
2381  0x00000001f0000000, 0x00000001f2800000,
2382  0x00000001f4000000, 0x00000001f6800000,
2383  0x00000001f8000000, 0x00000001fa800000,
2384  0x00000001fc000000, 0x00000001fe800000,
2385  0x0000000200000000, 0x0000000202800000,
2386  0x0000000204000000, 0x0000000206800000,
2387  0x0000000208000000, 0x000000020a800000,
2388  0x000000020c000000, 0x000000020e800000,
2389  0x0000000250000000, 0x0000000252800000,
2390  0x0000000254000000, 0x0000000256800000,
2391  0x0000000258000000, 0x000000025a800000,
2392  0x000000025c000000, 0x000000025e800000,
2393  0x00000002a0000000, 0x00000002a2800000,
2394  0x00000002a4000000, 0x00000002a6800000,
2395  0x00000002a8000000, 0x00000002aa800000,
2396  0x00000002ac000000, 0x00000002ae800000,
2397  0x00000002f0000000, 0x00000002f2800000,
2398  0x00000002f4000000, 0x00000002f6800000,
2399  0x00000002f8000000, 0x00000002fa800000,
2400  0x00000002fc000000, 0x00000002fe800000,
2401  0x0000000300000000, 0x0000000302800000,
2402  0x0000000304000000, 0x0000000306800000,
2403  0x0000000308000000, 0x000000030a800000,
2404  0x000000030c000000, 0x000000030e800000,
2405  0x0000000350000000, 0x0000000352800000,
2406  0x0000000354000000, 0x0000000356800000,
2407  0x0000000358000000, 0x000000035a800000,
2408  0x000000035c000000, 0x000000035e800000,
2409  0x00000003a0000000, 0x00000003a2800000,
2410  0x00000003a4000000, 0x00000003a6800000,
2411  0x00000003a8000000, 0x00000003aa800000,
2412  0x00000003ac000000, 0x00000003ae800000,
2413  0x00000003f0000000, 0x00000003f2800000,
2414  0x00000003f4000000, 0x00000003f6800000,
2415  0x00000003f8000000, 0x00000003fa800000,
2416  0x00000003fc000000, 0x00000003fe800000,
2417  0x0000001400000000, 0x0000001402800000,
2418  0x0000001404000000, 0x0000001406800000,
2419  0x0000001408000000, 0x000000140a800000,
2420  0x000000140c000000, 0x000000140e800000,
2421  0x0000001450000000, 0x0000001452800000,
2422  0x0000001454000000, 0x0000001456800000,
2423  0x0000001458000000, 0x000000145a800000,
2424  0x000000145c000000, 0x000000145e800000,
2425  0x00000014a0000000, 0x00000014a2800000,
2426  0x00000014a4000000, 0x00000014a6800000,
2427  0x00000014a8000000, 0x00000014aa800000,
2428  0x00000014ac000000, 0x00000014ae800000,
2429  0x00000014f0000000, 0x00000014f2800000,
2430  0x00000014f4000000, 0x00000014f6800000,
2431  0x00000014f8000000, 0x00000014fa800000,
2432  0x00000014fc000000, 0x00000014fe800000,
2433  0x0000001500000000, 0x0000001502800000,
2434  0x0000001504000000, 0x0000001506800000,
2435  0x0000001508000000, 0x000000150a800000,
2436  0x000000150c000000, 0x000000150e800000,
2437  0x0000001550000000, 0x0000001552800000,
2438  0x0000001554000000, 0x0000001556800000,
2439  0x0000001558000000, 0x000000155a800000,
2440  0x000000155c000000, 0x000000155e800000,
2441  0x00000015a0000000, 0x00000015a2800000,
2442  0x00000015a4000000, 0x00000015a6800000,
2443  0x00000015a8000000, 0x00000015aa800000,
2444  0x00000015ac000000, 0x00000015ae800000,
2445  0x00000015f0000000, 0x00000015f2800000,
2446  0x00000015f4000000, 0x00000015f6800000,
2447  0x00000015f8000000, 0x00000015fa800000,
2448  0x00000015fc000000, 0x00000015fe800000,
2449  0x0000001600000000, 0x0000001602800000,
2450  0x0000001604000000, 0x0000001606800000,
2451  0x0000001608000000, 0x000000160a800000,
2452  0x000000160c000000, 0x000000160e800000,
2453  0x0000001650000000, 0x0000001652800000,
2454  0x0000001654000000, 0x0000001656800000,
2455  0x0000001658000000, 0x000000165a800000,
2456  0x000000165c000000, 0x000000165e800000,
2457  0x00000016a0000000, 0x00000016a2800000,
2458  0x00000016a4000000, 0x00000016a6800000,
2459  0x00000016a8000000, 0x00000016aa800000,
2460  0x00000016ac000000, 0x00000016ae800000,
2461  0x00000016f0000000, 0x00000016f2800000,
2462  0x00000016f4000000, 0x00000016f6800000,
2463  0x00000016f8000000, 0x00000016fa800000,
2464  0x00000016fc000000, 0x00000016fe800000,
2465  0x0000001700000000, 0x0000001702800000,
2466  0x0000001704000000, 0x0000001706800000,
2467  0x0000001708000000, 0x000000170a800000,
2468  0x000000170c000000, 0x000000170e800000,
2469  0x0000001750000000, 0x0000001752800000,
2470  0x0000001754000000, 0x0000001756800000,
2471  0x0000001758000000, 0x000000175a800000,
2472  0x000000175c000000, 0x000000175e800000,
2473  0x00000017a0000000, 0x00000017a2800000,
2474  0x00000017a4000000, 0x00000017a6800000,
2475  0x00000017a8000000, 0x00000017aa800000,
2476  0x00000017ac000000, 0x00000017ae800000,
2477  0x00000017f0000000, 0x00000017f2800000,
2478  0x00000017f4000000, 0x00000017f6800000,
2479  0x00000017f8000000, 0x00000017fa800000,
2480  0x00000017fc000000, 0x00000017fe800000,
2481  0x0000000000000000, 0x0000002800000000,
2482  0x0000004000000000, 0x0000006800000000,
2483  0x0000008000000000, 0x000000a800000000,
2484  0x000000c000000000, 0x000000e800000000,
2485  0x0000050000000000, 0x0000052800000000,
2486  0x0000054000000000, 0x0000056800000000,
2487  0x0000058000000000, 0x000005a800000000,
2488  0x000005c000000000, 0x000005e800000000,
2489  0x00000a0000000000, 0x00000a2800000000,
2490  0x00000a4000000000, 0x00000a6800000000,
2491  0x00000a8000000000, 0x00000aa800000000,
2492  0x00000ac000000000, 0x00000ae800000000,
2493  0x00000f0000000000, 0x00000f2800000000,
2494  0x00000f4000000000, 0x00000f6800000000,
2495  0x00000f8000000000, 0x00000fa800000000,
2496  0x00000fc000000000, 0x00000fe800000000,
2497  0x0000100000000000, 0x0000102800000000,
2498  0x0000104000000000, 0x0000106800000000,
2499  0x0000108000000000, 0x000010a800000000,
2500  0x000010c000000000, 0x000010e800000000,
2501  0x0000150000000000, 0x0000152800000000,
2502  0x0000154000000000, 0x0000156800000000,
2503  0x0000158000000000, 0x000015a800000000,
2504  0x000015c000000000, 0x000015e800000000,
2505  0x00001a0000000000, 0x00001a2800000000,
2506  0x00001a4000000000, 0x00001a6800000000,
2507  0x00001a8000000000, 0x00001aa800000000,
2508  0x00001ac000000000, 0x00001ae800000000,
2509  0x00001f0000000000, 0x00001f2800000000,
2510  0x00001f4000000000, 0x00001f6800000000,
2511  0x00001f8000000000, 0x00001fa800000000,
2512  0x00001fc000000000, 0x00001fe800000000,
2513  0x0000200000000000, 0x0000202800000000,
2514  0x0000204000000000, 0x0000206800000000,
2515  0x0000208000000000, 0x000020a800000000,
2516  0x000020c000000000, 0x000020e800000000,
2517  0x0000250000000000, 0x0000252800000000,
2518  0x0000254000000000, 0x0000256800000000,
2519  0x0000258000000000, 0x000025a800000000,
2520  0x000025c000000000, 0x000025e800000000,
2521  0x00002a0000000000, 0x00002a2800000000,
2522  0x00002a4000000000, 0x00002a6800000000,
2523  0x00002a8000000000, 0x00002aa800000000,
2524  0x00002ac000000000, 0x00002ae800000000,
2525  0x00002f0000000000, 0x00002f2800000000,
2526  0x00002f4000000000, 0x00002f6800000000,
2527  0x00002f8000000000, 0x00002fa800000000,
2528  0x00002fc000000000, 0x00002fe800000000,
2529  0x0000300000000000, 0x0000302800000000,
2530  0x0000304000000000, 0x0000306800000000,
2531  0x0000308000000000, 0x000030a800000000,
2532  0x000030c000000000, 0x000030e800000000,
2533  0x0000350000000000, 0x0000352800000000,
2534  0x0000354000000000, 0x0000356800000000,
2535  0x0000358000000000, 0x000035a800000000,
2536  0x000035c000000000, 0x000035e800000000,
2537  0x00003a0000000000, 0x00003a2800000000,
2538  0x00003a4000000000, 0x00003a6800000000,
2539  0x00003a8000000000, 0x00003aa800000000,
2540  0x00003ac000000000, 0x00003ae800000000,
2541  0x00003f0000000000, 0x00003f2800000000,
2542  0x00003f4000000000, 0x00003f6800000000,
2543  0x00003f8000000000, 0x00003fa800000000,
2544  0x00003fc000000000, 0x00003fe800000000,
2545  0x0000400000000001, 0x0000402800000001,
2546  0x0000404000000001, 0x0000406800000001,
2547  0x0000408000000001, 0x000040a800000001,
2548  0x000040c000000001, 0x000040e800000001,
2549  0x0000450000000001, 0x0000452800000001,
2550  0x0000454000000001, 0x0000456800000001,
2551  0x0000458000000001, 0x000045a800000001,
2552  0x000045c000000001, 0x000045e800000001,
2553  0x00004a0000000001, 0x00004a2800000001,
2554  0x00004a4000000001, 0x00004a6800000001,
2555  0x00004a8000000001, 0x00004aa800000001,
2556  0x00004ac000000001, 0x00004ae800000001,
2557  0x00004f0000000001, 0x00004f2800000001,
2558  0x00004f4000000001, 0x00004f6800000001,
2559  0x00004f8000000001, 0x00004fa800000001,
2560  0x00004fc000000001, 0x00004fe800000001,
2561  0x0000500000000001, 0x0000502800000001,
2562  0x0000504000000001, 0x0000506800000001,
2563  0x0000508000000001, 0x000050a800000001,
2564  0x000050c000000001, 0x000050e800000001,
2565  0x0000550000000001, 0x0000552800000001,
2566  0x0000554000000001, 0x0000556800000001,
2567  0x0000558000000001, 0x000055a800000001,
2568  0x000055c000000001, 0x000055e800000001,
2569  0x00005a0000000001, 0x00005a2800000001,
2570  0x00005a4000000001, 0x00005a6800000001,
2571  0x00005a8000000001, 0x00005aa800000001,
2572  0x00005ac000000001, 0x00005ae800000001,
2573  0x00005f0000000001, 0x00005f2800000001,
2574  0x00005f4000000001, 0x00005f6800000001,
2575  0x00005f8000000001, 0x00005fa800000001,
2576  0x00005fc000000001, 0x00005fe800000001,
2577  0x0000600000000001, 0x0000602800000001,
2578  0x0000604000000001, 0x0000606800000001,
2579  0x0000608000000001, 0x000060a800000001,
2580  0x000060c000000001, 0x000060e800000001,
2581  0x0000650000000001, 0x0000652800000001,
2582  0x0000654000000001, 0x0000656800000001,
2583  0x0000658000000001, 0x000065a800000001,
2584  0x000065c000000001, 0x000065e800000001,
2585  0x00006a0000000001, 0x00006a2800000001,
2586  0x00006a4000000001, 0x00006a6800000001,
2587  0x00006a8000000001, 0x00006aa800000001,
2588  0x00006ac000000001, 0x00006ae800000001,
2589  0x00006f0000000001, 0x00006f2800000001,
2590  0x00006f4000000001, 0x00006f6800000001,
2591  0x00006f8000000001, 0x00006fa800000001,
2592  0x00006fc000000001, 0x00006fe800000001,
2593  0x0000700000000001, 0x0000702800000001,
2594  0x0000704000000001, 0x0000706800000001,
2595  0x0000708000000001, 0x000070a800000001,
2596  0x000070c000000001, 0x000070e800000001,
2597  0x0000750000000001, 0x0000752800000001,
2598  0x0000754000000001, 0x0000756800000001,
2599  0x0000758000000001, 0x000075a800000001,
2600  0x000075c000000001, 0x000075e800000001,
2601  0x00007a0000000001, 0x00007a2800000001,
2602  0x00007a4000000001, 0x00007a6800000001,
2603  0x00007a8000000001, 0x00007aa800000001,
2604  0x00007ac000000001, 0x00007ae800000001,
2605  0x00007f0000000001, 0x00007f2800000001,
2606  0x00007f4000000001, 0x00007f6800000001,
2607  0x00007f8000000001, 0x00007fa800000001,
2608  0x00007fc000000001, 0x00007fe800000001
2609)
2610
2611# Inverse E permutation table
2612N_E_K = (
2613  0x0000000000000000, 0x0000000080000000,
2614  0x0000000000000001, 0x0000000080000001,
2615  0x0000000000000002, 0x0000000080000002,
2616  0x0000000000000003, 0x0000000080000003,
2617  0x0000000000000004, 0x0000000080000004,
2618  0x0000000000000005, 0x0000000080000005,
2619  0x0000000000000006, 0x0000000080000006,
2620  0x0000000000000007, 0x0000000080000007,
2621  0x0000000000000008, 0x0000000080000008,
2622  0x0000000000000009, 0x0000000080000009,
2623  0x000000000000000a, 0x000000008000000a,
2624  0x000000000000000b, 0x000000008000000b,
2625  0x000000000000000c, 0x000000008000000c,
2626  0x000000000000000d, 0x000000008000000d,
2627  0x000000000000000e, 0x000000008000000e,
2628  0x000000000000000f, 0x000000008000000f,
2629  0x0000000000000010, 0x0000000080000010,
2630  0x0000000000000011, 0x0000000080000011,
2631  0x0000000000000012, 0x0000000080000012,
2632  0x0000000000000013, 0x0000000080000013,
2633  0x0000000000000014, 0x0000000080000014,
2634  0x0000000000000015, 0x0000000080000015,
2635  0x0000000000000016, 0x0000000080000016,
2636  0x0000000000000017, 0x0000000080000017,
2637  0x0000000000000018, 0x0000000080000018,
2638  0x0000000000000019, 0x0000000080000019,
2639  0x000000000000001a, 0x000000008000001a,
2640  0x000000000000001b, 0x000000008000001b,
2641  0x000000000000001c, 0x000000008000001c,
2642  0x000000000000001d, 0x000000008000001d,
2643  0x000000000000001e, 0x000000008000001e,
2644  0x000000000000001f, 0x000000008000001f,
2645  0x0000000000000008, 0x0000000080000008,
2646  0x0000000000000009, 0x0000000080000009,
2647  0x000000000000000a, 0x000000008000000a,
2648  0x000000000000000b, 0x000000008000000b,
2649  0x000000000000000c, 0x000000008000000c,
2650  0x000000000000000d, 0x000000008000000d,
2651  0x000000000000000e, 0x000000008000000e,
2652  0x000000000000000f, 0x000000008000000f,
2653  0x0000000000000008, 0x0000000080000008,
2654  0x0000000000000009, 0x0000000080000009,
2655  0x000000000000000a, 0x000000008000000a,
2656  0x000000000000000b, 0x000000008000000b,
2657  0x000000000000000c, 0x000000008000000c,
2658  0x000000000000000d, 0x000000008000000d,
2659  0x000000000000000e, 0x000000008000000e,
2660  0x000000000000000f, 0x000000008000000f,
2661  0x0000000000000018, 0x0000000080000018,
2662  0x0000000000000019, 0x0000000080000019,
2663  0x000000000000001a, 0x000000008000001a,
2664  0x000000000000001b, 0x000000008000001b,
2665  0x000000000000001c, 0x000000008000001c,
2666  0x000000000000001d, 0x000000008000001d,
2667  0x000000000000001e, 0x000000008000001e,
2668  0x000000000000001f, 0x000000008000001f,
2669  0x0000000000000018, 0x0000000080000018,
2670  0x0000000000000019, 0x0000000080000019,
2671  0x000000000000001a, 0x000000008000001a,
2672  0x000000000000001b, 0x000000008000001b,
2673  0x000000000000001c, 0x000000008000001c,
2674  0x000000000000001d, 0x000000008000001d,
2675  0x000000000000001e, 0x000000008000001e,
2676  0x000000000000001f, 0x000000008000001f,
2677  0x0000000000000010, 0x0000000080000010,
2678  0x0000000000000011, 0x0000000080000011,
2679  0x0000000000000012, 0x0000000080000012,
2680  0x0000000000000013, 0x0000000080000013,
2681  0x0000000000000014, 0x0000000080000014,
2682  0x0000000000000015, 0x0000000080000015,
2683  0x0000000000000016, 0x0000000080000016,
2684  0x0000000000000017, 0x0000000080000017,
2685  0x0000000000000018, 0x0000000080000018,
2686  0x0000000000000019, 0x0000000080000019,
2687  0x000000000000001a, 0x000000008000001a,
2688  0x000000000000001b, 0x000000008000001b,
2689  0x000000000000001c, 0x000000008000001c,
2690  0x000000000000001d, 0x000000008000001d,
2691  0x000000000000001e, 0x000000008000001e,
2692  0x000000000000001f, 0x000000008000001f,
2693  0x0000000000000010, 0x0000000080000010,
2694  0x0000000000000011, 0x0000000080000011,
2695  0x0000000000000012, 0x0000000080000012,
2696  0x0000000000000013, 0x0000000080000013,
2697  0x0000000000000014, 0x0000000080000014,
2698  0x0000000000000015, 0x0000000080000015,
2699  0x0000000000000016, 0x0000000080000016,
2700  0x0000000000000017, 0x0000000080000017,
2701  0x0000000000000018, 0x0000000080000018,
2702  0x0000000000000019, 0x0000000080000019,
2703  0x000000000000001a, 0x000000008000001a,
2704  0x000000000000001b, 0x000000008000001b,
2705  0x000000000000001c, 0x000000008000001c,
2706  0x000000000000001d, 0x000000008000001d,
2707  0x000000000000001e, 0x000000008000001e,
2708  0x000000000000001f, 0x000000008000001f,
2709  0x0000000000000018, 0x0000000080000018,
2710  0x0000000000000019, 0x0000000080000019,
2711  0x000000000000001a, 0x000000008000001a,
2712  0x000000000000001b, 0x000000008000001b,
2713  0x000000000000001c, 0x000000008000001c,
2714  0x000000000000001d, 0x000000008000001d,
2715  0x000000000000001e, 0x000000008000001e,
2716  0x000000000000001f, 0x000000008000001f,
2717  0x0000000000000018, 0x0000000080000018,
2718  0x0000000000000019, 0x0000000080000019,
2719  0x000000000000001a, 0x000000008000001a,
2720  0x000000000000001b, 0x000000008000001b,
2721  0x000000000000001c, 0x000000008000001c,
2722  0x000000000000001d, 0x000000008000001d,
2723  0x000000000000001e, 0x000000008000001e,
2724  0x000000000000001f, 0x000000008000001f,
2725  0x0000000000000018, 0x0000000080000018,
2726  0x0000000000000019, 0x0000000080000019,
2727  0x000000000000001a, 0x000000008000001a,
2728  0x000000000000001b, 0x000000008000001b,
2729  0x000000000000001c, 0x000000008000001c,
2730  0x000000000000001d, 0x000000008000001d,
2731  0x000000000000001e, 0x000000008000001e,
2732  0x000000000000001f, 0x000000008000001f,
2733  0x0000000000000018, 0x0000000080000018,
2734  0x0000000000000019, 0x0000000080000019,
2735  0x000000000000001a, 0x000000008000001a,
2736  0x000000000000001b, 0x000000008000001b,
2737  0x000000000000001c, 0x000000008000001c,
2738  0x000000000000001d, 0x000000008000001d,
2739  0x000000000000001e, 0x000000008000001e,
2740  0x000000000000001f, 0x000000008000001f,
2741  0x0000000000000000, 0x0000000000000020,
2742  0x0000000000000040, 0x0000000000000060,
2743  0x0000000000000080, 0x00000000000000a0,
2744  0x00000000000000c0, 0x00000000000000e0,
2745  0x0000000000000100, 0x0000000000000120,
2746  0x0000000000000140, 0x0000000000000160,
2747  0x0000000000000180, 0x00000000000001a0,
2748  0x00000000000001c0, 0x00000000000001e0,
2749  0x0000000000000080, 0x00000000000000a0,
2750  0x00000000000000c0, 0x00000000000000e0,
2751  0x0000000000000080, 0x00000000000000a0,
2752  0x00000000000000c0, 0x00000000000000e0,
2753  0x0000000000000180, 0x00000000000001a0,
2754  0x00000000000001c0, 0x00000000000001e0,
2755  0x0000000000000180, 0x00000000000001a0,
2756  0x00000000000001c0, 0x00000000000001e0,
2757  0x0000000000000100, 0x0000000000000120,
2758  0x0000000000000140, 0x0000000000000160,
2759  0x0000000000000180, 0x00000000000001a0,
2760  0x00000000000001c0, 0x00000000000001e0,
2761  0x0000000000000100, 0x0000000000000120,
2762  0x0000000000000140, 0x0000000000000160,
2763  0x0000000000000180, 0x00000000000001a0,
2764  0x00000000000001c0, 0x00000000000001e0,
2765  0x0000000000000180, 0x00000000000001a0,
2766  0x00000000000001c0, 0x00000000000001e0,
2767  0x0000000000000180, 0x00000000000001a0,
2768  0x00000000000001c0, 0x00000000000001e0,
2769  0x0000000000000180, 0x00000000000001a0,
2770  0x00000000000001c0, 0x00000000000001e0,
2771  0x0000000000000180, 0x00000000000001a0,
2772  0x00000000000001c0, 0x00000000000001e0,
2773  0x0000000000000200, 0x0000000000000220,
2774  0x0000000000000240, 0x0000000000000260,
2775  0x0000000000000280, 0x00000000000002a0,
2776  0x00000000000002c0, 0x00000000000002e0,
2777  0x0000000000000300, 0x0000000000000320,
2778  0x0000000000000340, 0x0000000000000360,
2779  0x0000000000000380, 0x00000000000003a0,
2780  0x00000000000003c0, 0x00000000000003e0,
2781  0x0000000000000280, 0x00000000000002a0,
2782  0x00000000000002c0, 0x00000000000002e0,
2783  0x0000000000000280, 0x00000000000002a0,
2784  0x00000000000002c0, 0x00000000000002e0,
2785  0x0000000000000380, 0x00000000000003a0,
2786  0x00000000000003c0, 0x00000000000003e0,
2787  0x0000000000000380, 0x00000000000003a0,
2788  0x00000000000003c0, 0x00000000000003e0,
2789  0x0000000000000300, 0x0000000000000320,
2790  0x0000000000000340, 0x0000000000000360,
2791  0x0000000000000380, 0x00000000000003a0,
2792  0x00000000000003c0, 0x00000000000003e0,
2793  0x0000000000000300, 0x0000000000000320,
2794  0x0000000000000340, 0x0000000000000360,
2795  0x0000000000000380, 0x00000000000003a0,
2796  0x00000000000003c0, 0x00000000000003e0,
2797  0x0000000000000380, 0x00000000000003a0,
2798  0x00000000000003c0, 0x00000000000003e0,
2799  0x0000000000000380, 0x00000000000003a0,
2800  0x00000000000003c0, 0x00000000000003e0,
2801  0x0000000000000380, 0x00000000000003a0,
2802  0x00000000000003c0, 0x00000000000003e0,
2803  0x0000000000000380, 0x00000000000003a0,
2804  0x00000000000003c0, 0x00000000000003e0,
2805  0x0000000000000400, 0x0000000000000420,
2806  0x0000000000000440, 0x0000000000000460,
2807  0x0000000000000480, 0x00000000000004a0,
2808  0x00000000000004c0, 0x00000000000004e0,
2809  0x0000000000000500, 0x0000000000000520,
2810  0x0000000000000540, 0x0000000000000560,
2811  0x0000000000000580, 0x00000000000005a0,
2812  0x00000000000005c0, 0x00000000000005e0,
2813  0x0000000000000480, 0x00000000000004a0,
2814  0x00000000000004c0, 0x00000000000004e0,
2815  0x0000000000000480, 0x00000000000004a0,
2816  0x00000000000004c0, 0x00000000000004e0,
2817  0x0000000000000580, 0x00000000000005a0,
2818  0x00000000000005c0, 0x00000000000005e0,
2819  0x0000000000000580, 0x00000000000005a0,
2820  0x00000000000005c0, 0x00000000000005e0,
2821  0x0000000000000500, 0x0000000000000520,
2822  0x0000000000000540, 0x0000000000000560,
2823  0x0000000000000580, 0x00000000000005a0,
2824  0x00000000000005c0, 0x00000000000005e0,
2825  0x0000000000000500, 0x0000000000000520,
2826  0x0000000000000540, 0x0000000000000560,
2827  0x0000000000000580, 0x00000000000005a0,
2828  0x00000000000005c0, 0x00000000000005e0,
2829  0x0000000000000580, 0x00000000000005a0,
2830  0x00000000000005c0, 0x00000000000005e0,
2831  0x0000000000000580, 0x00000000000005a0,
2832  0x00000000000005c0, 0x00000000000005e0,
2833  0x0000000000000580, 0x00000000000005a0,
2834  0x00000000000005c0, 0x00000000000005e0,
2835  0x0000000000000580, 0x00000000000005a0,
2836  0x00000000000005c0, 0x00000000000005e0,
2837  0x0000000000000600, 0x0000000000000620,
2838  0x0000000000000640, 0x0000000000000660,
2839  0x0000000000000680, 0x00000000000006a0,
2840  0x00000000000006c0, 0x00000000000006e0,
2841  0x0000000000000700, 0x0000000000000720,
2842  0x0000000000000740, 0x0000000000000760,
2843  0x0000000000000780, 0x00000000000007a0,
2844  0x00000000000007c0, 0x00000000000007e0,
2845  0x0000000000000680, 0x00000000000006a0,
2846  0x00000000000006c0, 0x00000000000006e0,
2847  0x0000000000000680, 0x00000000000006a0,
2848  0x00000000000006c0, 0x00000000000006e0,
2849  0x0000000000000780, 0x00000000000007a0,
2850  0x00000000000007c0, 0x00000000000007e0,
2851  0x0000000000000780, 0x00000000000007a0,
2852  0x00000000000007c0, 0x00000000000007e0,
2853  0x0000000000000700, 0x0000000000000720,
2854  0x0000000000000740, 0x0000000000000760,
2855  0x0000000000000780, 0x00000000000007a0,
2856  0x00000000000007c0, 0x00000000000007e0,
2857  0x0000000000000700, 0x0000000000000720,
2858  0x0000000000000740, 0x0000000000000760,
2859  0x0000000000000780, 0x00000000000007a0,
2860  0x00000000000007c0, 0x00000000000007e0,
2861  0x0000000000000780, 0x00000000000007a0,
2862  0x00000000000007c0, 0x00000000000007e0,
2863  0x0000000000000780, 0x00000000000007a0,
2864  0x00000000000007c0, 0x00000000000007e0,
2865  0x0000000000000780, 0x00000000000007a0,
2866  0x00000000000007c0, 0x00000000000007e0,
2867  0x0000000000000780, 0x00000000000007a0,
2868  0x00000000000007c0, 0x00000000000007e0,
2869  0x0000000000000000, 0x0000000000000800,
2870  0x0000000000001000, 0x0000000000001800,
2871  0x0000000000000800, 0x0000000000000800,
2872  0x0000000000001800, 0x0000000000001800,
2873  0x0000000000001000, 0x0000000000001800,
2874  0x0000000000001000, 0x0000000000001800,
2875  0x0000000000001800, 0x0000000000001800,
2876  0x0000000000001800, 0x0000000000001800,
2877  0x0000000000002000, 0x0000000000002800,
2878  0x0000000000003000, 0x0000000000003800,
2879  0x0000000000002800, 0x0000000000002800,
2880  0x0000000000003800, 0x0000000000003800,
2881  0x0000000000003000, 0x0000000000003800,
2882  0x0000000000003000, 0x0000000000003800,
2883  0x0000000000003800, 0x0000000000003800,
2884  0x0000000000003800, 0x0000000000003800,
2885  0x0000000000004000, 0x0000000000004800,
2886  0x0000000000005000, 0x0000000000005800,
2887  0x0000000000004800, 0x0000000000004800,
2888  0x0000000000005800, 0x0000000000005800,
2889  0x0000000000005000, 0x0000000000005800,
2890  0x0000000000005000, 0x0000000000005800,
2891  0x0000000000005800, 0x0000000000005800,
2892  0x0000000000005800, 0x0000000000005800,
2893  0x0000000000006000, 0x0000000000006800,
2894  0x0000000000007000, 0x0000000000007800,
2895  0x0000000000006800, 0x0000000000006800,
2896  0x0000000000007800, 0x0000000000007800,
2897  0x0000000000007000, 0x0000000000007800,
2898  0x0000000000007000, 0x0000000000007800,
2899  0x0000000000007800, 0x0000000000007800,
2900  0x0000000000007800, 0x0000000000007800,
2901  0x0000000000008000, 0x0000000000008800,
2902  0x0000000000009000, 0x0000000000009800,
2903  0x0000000000008800, 0x0000000000008800,
2904  0x0000000000009800, 0x0000000000009800,
2905  0x0000000000009000, 0x0000000000009800,
2906  0x0000000000009000, 0x0000000000009800,
2907  0x0000000000009800, 0x0000000000009800,
2908  0x0000000000009800, 0x0000000000009800,
2909  0x000000000000a000, 0x000000000000a800,
2910  0x000000000000b000, 0x000000000000b800,
2911  0x000000000000a800, 0x000000000000a800,
2912  0x000000000000b800, 0x000000000000b800,
2913  0x000000000000b000, 0x000000000000b800,
2914  0x000000000000b000, 0x000000000000b800,
2915  0x000000000000b800, 0x000000000000b800,
2916  0x000000000000b800, 0x000000000000b800,
2917  0x000000000000c000, 0x000000000000c800,
2918  0x000000000000d000, 0x000000000000d800,
2919  0x000000000000c800, 0x000000000000c800,
2920  0x000000000000d800, 0x000000000000d800,
2921  0x000000000000d000, 0x000000000000d800,
2922  0x000000000000d000, 0x000000000000d800,
2923  0x000000000000d800, 0x000000000000d800,
2924  0x000000000000d800, 0x000000000000d800,
2925  0x000000000000e000, 0x000000000000e800,
2926  0x000000000000f000, 0x000000000000f800,
2927  0x000000000000e800, 0x000000000000e800,
2928  0x000000000000f800, 0x000000000000f800,
2929  0x000000000000f000, 0x000000000000f800,
2930  0x000000000000f000, 0x000000000000f800,
2931  0x000000000000f800, 0x000000000000f800,
2932  0x000000000000f800, 0x000000000000f800,
2933  0x0000000000010000, 0x0000000000010800,
2934  0x0000000000011000, 0x0000000000011800,
2935  0x0000000000010800, 0x0000000000010800,
2936  0x0000000000011800, 0x0000000000011800,
2937  0x0000000000011000, 0x0000000000011800,
2938  0x0000000000011000, 0x0000000000011800,
2939  0x0000000000011800, 0x0000000000011800,
2940  0x0000000000011800, 0x0000000000011800,
2941  0x0000000000012000, 0x0000000000012800,
2942  0x0000000000013000, 0x0000000000013800,
2943  0x0000000000012800, 0x0000000000012800,
2944  0x0000000000013800, 0x0000000000013800,
2945  0x0000000000013000, 0x0000000000013800,
2946  0x0000000000013000, 0x0000000000013800,
2947  0x0000000000013800, 0x0000000000013800,
2948  0x0000000000013800, 0x0000000000013800,
2949  0x0000000000014000, 0x0000000000014800,
2950  0x0000000000015000, 0x0000000000015800,
2951  0x0000000000014800, 0x0000000000014800,
2952  0x0000000000015800, 0x0000000000015800,
2953  0x0000000000015000, 0x0000000000015800,
2954  0x0000000000015000, 0x0000000000015800,
2955  0x0000000000015800, 0x0000000000015800,
2956  0x0000000000015800, 0x0000000000015800,
2957  0x0000000000016000, 0x0000000000016800,
2958  0x0000000000017000, 0x0000000000017800,
2959  0x0000000000016800, 0x0000000000016800,
2960  0x0000000000017800, 0x0000000000017800,
2961  0x0000000000017000, 0x0000000000017800,
2962  0x0000000000017000, 0x0000000000017800,
2963  0x0000000000017800, 0x0000000000017800,
2964  0x0000000000017800, 0x0000000000017800,
2965  0x0000000000018000, 0x0000000000018800,
2966  0x0000000000019000, 0x0000000000019800,
2967  0x0000000000018800, 0x0000000000018800,
2968  0x0000000000019800, 0x0000000000019800,
2969  0x0000000000019000, 0x0000000000019800,
2970  0x0000000000019000, 0x0000000000019800,
2971  0x0000000000019800, 0x0000000000019800,
2972  0x0000000000019800, 0x0000000000019800,
2973  0x000000000001a000, 0x000000000001a800,
2974  0x000000000001b000, 0x000000000001b800,
2975  0x000000000001a800, 0x000000000001a800,
2976  0x000000000001b800, 0x000000000001b800,
2977  0x000000000001b000, 0x000000000001b800,
2978  0x000000000001b000, 0x000000000001b800,
2979  0x000000000001b800, 0x000000000001b800,
2980  0x000000000001b800, 0x000000000001b800,
2981  0x000000000001c000, 0x000000000001c800,
2982  0x000000000001d000, 0x000000000001d800,
2983  0x000000000001c800, 0x000000000001c800,
2984  0x000000000001d800, 0x000000000001d800,
2985  0x000000000001d000, 0x000000000001d800,
2986  0x000000000001d000, 0x000000000001d800,
2987  0x000000000001d800, 0x000000000001d800,
2988  0x000000000001d800, 0x000000000001d800,
2989  0x000000000001e000, 0x000000000001e800,
2990  0x000000000001f000, 0x000000000001f800,
2991  0x000000000001e800, 0x000000000001e800,
2992  0x000000000001f800, 0x000000000001f800,
2993  0x000000000001f000, 0x000000000001f800,
2994  0x000000000001f000, 0x000000000001f800,
2995  0x000000000001f800, 0x000000000001f800,
2996  0x000000000001f800, 0x000000000001f800,
2997  0x0000000000000000, 0x0000000000008000,
2998  0x0000000000010000, 0x0000000000018000,
2999  0x0000000000020000, 0x0000000000028000,
3000  0x0000000000030000, 0x0000000000038000,
3001  0x0000000000040000, 0x0000000000048000,
3002  0x0000000000050000, 0x0000000000058000,
3003  0x0000000000060000, 0x0000000000068000,
3004  0x0000000000070000, 0x0000000000078000,
3005  0x0000000000080000, 0x0000000000088000,
3006  0x0000000000090000, 0x0000000000098000,
3007  0x00000000000a0000, 0x00000000000a8000,
3008  0x00000000000b0000, 0x00000000000b8000,
3009  0x00000000000c0000, 0x00000000000c8000,
3010  0x00000000000d0000, 0x00000000000d8000,
3011  0x00000000000e0000, 0x00000000000e8000,
3012  0x00000000000f0000, 0x00000000000f8000,
3013  0x0000000000100000, 0x0000000000108000,
3014  0x0000000000110000, 0x0000000000118000,
3015  0x0000000000120000, 0x0000000000128000,
3016  0x0000000000130000, 0x0000000000138000,
3017  0x0000000000140000, 0x0000000000148000,
3018  0x0000000000150000, 0x0000000000158000,
3019  0x0000000000160000, 0x0000000000168000,
3020  0x0000000000170000, 0x0000000000178000,
3021  0x0000000000180000, 0x0000000000188000,
3022  0x0000000000190000, 0x0000000000198000,
3023  0x00000000001a0000, 0x00000000001a8000,
3024  0x00000000001b0000, 0x00000000001b8000,
3025  0x00000000001c0000, 0x00000000001c8000,
3026  0x00000000001d0000, 0x00000000001d8000,
3027  0x00000000001e0000, 0x00000000001e8000,
3028  0x00000000001f0000, 0x00000000001f8000,
3029  0x0000000000080000, 0x0000000000088000,
3030  0x0000000000090000, 0x0000000000098000,
3031  0x00000000000a0000, 0x00000000000a8000,
3032  0x00000000000b0000, 0x00000000000b8000,
3033  0x00000000000c0000, 0x00000000000c8000,
3034  0x00000000000d0000, 0x00000000000d8000,
3035  0x00000000000e0000, 0x00000000000e8000,
3036  0x00000000000f0000, 0x00000000000f8000,
3037  0x0000000000080000, 0x0000000000088000,
3038  0x0000000000090000, 0x0000000000098000,
3039  0x00000000000a0000, 0x00000000000a8000,
3040  0x00000000000b0000, 0x00000000000b8000,
3041  0x00000000000c0000, 0x00000000000c8000,
3042  0x00000000000d0000, 0x00000000000d8000,
3043  0x00000000000e0000, 0x00000000000e8000,
3044  0x00000000000f0000, 0x00000000000f8000,
3045  0x0000000000180000, 0x0000000000188000,
3046  0x0000000000190000, 0x0000000000198000,
3047  0x00000000001a0000, 0x00000000001a8000,
3048  0x00000000001b0000, 0x00000000001b8000,
3049  0x00000000001c0000, 0x00000000001c8000,
3050  0x00000000001d0000, 0x00000000001d8000,
3051  0x00000000001e0000, 0x00000000001e8000,
3052  0x00000000001f0000, 0x00000000001f8000,
3053  0x0000000000180000, 0x0000000000188000,
3054  0x0000000000190000, 0x0000000000198000,
3055  0x00000000001a0000, 0x00000000001a8000,
3056  0x00000000001b0000, 0x00000000001b8000,
3057  0x00000000001c0000, 0x00000000001c8000,
3058  0x00000000001d0000, 0x00000000001d8000,
3059  0x00000000001e0000, 0x00000000001e8000,
3060  0x00000000001f0000, 0x00000000001f8000,
3061  0x0000000000100000, 0x0000000000108000,
3062  0x0000000000110000, 0x0000000000118000,
3063  0x0000000000120000, 0x0000000000128000,
3064  0x0000000000130000, 0x0000000000138000,
3065  0x0000000000140000, 0x0000000000148000,
3066  0x0000000000150000, 0x0000000000158000,
3067  0x0000000000160000, 0x0000000000168000,
3068  0x0000000000170000, 0x0000000000178000,
3069  0x0000000000180000, 0x0000000000188000,
3070  0x0000000000190000, 0x0000000000198000,
3071  0x00000000001a0000, 0x00000000001a8000,
3072  0x00000000001b0000, 0x00000000001b8000,
3073  0x00000000001c0000, 0x00000000001c8000,
3074  0x00000000001d0000, 0x00000000001d8000,
3075  0x00000000001e0000, 0x00000000001e8000,
3076  0x00000000001f0000, 0x00000000001f8000,
3077  0x0000000000100000, 0x0000000000108000,
3078  0x0000000000110000, 0x0000000000118000,
3079  0x0000000000120000, 0x0000000000128000,
3080  0x0000000000130000, 0x0000000000138000,
3081  0x0000000000140000, 0x0000000000148000,
3082  0x0000000000150000, 0x0000000000158000,
3083  0x0000000000160000, 0x0000000000168000,
3084  0x0000000000170000, 0x0000000000178000,
3085  0x0000000000180000, 0x0000000000188000,
3086  0x0000000000190000, 0x0000000000198000,
3087  0x00000000001a0000, 0x00000000001a8000,
3088  0x00000000001b0000, 0x00000000001b8000,
3089  0x00000000001c0000, 0x00000000001c8000,
3090  0x00000000001d0000, 0x00000000001d8000,
3091  0x00000000001e0000, 0x00000000001e8000,
3092  0x00000000001f0000, 0x00000000001f8000,
3093  0x0000000000180000, 0x0000000000188000,
3094  0x0000000000190000, 0x0000000000198000,
3095  0x00000000001a0000, 0x00000000001a8000,
3096  0x00000000001b0000, 0x00000000001b8000,
3097  0x00000000001c0000, 0x00000000001c8000,
3098  0x00000000001d0000, 0x00000000001d8000,
3099  0x00000000001e0000, 0x00000000001e8000,
3100  0x00000000001f0000, 0x00000000001f8000,
3101  0x0000000000180000, 0x0000000000188000,
3102  0x0000000000190000, 0x0000000000198000,
3103  0x00000000001a0000, 0x00000000001a8000,
3104  0x00000000001b0000, 0x00000000001b8000,
3105  0x00000000001c0000, 0x00000000001c8000,
3106  0x00000000001d0000, 0x00000000001d8000,
3107  0x00000000001e0000, 0x00000000001e8000,
3108  0x00000000001f0000, 0x00000000001f8000,
3109  0x0000000000180000, 0x0000000000188000,
3110  0x0000000000190000, 0x0000000000198000,
3111  0x00000000001a0000, 0x00000000001a8000,
3112  0x00000000001b0000, 0x00000000001b8000,
3113  0x00000000001c0000, 0x00000000001c8000,
3114  0x00000000001d0000, 0x00000000001d8000,
3115  0x00000000001e0000, 0x00000000001e8000,
3116  0x00000000001f0000, 0x00000000001f8000,
3117  0x0000000000180000, 0x0000000000188000,
3118  0x0000000000190000, 0x0000000000198000,
3119  0x00000000001a0000, 0x00000000001a8000,
3120  0x00000000001b0000, 0x00000000001b8000,
3121  0x00000000001c0000, 0x00000000001c8000,
3122  0x00000000001d0000, 0x00000000001d8000,
3123  0x00000000001e0000, 0x00000000001e8000,
3124  0x00000000001f0000, 0x00000000001f8000,
3125  0x0000000000000000, 0x0000000000200000,
3126  0x0000000000400000, 0x0000000000600000,
3127  0x0000000000800000, 0x0000000000a00000,
3128  0x0000000000c00000, 0x0000000000e00000,
3129  0x0000000001000000, 0x0000000001200000,
3130  0x0000000001400000, 0x0000000001600000,
3131  0x0000000001800000, 0x0000000001a00000,
3132  0x0000000001c00000, 0x0000000001e00000,
3133  0x0000000000800000, 0x0000000000a00000,
3134  0x0000000000c00000, 0x0000000000e00000,
3135  0x0000000000800000, 0x0000000000a00000,
3136  0x0000000000c00000, 0x0000000000e00000,
3137  0x0000000001800000, 0x0000000001a00000,
3138  0x0000000001c00000, 0x0000000001e00000,
3139  0x0000000001800000, 0x0000000001a00000,
3140  0x0000000001c00000, 0x0000000001e00000,
3141  0x0000000001000000, 0x0000000001200000,
3142  0x0000000001400000, 0x0000000001600000,
3143  0x0000000001800000, 0x0000000001a00000,
3144  0x0000000001c00000, 0x0000000001e00000,
3145  0x0000000001000000, 0x0000000001200000,
3146  0x0000000001400000, 0x0000000001600000,
3147  0x0000000001800000, 0x0000000001a00000,
3148  0x0000000001c00000, 0x0000000001e00000,
3149  0x0000000001800000, 0x0000000001a00000,
3150  0x0000000001c00000, 0x0000000001e00000,
3151  0x0000000001800000, 0x0000000001a00000,
3152  0x0000000001c00000, 0x0000000001e00000,
3153  0x0000000001800000, 0x0000000001a00000,
3154  0x0000000001c00000, 0x0000000001e00000,
3155  0x0000000001800000, 0x0000000001a00000,
3156  0x0000000001c00000, 0x0000000001e00000,
3157  0x0000000002000000, 0x0000000002200000,
3158  0x0000000002400000, 0x0000000002600000,
3159  0x0000000002800000, 0x0000000002a00000,
3160  0x0000000002c00000, 0x0000000002e00000,
3161  0x0000000003000000, 0x0000000003200000,
3162  0x0000000003400000, 0x0000000003600000,
3163  0x0000000003800000, 0x0000000003a00000,
3164  0x0000000003c00000, 0x0000000003e00000,
3165  0x0000000002800000, 0x0000000002a00000,
3166  0x0000000002c00000, 0x0000000002e00000,
3167  0x0000000002800000, 0x0000000002a00000,
3168  0x0000000002c00000, 0x0000000002e00000,
3169  0x0000000003800000, 0x0000000003a00000,
3170  0x0000000003c00000, 0x0000000003e00000,
3171  0x0000000003800000, 0x0000000003a00000,
3172  0x0000000003c00000, 0x0000000003e00000,
3173  0x0000000003000000, 0x0000000003200000,
3174  0x0000000003400000, 0x0000000003600000,
3175  0x0000000003800000, 0x0000000003a00000,
3176  0x0000000003c00000, 0x0000000003e00000,
3177  0x0000000003000000, 0x0000000003200000,
3178  0x0000000003400000, 0x0000000003600000,
3179  0x0000000003800000, 0x0000000003a00000,
3180  0x0000000003c00000, 0x0000000003e00000,
3181  0x0000000003800000, 0x0000000003a00000,
3182  0x0000000003c00000, 0x0000000003e00000,
3183  0x0000000003800000, 0x0000000003a00000,
3184  0x0000000003c00000, 0x0000000003e00000,
3185  0x0000000003800000, 0x0000000003a00000,
3186  0x0000000003c00000, 0x0000000003e00000,
3187  0x0000000003800000, 0x0000000003a00000,
3188  0x0000000003c00000, 0x0000000003e00000,
3189  0x0000000004000000, 0x0000000004200000,
3190  0x0000000004400000, 0x0000000004600000,
3191  0x0000000004800000, 0x0000000004a00000,
3192  0x0000000004c00000, 0x0000000004e00000,
3193  0x0000000005000000, 0x0000000005200000,
3194  0x0000000005400000, 0x0000000005600000,
3195  0x0000000005800000, 0x0000000005a00000,
3196  0x0000000005c00000, 0x0000000005e00000,
3197  0x0000000004800000, 0x0000000004a00000,
3198  0x0000000004c00000, 0x0000000004e00000,
3199  0x0000000004800000, 0x0000000004a00000,
3200  0x0000000004c00000, 0x0000000004e00000,
3201  0x0000000005800000, 0x0000000005a00000,
3202  0x0000000005c00000, 0x0000000005e00000,
3203  0x0000000005800000, 0x0000000005a00000,
3204  0x0000000005c00000, 0x0000000005e00000,
3205  0x0000000005000000, 0x0000000005200000,
3206  0x0000000005400000, 0x0000000005600000,
3207  0x0000000005800000, 0x0000000005a00000,
3208  0x0000000005c00000, 0x0000000005e00000,
3209  0x0000000005000000, 0x0000000005200000,
3210  0x0000000005400000, 0x0000000005600000,
3211  0x0000000005800000, 0x0000000005a00000,
3212  0x0000000005c00000, 0x0000000005e00000,
3213  0x0000000005800000, 0x0000000005a00000,
3214  0x0000000005c00000, 0x0000000005e00000,
3215  0x0000000005800000, 0x0000000005a00000,
3216  0x0000000005c00000, 0x0000000005e00000,
3217  0x0000000005800000, 0x0000000005a00000,
3218  0x0000000005c00000, 0x0000000005e00000,
3219  0x0000000005800000, 0x0000000005a00000,
3220  0x0000000005c00000, 0x0000000005e00000,
3221  0x0000000006000000, 0x0000000006200000,
3222  0x0000000006400000, 0x0000000006600000,
3223  0x0000000006800000, 0x0000000006a00000,
3224  0x0000000006c00000, 0x0000000006e00000,
3225  0x0000000007000000, 0x0000000007200000,
3226  0x0000000007400000, 0x0000000007600000,
3227  0x0000000007800000, 0x0000000007a00000,
3228  0x0000000007c00000, 0x0000000007e00000,
3229  0x0000000006800000, 0x0000000006a00000,
3230  0x0000000006c00000, 0x0000000006e00000,
3231  0x0000000006800000, 0x0000000006a00000,
3232  0x0000000006c00000, 0x0000000006e00000,
3233  0x0000000007800000, 0x0000000007a00000,
3234  0x0000000007c00000, 0x0000000007e00000,
3235  0x0000000007800000, 0x0000000007a00000,
3236  0x0000000007c00000, 0x0000000007e00000,
3237  0x0000000007000000, 0x0000000007200000,
3238  0x0000000007400000, 0x0000000007600000,
3239  0x0000000007800000, 0x0000000007a00000,
3240  0x0000000007c00000, 0x0000000007e00000,
3241  0x0000000007000000, 0x0000000007200000,
3242  0x0000000007400000, 0x0000000007600000,
3243  0x0000000007800000, 0x0000000007a00000,
3244  0x0000000007c00000, 0x0000000007e00000,
3245  0x0000000007800000, 0x0000000007a00000,
3246  0x0000000007c00000, 0x0000000007e00000,
3247  0x0000000007800000, 0x0000000007a00000,
3248  0x0000000007c00000, 0x0000000007e00000,
3249  0x0000000007800000, 0x0000000007a00000,
3250  0x0000000007c00000, 0x0000000007e00000,
3251  0x0000000007800000, 0x0000000007a00000,
3252  0x0000000007c00000, 0x0000000007e00000,
3253  0x0000000000000000, 0x0000000008000000,
3254  0x0000000010000000, 0x0000000018000000,
3255  0x0000000008000000, 0x0000000008000000,
3256  0x0000000018000000, 0x0000000018000000,
3257  0x0000000010000000, 0x0000000018000000,
3258  0x0000000010000000, 0x0000000018000000,
3259  0x0000000018000000, 0x0000000018000000,
3260  0x0000000018000000, 0x0000000018000000,
3261  0x0000000020000000, 0x0000000028000000,
3262  0x0000000030000000, 0x0000000038000000,
3263  0x0000000028000000, 0x0000000028000000,
3264  0x0000000038000000, 0x0000000038000000,
3265  0x0000000030000000, 0x0000000038000000,
3266  0x0000000030000000, 0x0000000038000000,
3267  0x0000000038000000, 0x0000000038000000,
3268  0x0000000038000000, 0x0000000038000000,
3269  0x0000000040000000, 0x0000000048000000,
3270  0x0000000050000000, 0x0000000058000000,
3271  0x0000000048000000, 0x0000000048000000,
3272  0x0000000058000000, 0x0000000058000000,
3273  0x0000000050000000, 0x0000000058000000,
3274  0x0000000050000000, 0x0000000058000000,
3275  0x0000000058000000, 0x0000000058000000,
3276  0x0000000058000000, 0x0000000058000000,
3277  0x0000000060000000, 0x0000000068000000,
3278  0x0000000070000000, 0x0000000078000000,
3279  0x0000000068000000, 0x0000000068000000,
3280  0x0000000078000000, 0x0000000078000000,
3281  0x0000000070000000, 0x0000000078000000,
3282  0x0000000070000000, 0x0000000078000000,
3283  0x0000000078000000, 0x0000000078000000,
3284  0x0000000078000000, 0x0000000078000000,
3285  0x0000000080000000, 0x0000000088000000,
3286  0x0000000090000000, 0x0000000098000000,
3287  0x0000000088000000, 0x0000000088000000,
3288  0x0000000098000000, 0x0000000098000000,
3289  0x0000000090000000, 0x0000000098000000,
3290  0x0000000090000000, 0x0000000098000000,
3291  0x0000000098000000, 0x0000000098000000,
3292  0x0000000098000000, 0x0000000098000000,
3293  0x00000000a0000000, 0x00000000a8000000,
3294  0x00000000b0000000, 0x00000000b8000000,
3295  0x00000000a8000000, 0x00000000a8000000,
3296  0x00000000b8000000, 0x00000000b8000000,
3297  0x00000000b0000000, 0x00000000b8000000,
3298  0x00000000b0000000, 0x00000000b8000000,
3299  0x00000000b8000000, 0x00000000b8000000,
3300  0x00000000b8000000, 0x00000000b8000000,
3301  0x00000000c0000000, 0x00000000c8000000,
3302  0x00000000d0000000, 0x00000000d8000000,
3303  0x00000000c8000000, 0x00000000c8000000,
3304  0x00000000d8000000, 0x00000000d8000000,
3305  0x00000000d0000000, 0x00000000d8000000,
3306  0x00000000d0000000, 0x00000000d8000000,
3307  0x00000000d8000000, 0x00000000d8000000,
3308  0x00000000d8000000, 0x00000000d8000000,
3309  0x00000000e0000000, 0x00000000e8000000,
3310  0x00000000f0000000, 0x00000000f8000000,
3311  0x00000000e8000000, 0x00000000e8000000,
3312  0x00000000f8000000, 0x00000000f8000000,
3313  0x00000000f0000000, 0x00000000f8000000,
3314  0x00000000f0000000, 0x00000000f8000000,
3315  0x00000000f8000000, 0x00000000f8000000,
3316  0x00000000f8000000, 0x00000000f8000000,
3317  0x0000000000000001, 0x0000000008000001,
3318  0x0000000010000001, 0x0000000018000001,
3319  0x0000000008000001, 0x0000000008000001,
3320  0x0000000018000001, 0x0000000018000001,
3321  0x0000000010000001, 0x0000000018000001,
3322  0x0000000010000001, 0x0000000018000001,
3323  0x0000000018000001, 0x0000000018000001,
3324  0x0000000018000001, 0x0000000018000001,
3325  0x0000000020000001, 0x0000000028000001,
3326  0x0000000030000001, 0x0000000038000001,
3327  0x0000000028000001, 0x0000000028000001,
3328  0x0000000038000001, 0x0000000038000001,
3329  0x0000000030000001, 0x0000000038000001,
3330  0x0000000030000001, 0x0000000038000001,
3331  0x0000000038000001, 0x0000000038000001,
3332  0x0000000038000001, 0x0000000038000001,
3333  0x0000000040000001, 0x0000000048000001,
3334  0x0000000050000001, 0x0000000058000001,
3335  0x0000000048000001, 0x0000000048000001,
3336  0x0000000058000001, 0x0000000058000001,
3337  0x0000000050000001, 0x0000000058000001,
3338  0x0000000050000001, 0x0000000058000001,
3339  0x0000000058000001, 0x0000000058000001,
3340  0x0000000058000001, 0x0000000058000001,
3341  0x0000000060000001, 0x0000000068000001,
3342  0x0000000070000001, 0x0000000078000001,
3343  0x0000000068000001, 0x0000000068000001,
3344  0x0000000078000001, 0x0000000078000001,
3345  0x0000000070000001, 0x0000000078000001,
3346  0x0000000070000001, 0x0000000078000001,
3347  0x0000000078000001, 0x0000000078000001,
3348  0x0000000078000001, 0x0000000078000001,
3349  0x0000000080000001, 0x0000000088000001,
3350  0x0000000090000001, 0x0000000098000001,
3351  0x0000000088000001, 0x0000000088000001,
3352  0x0000000098000001, 0x0000000098000001,
3353  0x0000000090000001, 0x0000000098000001,
3354  0x0000000090000001, 0x0000000098000001,
3355  0x0000000098000001, 0x0000000098000001,
3356  0x0000000098000001, 0x0000000098000001,
3357  0x00000000a0000001, 0x00000000a8000001,
3358  0x00000000b0000001, 0x00000000b8000001,
3359  0x00000000a8000001, 0x00000000a8000001,
3360  0x00000000b8000001, 0x00000000b8000001,
3361  0x00000000b0000001, 0x00000000b8000001,
3362  0x00000000b0000001, 0x00000000b8000001,
3363  0x00000000b8000001, 0x00000000b8000001,
3364  0x00000000b8000001, 0x00000000b8000001,
3365  0x00000000c0000001, 0x00000000c8000001,
3366  0x00000000d0000001, 0x00000000d8000001,
3367  0x00000000c8000001, 0x00000000c8000001,
3368  0x00000000d8000001, 0x00000000d8000001,
3369  0x00000000d0000001, 0x00000000d8000001,
3370  0x00000000d0000001, 0x00000000d8000001,
3371  0x00000000d8000001, 0x00000000d8000001,
3372  0x00000000d8000001, 0x00000000d8000001,
3373  0x00000000e0000001, 0x00000000e8000001,
3374  0x00000000f0000001, 0x00000000f8000001,
3375  0x00000000e8000001, 0x00000000e8000001,
3376  0x00000000f8000001, 0x00000000f8000001,
3377  0x00000000f0000001, 0x00000000f8000001,
3378  0x00000000f0000001, 0x00000000f8000001,
3379  0x00000000f8000001, 0x00000000f8000001,
3380  0x00000000f8000001, 0x00000000f8000001
3381)
3382
3383# P permutation table
3384P_K = (
3385  0x0000000000000000, 0x0000000000000800,
3386  0x0000000000020000, 0x0000000000020800,
3387  0x0000000000000020, 0x0000000000000820,
3388  0x0000000000020020, 0x0000000000020820,
3389  0x0000000008000000, 0x0000000008000800,
3390  0x0000000008020000, 0x0000000008020800,
3391  0x0000000008000020, 0x0000000008000820,
3392  0x0000000008020020, 0x0000000008020820,
3393  0x0000000002000000, 0x0000000002000800,
3394  0x0000000002020000, 0x0000000002020800,
3395  0x0000000002000020, 0x0000000002000820,
3396  0x0000000002020020, 0x0000000002020820,
3397  0x000000000a000000, 0x000000000a000800,
3398  0x000000000a020000, 0x000000000a020800,
3399  0x000000000a000020, 0x000000000a000820,
3400  0x000000000a020020, 0x000000000a020820,
3401  0x0000000000000400, 0x0000000000000c00,
3402  0x0000000000020400, 0x0000000000020c00,
3403  0x0000000000000420, 0x0000000000000c20,
3404  0x0000000000020420, 0x0000000000020c20,
3405  0x0000000008000400, 0x0000000008000c00,
3406  0x0000000008020400, 0x0000000008020c00,
3407  0x0000000008000420, 0x0000000008000c20,
3408  0x0000000008020420, 0x0000000008020c20,
3409  0x0000000002000400, 0x0000000002000c00,
3410  0x0000000002020400, 0x0000000002020c00,
3411  0x0000000002000420, 0x0000000002000c20,
3412  0x0000000002020420, 0x0000000002020c20,
3413  0x000000000a000400, 0x000000000a000c00,
3414  0x000000000a020400, 0x000000000a020c00,
3415  0x000000000a000420, 0x000000000a000c20,
3416  0x000000000a020420, 0x000000000a020c20,
3417  0x0000000000100000, 0x0000000000100800,
3418  0x0000000000120000, 0x0000000000120800,
3419  0x0000000000100020, 0x0000000000100820,
3420  0x0000000000120020, 0x0000000000120820,
3421  0x0000000008100000, 0x0000000008100800,
3422  0x0000000008120000, 0x0000000008120800,
3423  0x0000000008100020, 0x0000000008100820,
3424  0x0000000008120020, 0x0000000008120820,
3425  0x0000000002100000, 0x0000000002100800,
3426  0x0000000002120000, 0x0000000002120800,
3427  0x0000000002100020, 0x0000000002100820,
3428  0x0000000002120020, 0x0000000002120820,
3429  0x000000000a100000, 0x000000000a100800,
3430  0x000000000a120000, 0x000000000a120800,
3431  0x000000000a100020, 0x000000000a100820,
3432  0x000000000a120020, 0x000000000a120820,
3433  0x0000000000100400, 0x0000000000100c00,
3434  0x0000000000120400, 0x0000000000120c00,
3435  0x0000000000100420, 0x0000000000100c20,
3436  0x0000000000120420, 0x0000000000120c20,
3437  0x0000000008100400, 0x0000000008100c00,
3438  0x0000000008120400, 0x0000000008120c00,
3439  0x0000000008100420, 0x0000000008100c20,
3440  0x0000000008120420, 0x0000000008120c20,
3441  0x0000000002100400, 0x0000000002100c00,
3442  0x0000000002120400, 0x0000000002120c00,
3443  0x0000000002100420, 0x0000000002100c20,
3444  0x0000000002120420, 0x0000000002120c20,
3445  0x000000000a100400, 0x000000000a100c00,
3446  0x000000000a120400, 0x000000000a120c00,
3447  0x000000000a100420, 0x000000000a100c20,
3448  0x000000000a120420, 0x000000000a120c20,
3449  0x0000000000000001, 0x0000000000000801,
3450  0x0000000000020001, 0x0000000000020801,
3451  0x0000000000000021, 0x0000000000000821,
3452  0x0000000000020021, 0x0000000000020821,
3453  0x0000000008000001, 0x0000000008000801,
3454  0x0000000008020001, 0x0000000008020801,
3455  0x0000000008000021, 0x0000000008000821,
3456  0x0000000008020021, 0x0000000008020821,
3457  0x0000000002000001, 0x0000000002000801,
3458  0x0000000002020001, 0x0000000002020801,
3459  0x0000000002000021, 0x0000000002000821,
3460  0x0000000002020021, 0x0000000002020821,
3461  0x000000000a000001, 0x000000000a000801,
3462  0x000000000a020001, 0x000000000a020801,
3463  0x000000000a000021, 0x000000000a000821,
3464  0x000000000a020021, 0x000000000a020821,
3465  0x0000000000000401, 0x0000000000000c01,
3466  0x0000000000020401, 0x0000000000020c01,
3467  0x0000000000000421, 0x0000000000000c21,
3468  0x0000000000020421, 0x0000000000020c21,
3469  0x0000000008000401, 0x0000000008000c01,
3470  0x0000000008020401, 0x0000000008020c01,
3471  0x0000000008000421, 0x0000000008000c21,
3472  0x0000000008020421, 0x0000000008020c21,
3473  0x0000000002000401, 0x0000000002000c01,
3474  0x0000000002020401, 0x0000000002020c01,
3475  0x0000000002000421, 0x0000000002000c21,
3476  0x0000000002020421, 0x0000000002020c21,
3477  0x000000000a000401, 0x000000000a000c01,
3478  0x000000000a020401, 0x000000000a020c01,
3479  0x000000000a000421, 0x000000000a000c21,
3480  0x000000000a020421, 0x000000000a020c21,
3481  0x0000000000100001, 0x0000000000100801,
3482  0x0000000000120001, 0x0000000000120801,
3483  0x0000000000100021, 0x0000000000100821,
3484  0x0000000000120021, 0x0000000000120821,
3485  0x0000000008100001, 0x0000000008100801,
3486  0x0000000008120001, 0x0000000008120801,
3487  0x0000000008100021, 0x0000000008100821,
3488  0x0000000008120021, 0x0000000008120821,
3489  0x0000000002100001, 0x0000000002100801,
3490  0x0000000002120001, 0x0000000002120801,
3491  0x0000000002100021, 0x0000000002100821,
3492  0x0000000002120021, 0x0000000002120821,
3493  0x000000000a100001, 0x000000000a100801,
3494  0x000000000a120001, 0x000000000a120801,
3495  0x000000000a100021, 0x000000000a100821,
3496  0x000000000a120021, 0x000000000a120821,
3497  0x0000000000100401, 0x0000000000100c01,
3498  0x0000000000120401, 0x0000000000120c01,
3499  0x0000000000100421, 0x0000000000100c21,
3500  0x0000000000120421, 0x0000000000120c21,
3501  0x0000000008100401, 0x0000000008100c01,
3502  0x0000000008120401, 0x0000000008120c01,
3503  0x0000000008100421, 0x0000000008100c21,
3504  0x0000000008120421, 0x0000000008120c21,
3505  0x0000000002100401, 0x0000000002100c01,
3506  0x0000000002120401, 0x0000000002120c01,
3507  0x0000000002100421, 0x0000000002100c21,
3508  0x0000000002120421, 0x0000000002120c21,
3509  0x000000000a100401, 0x000000000a100c01,
3510  0x000000000a120401, 0x000000000a120c01,
3511  0x000000000a100421, 0x000000000a100c21,
3512  0x000000000a120421, 0x000000000a120c21,
3513  0x0000000000000000, 0x0000000000002000,
3514  0x0000000000200000, 0x0000000000202000,
3515  0x0000000000000008, 0x0000000000002008,
3516  0x0000000000200008, 0x0000000000202008,
3517  0x0000000010000000, 0x0000000010002000,
3518  0x0000000010200000, 0x0000000010202000,
3519  0x0000000010000008, 0x0000000010002008,
3520  0x0000000010200008, 0x0000000010202008,
3521  0x0000000020000000, 0x0000000020002000,
3522  0x0000000020200000, 0x0000000020202000,
3523  0x0000000020000008, 0x0000000020002008,
3524  0x0000000020200008, 0x0000000020202008,
3525  0x0000000030000000, 0x0000000030002000,
3526  0x0000000030200000, 0x0000000030202000,
3527  0x0000000030000008, 0x0000000030002008,
3528  0x0000000030200008, 0x0000000030202008,
3529  0x0000000000000080, 0x0000000000002080,
3530  0x0000000000200080, 0x0000000000202080,
3531  0x0000000000000088, 0x0000000000002088,
3532  0x0000000000200088, 0x0000000000202088,
3533  0x0000000010000080, 0x0000000010002080,
3534  0x0000000010200080, 0x0000000010202080,
3535  0x0000000010000088, 0x0000000010002088,
3536  0x0000000010200088, 0x0000000010202088,
3537  0x0000000020000080, 0x0000000020002080,
3538  0x0000000020200080, 0x0000000020202080,
3539  0x0000000020000088, 0x0000000020002088,
3540  0x0000000020200088, 0x0000000020202088,
3541  0x0000000030000080, 0x0000000030002080,
3542  0x0000000030200080, 0x0000000030202080,
3543  0x0000000030000088, 0x0000000030002088,
3544  0x0000000030200088, 0x0000000030202088,
3545  0x0000000000040000, 0x0000000000042000,
3546  0x0000000000240000, 0x0000000000242000,
3547  0x0000000000040008, 0x0000000000042008,
3548  0x0000000000240008, 0x0000000000242008,
3549  0x0000000010040000, 0x0000000010042000,
3550  0x0000000010240000, 0x0000000010242000,
3551  0x0000000010040008, 0x0000000010042008,
3552  0x0000000010240008, 0x0000000010242008,
3553  0x0000000020040000, 0x0000000020042000,
3554  0x0000000020240000, 0x0000000020242000,
3555  0x0000000020040008, 0x0000000020042008,
3556  0x0000000020240008, 0x0000000020242008,
3557  0x0000000030040000, 0x0000000030042000,
3558  0x0000000030240000, 0x0000000030242000,
3559  0x0000000030040008, 0x0000000030042008,
3560  0x0000000030240008, 0x0000000030242008,
3561  0x0000000000040080, 0x0000000000042080,
3562  0x0000000000240080, 0x0000000000242080,
3563  0x0000000000040088, 0x0000000000042088,
3564  0x0000000000240088, 0x0000000000242088,
3565  0x0000000010040080, 0x0000000010042080,
3566  0x0000000010240080, 0x0000000010242080,
3567  0x0000000010040088, 0x0000000010042088,
3568  0x0000000010240088, 0x0000000010242088,
3569  0x0000000020040080, 0x0000000020042080,
3570  0x0000000020240080, 0x0000000020242080,
3571  0x0000000020040088, 0x0000000020042088,
3572  0x0000000020240088, 0x0000000020242088,
3573  0x0000000030040080, 0x0000000030042080,
3574  0x0000000030240080, 0x0000000030242080,
3575  0x0000000030040088, 0x0000000030042088,
3576  0x0000000030240088, 0x0000000030242088,
3577  0x0000000001000000, 0x0000000001002000,
3578  0x0000000001200000, 0x0000000001202000,
3579  0x0000000001000008, 0x0000000001002008,
3580  0x0000000001200008, 0x0000000001202008,
3581  0x0000000011000000, 0x0000000011002000,
3582  0x0000000011200000, 0x0000000011202000,
3583  0x0000000011000008, 0x0000000011002008,
3584  0x0000000011200008, 0x0000000011202008,
3585  0x0000000021000000, 0x0000000021002000,
3586  0x0000000021200000, 0x0000000021202000,
3587  0x0000000021000008, 0x0000000021002008,
3588  0x0000000021200008, 0x0000000021202008,
3589  0x0000000031000000, 0x0000000031002000,
3590  0x0000000031200000, 0x0000000031202000,
3591  0x0000000031000008, 0x0000000031002008,
3592  0x0000000031200008, 0x0000000031202008,
3593  0x0000000001000080, 0x0000000001002080,
3594  0x0000000001200080, 0x0000000001202080,
3595  0x0000000001000088, 0x0000000001002088,
3596  0x0000000001200088, 0x0000000001202088,
3597  0x0000000011000080, 0x0000000011002080,
3598  0x0000000011200080, 0x0000000011202080,
3599  0x0000000011000088, 0x0000000011002088,
3600  0x0000000011200088, 0x0000000011202088,
3601  0x0000000021000080, 0x0000000021002080,
3602  0x0000000021200080, 0x0000000021202080,
3603  0x0000000021000088, 0x0000000021002088,
3604  0x0000000021200088, 0x0000000021202088,
3605  0x0000000031000080, 0x0000000031002080,
3606  0x0000000031200080, 0x0000000031202080,
3607  0x0000000031000088, 0x0000000031002088,
3608  0x0000000031200088, 0x0000000031202088,
3609  0x0000000001040000, 0x0000000001042000,
3610  0x0000000001240000, 0x0000000001242000,
3611  0x0000000001040008, 0x0000000001042008,
3612  0x0000000001240008, 0x0000000001242008,
3613  0x0000000011040000, 0x0000000011042000,
3614  0x0000000011240000, 0x0000000011242000,
3615  0x0000000011040008, 0x0000000011042008,
3616  0x0000000011240008, 0x0000000011242008,
3617  0x0000000021040000, 0x0000000021042000,
3618  0x0000000021240000, 0x0000000021242000,
3619  0x0000000021040008, 0x0000000021042008,
3620  0x0000000021240008, 0x0000000021242008,
3621  0x0000000031040000, 0x0000000031042000,
3622  0x0000000031240000, 0x0000000031242000,
3623  0x0000000031040008, 0x0000000031042008,
3624  0x0000000031240008, 0x0000000031242008,
3625  0x0000000001040080, 0x0000000001042080,
3626  0x0000000001240080, 0x0000000001242080,
3627  0x0000000001040088, 0x0000000001042088,
3628  0x0000000001240088, 0x0000000001242088,
3629  0x0000000011040080, 0x0000000011042080,
3630  0x0000000011240080, 0x0000000011242080,
3631  0x0000000011040088, 0x0000000011042088,
3632  0x0000000011240088, 0x0000000011242088,
3633  0x0000000021040080, 0x0000000021042080,
3634  0x0000000021240080, 0x0000000021242080,
3635  0x0000000021040088, 0x0000000021042088,
3636  0x0000000021240088, 0x0000000021242088,
3637  0x0000000031040080, 0x0000000031042080,
3638  0x0000000031240080, 0x0000000031242080,
3639  0x0000000031040088, 0x0000000031042088,
3640  0x0000000031240088, 0x0000000031242088,
3641  0x0000000000000000, 0x0000000080000000,
3642  0x0000000000400000, 0x0000000080400000,
3643  0x0000000000001000, 0x0000000080001000,
3644  0x0000000000401000, 0x0000000080401000,
3645  0x0000000000000040, 0x0000000080000040,
3646  0x0000000000400040, 0x0000000080400040,
3647  0x0000000000001040, 0x0000000080001040,
3648  0x0000000000401040, 0x0000000080401040,
3649  0x0000000004000000, 0x0000000084000000,
3650  0x0000000004400000, 0x0000000084400000,
3651  0x0000000004001000, 0x0000000084001000,
3652  0x0000000004401000, 0x0000000084401000,
3653  0x0000000004000040, 0x0000000084000040,
3654  0x0000000004400040, 0x0000000084400040,
3655  0x0000000004001040, 0x0000000084001040,
3656  0x0000000004401040, 0x0000000084401040,
3657  0x0000000000000004, 0x0000000080000004,
3658  0x0000000000400004, 0x0000000080400004,
3659  0x0000000000001004, 0x0000000080001004,
3660  0x0000000000401004, 0x0000000080401004,
3661  0x0000000000000044, 0x0000000080000044,
3662  0x0000000000400044, 0x0000000080400044,
3663  0x0000000000001044, 0x0000000080001044,
3664  0x0000000000401044, 0x0000000080401044,
3665  0x0000000004000004, 0x0000000084000004,
3666  0x0000000004400004, 0x0000000084400004,
3667  0x0000000004001004, 0x0000000084001004,
3668  0x0000000004401004, 0x0000000084401004,
3669  0x0000000004000044, 0x0000000084000044,
3670  0x0000000004400044, 0x0000000084400044,
3671  0x0000000004001044, 0x0000000084001044,
3672  0x0000000004401044, 0x0000000084401044,
3673  0x0000000000010000, 0x0000000080010000,
3674  0x0000000000410000, 0x0000000080410000,
3675  0x0000000000011000, 0x0000000080011000,
3676  0x0000000000411000, 0x0000000080411000,
3677  0x0000000000010040, 0x0000000080010040,
3678  0x0000000000410040, 0x0000000080410040,
3679  0x0000000000011040, 0x0000000080011040,
3680  0x0000000000411040, 0x0000000080411040,
3681  0x0000000004010000, 0x0000000084010000,
3682  0x0000000004410000, 0x0000000084410000,
3683  0x0000000004011000, 0x0000000084011000,
3684  0x0000000004411000, 0x0000000084411000,
3685  0x0000000004010040, 0x0000000084010040,
3686  0x0000000004410040, 0x0000000084410040,
3687  0x0000000004011040, 0x0000000084011040,
3688  0x0000000004411040, 0x0000000084411040,
3689  0x0000000000010004, 0x0000000080010004,
3690  0x0000000000410004, 0x0000000080410004,
3691  0x0000000000011004, 0x0000000080011004,
3692  0x0000000000411004, 0x0000000080411004,
3693  0x0000000000010044, 0x0000000080010044,
3694  0x0000000000410044, 0x0000000080410044,
3695  0x0000000000011044, 0x0000000080011044,
3696  0x0000000000411044, 0x0000000080411044,
3697  0x0000000004010004, 0x0000000084010004,
3698  0x0000000004410004, 0x0000000084410004,
3699  0x0000000004011004, 0x0000000084011004,
3700  0x0000000004411004, 0x0000000084411004,
3701  0x0000000004010044, 0x0000000084010044,
3702  0x0000000004410044, 0x0000000084410044,
3703  0x0000000004011044, 0x0000000084011044,
3704  0x0000000004411044, 0x0000000084411044,
3705  0x0000000000000100, 0x0000000080000100,
3706  0x0000000000400100, 0x0000000080400100,
3707  0x0000000000001100, 0x0000000080001100,
3708  0x0000000000401100, 0x0000000080401100,
3709  0x0000000000000140, 0x0000000080000140,
3710  0x0000000000400140, 0x0000000080400140,
3711  0x0000000000001140, 0x0000000080001140,
3712  0x0000000000401140, 0x0000000080401140,
3713  0x0000000004000100, 0x0000000084000100,
3714  0x0000000004400100, 0x0000000084400100,
3715  0x0000000004001100, 0x0000000084001100,
3716  0x0000000004401100, 0x0000000084401100,
3717  0x0000000004000140, 0x0000000084000140,
3718  0x0000000004400140, 0x0000000084400140,
3719  0x0000000004001140, 0x0000000084001140,
3720  0x0000000004401140, 0x0000000084401140,
3721  0x0000000000000104, 0x0000000080000104,
3722  0x0000000000400104, 0x0000000080400104,
3723  0x0000000000001104, 0x0000000080001104,
3724  0x0000000000401104, 0x0000000080401104,
3725  0x0000000000000144, 0x0000000080000144,
3726  0x0000000000400144, 0x0000000080400144,
3727  0x0000000000001144, 0x0000000080001144,
3728  0x0000000000401144, 0x0000000080401144,
3729  0x0000000004000104, 0x0000000084000104,
3730  0x0000000004400104, 0x0000000084400104,
3731  0x0000000004001104, 0x0000000084001104,
3732  0x0000000004401104, 0x0000000084401104,
3733  0x0000000004000144, 0x0000000084000144,
3734  0x0000000004400144, 0x0000000084400144,
3735  0x0000000004001144, 0x0000000084001144,
3736  0x0000000004401144, 0x0000000084401144,
3737  0x0000000000010100, 0x0000000080010100,
3738  0x0000000000410100, 0x0000000080410100,
3739  0x0000000000011100, 0x0000000080011100,
3740  0x0000000000411100, 0x0000000080411100,
3741  0x0000000000010140, 0x0000000080010140,
3742  0x0000000000410140, 0x0000000080410140,
3743  0x0000000000011140, 0x0000000080011140,
3744  0x0000000000411140, 0x0000000080411140,
3745  0x0000000004010100, 0x0000000084010100,
3746  0x0000000004410100, 0x0000000084410100,
3747  0x0000000004011100, 0x0000000084011100,
3748  0x0000000004411100, 0x0000000084411100,
3749  0x0000000004010140, 0x0000000084010140,
3750  0x0000000004410140, 0x0000000084410140,
3751  0x0000000004011140, 0x0000000084011140,
3752  0x0000000004411140, 0x0000000084411140,
3753  0x0000000000010104, 0x0000000080010104,
3754  0x0000000000410104, 0x0000000080410104,
3755  0x0000000000011104, 0x0000000080011104,
3756  0x0000000000411104, 0x0000000080411104,
3757  0x0000000000010144, 0x0000000080010144,
3758  0x0000000000410144, 0x0000000080410144,
3759  0x0000000000011144, 0x0000000080011144,
3760  0x0000000000411144, 0x0000000080411144,
3761  0x0000000004010104, 0x0000000084010104,
3762  0x0000000004410104, 0x0000000084410104,
3763  0x0000000004011104, 0x0000000084011104,
3764  0x0000000004411104, 0x0000000084411104,
3765  0x0000000004010144, 0x0000000084010144,
3766  0x0000000004410144, 0x0000000084410144,
3767  0x0000000004011144, 0x0000000084011144,
3768  0x0000000004411144, 0x0000000084411144,
3769  0x0000000000000000, 0x0000000000004000,
3770  0x0000000040000000, 0x0000000040004000,
3771  0x0000000000000010, 0x0000000000004010,
3772  0x0000000040000010, 0x0000000040004010,
3773  0x0000000000080000, 0x0000000000084000,
3774  0x0000000040080000, 0x0000000040084000,
3775  0x0000000000080010, 0x0000000000084010,
3776  0x0000000040080010, 0x0000000040084010,
3777  0x0000000000000002, 0x0000000000004002,
3778  0x0000000040000002, 0x0000000040004002,
3779  0x0000000000000012, 0x0000000000004012,
3780  0x0000000040000012, 0x0000000040004012,
3781  0x0000000000080002, 0x0000000000084002,
3782  0x0000000040080002, 0x0000000040084002,
3783  0x0000000000080012, 0x0000000000084012,
3784  0x0000000040080012, 0x0000000040084012,
3785  0x0000000000000200, 0x0000000000004200,
3786  0x0000000040000200, 0x0000000040004200,
3787  0x0000000000000210, 0x0000000000004210,
3788  0x0000000040000210, 0x0000000040004210,
3789  0x0000000000080200, 0x0000000000084200,
3790  0x0000000040080200, 0x0000000040084200,
3791  0x0000000000080210, 0x0000000000084210,
3792  0x0000000040080210, 0x0000000040084210,
3793  0x0000000000000202, 0x0000000000004202,
3794  0x0000000040000202, 0x0000000040004202,
3795  0x0000000000000212, 0x0000000000004212,
3796  0x0000000040000212, 0x0000000040004212,
3797  0x0000000000080202, 0x0000000000084202,
3798  0x0000000040080202, 0x0000000040084202,
3799  0x0000000000080212, 0x0000000000084212,
3800  0x0000000040080212, 0x0000000040084212,
3801  0x0000000000008000, 0x000000000000c000,
3802  0x0000000040008000, 0x000000004000c000,
3803  0x0000000000008010, 0x000000000000c010,
3804  0x0000000040008010, 0x000000004000c010,
3805  0x0000000000088000, 0x000000000008c000,
3806  0x0000000040088000, 0x000000004008c000,
3807  0x0000000000088010, 0x000000000008c010,
3808  0x0000000040088010, 0x000000004008c010,
3809  0x0000000000008002, 0x000000000000c002,
3810  0x0000000040008002, 0x000000004000c002,
3811  0x0000000000008012, 0x000000000000c012,
3812  0x0000000040008012, 0x000000004000c012,
3813  0x0000000000088002, 0x000000000008c002,
3814  0x0000000040088002, 0x000000004008c002,
3815  0x0000000000088012, 0x000000000008c012,
3816  0x0000000040088012, 0x000000004008c012,
3817  0x0000000000008200, 0x000000000000c200,
3818  0x0000000040008200, 0x000000004000c200,
3819  0x0000000000008210, 0x000000000000c210,
3820  0x0000000040008210, 0x000000004000c210,
3821  0x0000000000088200, 0x000000000008c200,
3822  0x0000000040088200, 0x000000004008c200,
3823  0x0000000000088210, 0x000000000008c210,
3824  0x0000000040088210, 0x000000004008c210,
3825  0x0000000000008202, 0x000000000000c202,
3826  0x0000000040008202, 0x000000004000c202,
3827  0x0000000000008212, 0x000000000000c212,
3828  0x0000000040008212, 0x000000004000c212,
3829  0x0000000000088202, 0x000000000008c202,
3830  0x0000000040088202, 0x000000004008c202,
3831  0x0000000000088212, 0x000000000008c212,
3832  0x0000000040088212, 0x000000004008c212,
3833  0x0000000000800000, 0x0000000000804000,
3834  0x0000000040800000, 0x0000000040804000,
3835  0x0000000000800010, 0x0000000000804010,
3836  0x0000000040800010, 0x0000000040804010,
3837  0x0000000000880000, 0x0000000000884000,
3838  0x0000000040880000, 0x0000000040884000,
3839  0x0000000000880010, 0x0000000000884010,
3840  0x0000000040880010, 0x0000000040884010,
3841  0x0000000000800002, 0x0000000000804002,
3842  0x0000000040800002, 0x0000000040804002,
3843  0x0000000000800012, 0x0000000000804012,
3844  0x0000000040800012, 0x0000000040804012,
3845  0x0000000000880002, 0x0000000000884002,
3846  0x0000000040880002, 0x0000000040884002,
3847  0x0000000000880012, 0x0000000000884012,
3848  0x0000000040880012, 0x0000000040884012,
3849  0x0000000000800200, 0x0000000000804200,
3850  0x0000000040800200, 0x0000000040804200,
3851  0x0000000000800210, 0x0000000000804210,
3852  0x0000000040800210, 0x0000000040804210,
3853  0x0000000000880200, 0x0000000000884200,
3854  0x0000000040880200, 0x0000000040884200,
3855  0x0000000000880210, 0x0000000000884210,
3856  0x0000000040880210, 0x0000000040884210,
3857  0x0000000000800202, 0x0000000000804202,
3858  0x0000000040800202, 0x0000000040804202,
3859  0x0000000000800212, 0x0000000000804212,
3860  0x0000000040800212, 0x0000000040804212,
3861  0x0000000000880202, 0x0000000000884202,
3862  0x0000000040880202, 0x0000000040884202,
3863  0x0000000000880212, 0x0000000000884212,
3864  0x0000000040880212, 0x0000000040884212,
3865  0x0000000000808000, 0x000000000080c000,
3866  0x0000000040808000, 0x000000004080c000,
3867  0x0000000000808010, 0x000000000080c010,
3868  0x0000000040808010, 0x000000004080c010,
3869  0x0000000000888000, 0x000000000088c000,
3870  0x0000000040888000, 0x000000004088c000,
3871  0x0000000000888010, 0x000000000088c010,
3872  0x0000000040888010, 0x000000004088c010,
3873  0x0000000000808002, 0x000000000080c002,
3874  0x0000000040808002, 0x000000004080c002,
3875  0x0000000000808012, 0x000000000080c012,
3876  0x0000000040808012, 0x000000004080c012,
3877  0x0000000000888002, 0x000000000088c002,
3878  0x0000000040888002, 0x000000004088c002,
3879  0x0000000000888012, 0x000000000088c012,
3880  0x0000000040888012, 0x000000004088c012,
3881  0x0000000000808200, 0x000000000080c200,
3882  0x0000000040808200, 0x000000004080c200,
3883  0x0000000000808210, 0x000000000080c210,
3884  0x0000000040808210, 0x000000004080c210,
3885  0x0000000000888200, 0x000000000088c200,
3886  0x0000000040888200, 0x000000004088c200,
3887  0x0000000000888210, 0x000000000088c210,
3888  0x0000000040888210, 0x000000004088c210,
3889  0x0000000000808202, 0x000000000080c202,
3890  0x0000000040808202, 0x000000004080c202,
3891  0x0000000000808212, 0x000000000080c212,
3892  0x0000000040808212, 0x000000004080c212,
3893  0x0000000000888202, 0x000000000088c202,
3894  0x0000000040888202, 0x000000004088c202,
3895  0x0000000000888212, 0x000000000088c212,
3896  0x0000000040888212, 0x000000004088c212
3897)
3898
3899# Inverse P permutation table
3900N_P_K = (
3901  0x0000000000000000, 0x0000000000000080,
3902  0x0000000010000000, 0x0000000010000080,
3903  0x0000000000200000, 0x0000000000200080,
3904  0x0000000010200000, 0x0000000010200080,
3905  0x0000000000000400, 0x0000000000000480,
3906  0x0000000010000400, 0x0000000010000480,
3907  0x0000000000200400, 0x0000000000200480,
3908  0x0000000010200400, 0x0000000010200480,
3909  0x0000000004000000, 0x0000000004000080,
3910  0x0000000014000000, 0x0000000014000080,
3911  0x0000000004200000, 0x0000000004200080,
3912  0x0000000014200000, 0x0000000014200080,
3913  0x0000000004000400, 0x0000000004000480,
3914  0x0000000014000400, 0x0000000014000480,
3915  0x0000000004200400, 0x0000000004200480,
3916  0x0000000014200400, 0x0000000014200480,
3917  0x0000000000000004, 0x0000000000000084,
3918  0x0000000010000004, 0x0000000010000084,
3919  0x0000000000200004, 0x0000000000200084,
3920  0x0000000010200004, 0x0000000010200084,
3921  0x0000000000000404, 0x0000000000000484,
3922  0x0000000010000404, 0x0000000010000484,
3923  0x0000000000200404, 0x0000000000200484,
3924  0x0000000010200404, 0x0000000010200484,
3925  0x0000000004000004, 0x0000000004000084,
3926  0x0000000014000004, 0x0000000014000084,
3927  0x0000000004200004, 0x0000000004200084,
3928  0x0000000014200004, 0x0000000014200084,
3929  0x0000000004000404, 0x0000000004000484,
3930  0x0000000014000404, 0x0000000014000484,
3931  0x0000000004200404, 0x0000000004200484,
3932  0x0000000014200404, 0x0000000014200484,
3933  0x0000000000080000, 0x0000000000080080,
3934  0x0000000010080000, 0x0000000010080080,
3935  0x0000000000280000, 0x0000000000280080,
3936  0x0000000010280000, 0x0000000010280080,
3937  0x0000000000080400, 0x0000000000080480,
3938  0x0000000010080400, 0x0000000010080480,
3939  0x0000000000280400, 0x0000000000280480,
3940  0x0000000010280400, 0x0000000010280480,
3941  0x0000000004080000, 0x0000000004080080,
3942  0x0000000014080000, 0x0000000014080080,
3943  0x0000000004280000, 0x0000000004280080,
3944  0x0000000014280000, 0x0000000014280080,
3945  0x0000000004080400, 0x0000000004080480,
3946  0x0000000014080400, 0x0000000014080480,
3947  0x0000000004280400, 0x0000000004280480,
3948  0x0000000014280400, 0x0000000014280480,
3949  0x0000000000080004, 0x0000000000080084,
3950  0x0000000010080004, 0x0000000010080084,
3951  0x0000000000280004, 0x0000000000280084,
3952  0x0000000010280004, 0x0000000010280084,
3953  0x0000000000080404, 0x0000000000080484,
3954  0x0000000010080404, 0x0000000010080484,
3955  0x0000000000280404, 0x0000000000280484,
3956  0x0000000010280404, 0x0000000010280484,
3957  0x0000000004080004, 0x0000000004080084,
3958  0x0000000014080004, 0x0000000014080084,
3959  0x0000000004280004, 0x0000000004280084,
3960  0x0000000014280004, 0x0000000014280084,
3961  0x0000000004080404, 0x0000000004080484,
3962  0x0000000014080404, 0x0000000014080484,
3963  0x0000000004280404, 0x0000000004280484,
3964  0x0000000014280404, 0x0000000014280484,
3965  0x0000000000002000, 0x0000000000002080,
3966  0x0000000010002000, 0x0000000010002080,
3967  0x0000000000202000, 0x0000000000202080,
3968  0x0000000010202000, 0x0000000010202080,
3969  0x0000000000002400, 0x0000000000002480,
3970  0x0000000010002400, 0x0000000010002480,
3971  0x0000000000202400, 0x0000000000202480,
3972  0x0000000010202400, 0x0000000010202480,
3973  0x0000000004002000, 0x0000000004002080,
3974  0x0000000014002000, 0x0000000014002080,
3975  0x0000000004202000, 0x0000000004202080,
3976  0x0000000014202000, 0x0000000014202080,
3977  0x0000000004002400, 0x0000000004002480,
3978  0x0000000014002400, 0x0000000014002480,
3979  0x0000000004202400, 0x0000000004202480,
3980  0x0000000014202400, 0x0000000014202480,
3981  0x0000000000002004, 0x0000000000002084,
3982  0x0000000010002004, 0x0000000010002084,
3983  0x0000000000202004, 0x0000000000202084,
3984  0x0000000010202004, 0x0000000010202084,
3985  0x0000000000002404, 0x0000000000002484,
3986  0x0000000010002404, 0x0000000010002484,
3987  0x0000000000202404, 0x0000000000202484,
3988  0x0000000010202404, 0x0000000010202484,
3989  0x0000000004002004, 0x0000000004002084,
3990  0x0000000014002004, 0x0000000014002084,
3991  0x0000000004202004, 0x0000000004202084,
3992  0x0000000014202004, 0x0000000014202084,
3993  0x0000000004002404, 0x0000000004002484,
3994  0x0000000014002404, 0x0000000014002484,
3995  0x0000000004202404, 0x0000000004202484,
3996  0x0000000014202404, 0x0000000014202484,
3997  0x0000000000082000, 0x0000000000082080,
3998  0x0000000010082000, 0x0000000010082080,
3999  0x0000000000282000, 0x0000000000282080,
4000  0x0000000010282000, 0x0000000010282080,
4001  0x0000000000082400, 0x0000000000082480,
4002  0x0000000010082400, 0x0000000010082480,
4003  0x0000000000282400, 0x0000000000282480,
4004  0x0000000010282400, 0x0000000010282480,
4005  0x0000000004082000, 0x0000000004082080,
4006  0x0000000014082000, 0x0000000014082080,
4007  0x0000000004282000, 0x0000000004282080,
4008  0x0000000014282000, 0x0000000014282080,
4009  0x0000000004082400, 0x0000000004082480,
4010  0x0000000014082400, 0x0000000014082480,
4011  0x0000000004282400, 0x0000000004282480,
4012  0x0000000014282400, 0x0000000014282480,
4013  0x0000000000082004, 0x0000000000082084,
4014  0x0000000010082004, 0x0000000010082084,
4015  0x0000000000282004, 0x0000000000282084,
4016  0x0000000010282004, 0x0000000010282084,
4017  0x0000000000082404, 0x0000000000082484,
4018  0x0000000010082404, 0x0000000010082484,
4019  0x0000000000282404, 0x0000000000282484,
4020  0x0000000010282404, 0x0000000010282484,
4021  0x0000000004082004, 0x0000000004082084,
4022  0x0000000014082004, 0x0000000014082084,
4023  0x0000000004282004, 0x0000000004282084,
4024  0x0000000014282004, 0x0000000014282084,
4025  0x0000000004082404, 0x0000000004082484,
4026  0x0000000014082404, 0x0000000014082484,
4027  0x0000000004282404, 0x0000000004282484,
4028  0x0000000014282404, 0x0000000014282484,
4029  0x0000000000000000, 0x0000000000800000,
4030  0x0000000020000000, 0x0000000020800000,
4031  0x0000000000000020, 0x0000000000800020,
4032  0x0000000020000020, 0x0000000020800020,
4033  0x0000000000000001, 0x0000000000800001,
4034  0x0000000020000001, 0x0000000020800001,
4035  0x0000000000000021, 0x0000000000800021,
4036  0x0000000020000021, 0x0000000020800021,
4037  0x0000000000040000, 0x0000000000840000,
4038  0x0000000020040000, 0x0000000020840000,
4039  0x0000000000040020, 0x0000000000840020,
4040  0x0000000020040020, 0x0000000020840020,
4041  0x0000000000040001, 0x0000000000840001,
4042  0x0000000020040001, 0x0000000020840001,
4043  0x0000000000040021, 0x0000000000840021,
4044  0x0000000020040021, 0x0000000020840021,
4045  0x0000000000000100, 0x0000000000800100,
4046  0x0000000020000100, 0x0000000020800100,
4047  0x0000000000000120, 0x0000000000800120,
4048  0x0000000020000120, 0x0000000020800120,
4049  0x0000000000000101, 0x0000000000800101,
4050  0x0000000020000101, 0x0000000020800101,
4051  0x0000000000000121, 0x0000000000800121,
4052  0x0000000020000121, 0x0000000020800121,
4053  0x0000000000040100, 0x0000000000840100,
4054  0x0000000020040100, 0x0000000020840100,
4055  0x0000000000040120, 0x0000000000840120,
4056  0x0000000020040120, 0x0000000020840120,
4057  0x0000000000040101, 0x0000000000840101,
4058  0x0000000020040101, 0x0000000020840101,
4059  0x0000000000040121, 0x0000000000840121,
4060  0x0000000020040121, 0x0000000020840121,
4061  0x0000000001000000, 0x0000000001800000,
4062  0x0000000021000000, 0x0000000021800000,
4063  0x0000000001000020, 0x0000000001800020,
4064  0x0000000021000020, 0x0000000021800020,
4065  0x0000000001000001, 0x0000000001800001,
4066  0x0000000021000001, 0x0000000021800001,
4067  0x0000000001000021, 0x0000000001800021,
4068  0x0000000021000021, 0x0000000021800021,
4069  0x0000000001040000, 0x0000000001840000,
4070  0x0000000021040000, 0x0000000021840000,
4071  0x0000000001040020, 0x0000000001840020,
4072  0x0000000021040020, 0x0000000021840020,
4073  0x0000000001040001, 0x0000000001840001,
4074  0x0000000021040001, 0x0000000021840001,
4075  0x0000000001040021, 0x0000000001840021,
4076  0x0000000021040021, 0x0000000021840021,
4077  0x0000000001000100, 0x0000000001800100,
4078  0x0000000021000100, 0x0000000021800100,
4079  0x0000000001000120, 0x0000000001800120,
4080  0x0000000021000120, 0x0000000021800120,
4081  0x0000000001000101, 0x0000000001800101,
4082  0x0000000021000101, 0x0000000021800101,
4083  0x0000000001000121, 0x0000000001800121,
4084  0x0000000021000121, 0x0000000021800121,
4085  0x0000000001040100, 0x0000000001840100,
4086  0x0000000021040100, 0x0000000021840100,
4087  0x0000000001040120, 0x0000000001840120,
4088  0x0000000021040120, 0x0000000021840120,
4089  0x0000000001040101, 0x0000000001840101,
4090  0x0000000021040101, 0x0000000021840101,
4091  0x0000000001040121, 0x0000000001840121,
4092  0x0000000021040121, 0x0000000021840121,
4093  0x0000000040000000, 0x0000000040800000,
4094  0x0000000060000000, 0x0000000060800000,
4095  0x0000000040000020, 0x0000000040800020,
4096  0x0000000060000020, 0x0000000060800020,
4097  0x0000000040000001, 0x0000000040800001,
4098  0x0000000060000001, 0x0000000060800001,
4099  0x0000000040000021, 0x0000000040800021,
4100  0x0000000060000021, 0x0000000060800021,
4101  0x0000000040040000, 0x0000000040840000,
4102  0x0000000060040000, 0x0000000060840000,
4103  0x0000000040040020, 0x0000000040840020,
4104  0x0000000060040020, 0x0000000060840020,
4105  0x0000000040040001, 0x0000000040840001,
4106  0x0000000060040001, 0x0000000060840001,
4107  0x0000000040040021, 0x0000000040840021,
4108  0x0000000060040021, 0x0000000060840021,
4109  0x0000000040000100, 0x0000000040800100,
4110  0x0000000060000100, 0x0000000060800100,
4111  0x0000000040000120, 0x0000000040800120,
4112  0x0000000060000120, 0x0000000060800120,
4113  0x0000000040000101, 0x0000000040800101,
4114  0x0000000060000101, 0x0000000060800101,
4115  0x0000000040000121, 0x0000000040800121,
4116  0x0000000060000121, 0x0000000060800121,
4117  0x0000000040040100, 0x0000000040840100,
4118  0x0000000060040100, 0x0000000060840100,
4119  0x0000000040040120, 0x0000000040840120,
4120  0x0000000060040120, 0x0000000060840120,
4121  0x0000000040040101, 0x0000000040840101,
4122  0x0000000060040101, 0x0000000060840101,
4123  0x0000000040040121, 0x0000000040840121,
4124  0x0000000060040121, 0x0000000060840121,
4125  0x0000000041000000, 0x0000000041800000,
4126  0x0000000061000000, 0x0000000061800000,
4127  0x0000000041000020, 0x0000000041800020,
4128  0x0000000061000020, 0x0000000061800020,
4129  0x0000000041000001, 0x0000000041800001,
4130  0x0000000061000001, 0x0000000061800001,
4131  0x0000000041000021, 0x0000000041800021,
4132  0x0000000061000021, 0x0000000061800021,
4133  0x0000000041040000, 0x0000000041840000,
4134  0x0000000061040000, 0x0000000061840000,
4135  0x0000000041040020, 0x0000000041840020,
4136  0x0000000061040020, 0x0000000061840020,
4137  0x0000000041040001, 0x0000000041840001,
4138  0x0000000061040001, 0x0000000061840001,
4139  0x0000000041040021, 0x0000000041840021,
4140  0x0000000061040021, 0x0000000061840021,
4141  0x0000000041000100, 0x0000000041800100,
4142  0x0000000061000100, 0x0000000061800100,
4143  0x0000000041000120, 0x0000000041800120,
4144  0x0000000061000120, 0x0000000061800120,
4145  0x0000000041000101, 0x0000000041800101,
4146  0x0000000061000101, 0x0000000061800101,
4147  0x0000000041000121, 0x0000000041800121,
4148  0x0000000061000121, 0x0000000061800121,
4149  0x0000000041040100, 0x0000000041840100,
4150  0x0000000061040100, 0x0000000061840100,
4151  0x0000000041040120, 0x0000000041840120,
4152  0x0000000061040120, 0x0000000061840120,
4153  0x0000000041040101, 0x0000000041840101,
4154  0x0000000061040101, 0x0000000061840101,
4155  0x0000000041040121, 0x0000000041840121,
4156  0x0000000061040121, 0x0000000061840121,
4157  0x0000000000000000, 0x0000000000400000,
4158  0x0000000000000002, 0x0000000000400002,
4159  0x0000000000004000, 0x0000000000404000,
4160  0x0000000000004002, 0x0000000000404002,
4161  0x0000000008000000, 0x0000000008400000,
4162  0x0000000008000002, 0x0000000008400002,
4163  0x0000000008004000, 0x0000000008404000,
4164  0x0000000008004002, 0x0000000008404002,
4165  0x0000000000000040, 0x0000000000400040,
4166  0x0000000000000042, 0x0000000000400042,
4167  0x0000000000004040, 0x0000000000404040,
4168  0x0000000000004042, 0x0000000000404042,
4169  0x0000000008000040, 0x0000000008400040,
4170  0x0000000008000042, 0x0000000008400042,
4171  0x0000000008004040, 0x0000000008404040,
4172  0x0000000008004042, 0x0000000008404042,
4173  0x0000000000000200, 0x0000000000400200,
4174  0x0000000000000202, 0x0000000000400202,
4175  0x0000000000004200, 0x0000000000404200,
4176  0x0000000000004202, 0x0000000000404202,
4177  0x0000000008000200, 0x0000000008400200,
4178  0x0000000008000202, 0x0000000008400202,
4179  0x0000000008004200, 0x0000000008404200,
4180  0x0000000008004202, 0x0000000008404202,
4181  0x0000000000000240, 0x0000000000400240,
4182  0x0000000000000242, 0x0000000000400242,
4183  0x0000000000004240, 0x0000000000404240,
4184  0x0000000000004242, 0x0000000000404242,
4185  0x0000000008000240, 0x0000000008400240,
4186  0x0000000008000242, 0x0000000008400242,
4187  0x0000000008004240, 0x0000000008404240,
4188  0x0000000008004242, 0x0000000008404242,
4189  0x0000000000020000, 0x0000000000420000,
4190  0x0000000000020002, 0x0000000000420002,
4191  0x0000000000024000, 0x0000000000424000,
4192  0x0000000000024002, 0x0000000000424002,
4193  0x0000000008020000, 0x0000000008420000,
4194  0x0000000008020002, 0x0000000008420002,
4195  0x0000000008024000, 0x0000000008424000,
4196  0x0000000008024002, 0x0000000008424002,
4197  0x0000000000020040, 0x0000000000420040,
4198  0x0000000000020042, 0x0000000000420042,
4199  0x0000000000024040, 0x0000000000424040,
4200  0x0000000000024042, 0x0000000000424042,
4201  0x0000000008020040, 0x0000000008420040,
4202  0x0000000008020042, 0x0000000008420042,
4203  0x0000000008024040, 0x0000000008424040,
4204  0x0000000008024042, 0x0000000008424042,
4205  0x0000000000020200, 0x0000000000420200,
4206  0x0000000000020202, 0x0000000000420202,
4207  0x0000000000024200, 0x0000000000424200,
4208  0x0000000000024202, 0x0000000000424202,
4209  0x0000000008020200, 0x0000000008420200,
4210  0x0000000008020202, 0x0000000008420202,
4211  0x0000000008024200, 0x0000000008424200,
4212  0x0000000008024202, 0x0000000008424202,
4213  0x0000000000020240, 0x0000000000420240,
4214  0x0000000000020242, 0x0000000000420242,
4215  0x0000000000024240, 0x0000000000424240,
4216  0x0000000000024242, 0x0000000000424242,
4217  0x0000000008020240, 0x0000000008420240,
4218  0x0000000008020242, 0x0000000008420242,
4219  0x0000000008024240, 0x0000000008424240,
4220  0x0000000008024242, 0x0000000008424242,
4221  0x0000000080000000, 0x0000000080400000,
4222  0x0000000080000002, 0x0000000080400002,
4223  0x0000000080004000, 0x0000000080404000,
4224  0x0000000080004002, 0x0000000080404002,
4225  0x0000000088000000, 0x0000000088400000,
4226  0x0000000088000002, 0x0000000088400002,
4227  0x0000000088004000, 0x0000000088404000,
4228  0x0000000088004002, 0x0000000088404002,
4229  0x0000000080000040, 0x0000000080400040,
4230  0x0000000080000042, 0x0000000080400042,
4231  0x0000000080004040, 0x0000000080404040,
4232  0x0000000080004042, 0x0000000080404042,
4233  0x0000000088000040, 0x0000000088400040,
4234  0x0000000088000042, 0x0000000088400042,
4235  0x0000000088004040, 0x0000000088404040,
4236  0x0000000088004042, 0x0000000088404042,
4237  0x0000000080000200, 0x0000000080400200,
4238  0x0000000080000202, 0x0000000080400202,
4239  0x0000000080004200, 0x0000000080404200,
4240  0x0000000080004202, 0x0000000080404202,
4241  0x0000000088000200, 0x0000000088400200,
4242  0x0000000088000202, 0x0000000088400202,
4243  0x0000000088004200, 0x0000000088404200,
4244  0x0000000088004202, 0x0000000088404202,
4245  0x0000000080000240, 0x0000000080400240,
4246  0x0000000080000242, 0x0000000080400242,
4247  0x0000000080004240, 0x0000000080404240,
4248  0x0000000080004242, 0x0000000080404242,
4249  0x0000000088000240, 0x0000000088400240,
4250  0x0000000088000242, 0x0000000088400242,
4251  0x0000000088004240, 0x0000000088404240,
4252  0x0000000088004242, 0x0000000088404242,
4253  0x0000000080020000, 0x0000000080420000,
4254  0x0000000080020002, 0x0000000080420002,
4255  0x0000000080024000, 0x0000000080424000,
4256  0x0000000080024002, 0x0000000080424002,
4257  0x0000000088020000, 0x0000000088420000,
4258  0x0000000088020002, 0x0000000088420002,
4259  0x0000000088024000, 0x0000000088424000,
4260  0x0000000088024002, 0x0000000088424002,
4261  0x0000000080020040, 0x0000000080420040,
4262  0x0000000080020042, 0x0000000080420042,
4263  0x0000000080024040, 0x0000000080424040,
4264  0x0000000080024042, 0x0000000080424042,
4265  0x0000000088020040, 0x0000000088420040,
4266  0x0000000088020042, 0x0000000088420042,
4267  0x0000000088024040, 0x0000000088424040,
4268  0x0000000088024042, 0x0000000088424042,
4269  0x0000000080020200, 0x0000000080420200,
4270  0x0000000080020202, 0x0000000080420202,
4271  0x0000000080024200, 0x0000000080424200,
4272  0x0000000080024202, 0x0000000080424202,
4273  0x0000000088020200, 0x0000000088420200,
4274  0x0000000088020202, 0x0000000088420202,
4275  0x0000000088024200, 0x0000000088424200,
4276  0x0000000088024202, 0x0000000088424202,
4277  0x0000000080020240, 0x0000000080420240,
4278  0x0000000080020242, 0x0000000080420242,
4279  0x0000000080024240, 0x0000000080424240,
4280  0x0000000080024242, 0x0000000080424242,
4281  0x0000000088020240, 0x0000000088420240,
4282  0x0000000088020242, 0x0000000088420242,
4283  0x0000000088024240, 0x0000000088424240,
4284  0x0000000088024242, 0x0000000088424242,
4285  0x0000000000000000, 0x0000000000008000,
4286  0x0000000000000010, 0x0000000000008010,
4287  0x0000000000100000, 0x0000000000108000,
4288  0x0000000000100010, 0x0000000000108010,
4289  0x0000000000000008, 0x0000000000008008,
4290  0x0000000000000018, 0x0000000000008018,
4291  0x0000000000100008, 0x0000000000108008,
4292  0x0000000000100018, 0x0000000000108018,
4293  0x0000000000000800, 0x0000000000008800,
4294  0x0000000000000810, 0x0000000000008810,
4295  0x0000000000100800, 0x0000000000108800,
4296  0x0000000000100810, 0x0000000000108810,
4297  0x0000000000000808, 0x0000000000008808,
4298  0x0000000000000818, 0x0000000000008818,
4299  0x0000000000100808, 0x0000000000108808,
4300  0x0000000000100818, 0x0000000000108818,
4301  0x0000000000001000, 0x0000000000009000,
4302  0x0000000000001010, 0x0000000000009010,
4303  0x0000000000101000, 0x0000000000109000,
4304  0x0000000000101010, 0x0000000000109010,
4305  0x0000000000001008, 0x0000000000009008,
4306  0x0000000000001018, 0x0000000000009018,
4307  0x0000000000101008, 0x0000000000109008,
4308  0x0000000000101018, 0x0000000000109018,
4309  0x0000000000001800, 0x0000000000009800,
4310  0x0000000000001810, 0x0000000000009810,
4311  0x0000000000101800, 0x0000000000109800,
4312  0x0000000000101810, 0x0000000000109810,
4313  0x0000000000001808, 0x0000000000009808,
4314  0x0000000000001818, 0x0000000000009818,
4315  0x0000000000101808, 0x0000000000109808,
4316  0x0000000000101818, 0x0000000000109818,
4317  0x0000000002000000, 0x0000000002008000,
4318  0x0000000002000010, 0x0000000002008010,
4319  0x0000000002100000, 0x0000000002108000,
4320  0x0000000002100010, 0x0000000002108010,
4321  0x0000000002000008, 0x0000000002008008,
4322  0x0000000002000018, 0x0000000002008018,
4323  0x0000000002100008, 0x0000000002108008,
4324  0x0000000002100018, 0x0000000002108018,
4325  0x0000000002000800, 0x0000000002008800,
4326  0x0000000002000810, 0x0000000002008810,
4327  0x0000000002100800, 0x0000000002108800,
4328  0x0000000002100810, 0x0000000002108810,
4329  0x0000000002000808, 0x0000000002008808,
4330  0x0000000002000818, 0x0000000002008818,
4331  0x0000000002100808, 0x0000000002108808,
4332  0x0000000002100818, 0x0000000002108818,
4333  0x0000000002001000, 0x0000000002009000,
4334  0x0000000002001010, 0x0000000002009010,
4335  0x0000000002101000, 0x0000000002109000,
4336  0x0000000002101010, 0x0000000002109010,
4337  0x0000000002001008, 0x0000000002009008,
4338  0x0000000002001018, 0x0000000002009018,
4339  0x0000000002101008, 0x0000000002109008,
4340  0x0000000002101018, 0x0000000002109018,
4341  0x0000000002001800, 0x0000000002009800,
4342  0x0000000002001810, 0x0000000002009810,
4343  0x0000000002101800, 0x0000000002109800,
4344  0x0000000002101810, 0x0000000002109810,
4345  0x0000000002001808, 0x0000000002009808,
4346  0x0000000002001818, 0x0000000002009818,
4347  0x0000000002101808, 0x0000000002109808,
4348  0x0000000002101818, 0x0000000002109818,
4349  0x0000000000010000, 0x0000000000018000,
4350  0x0000000000010010, 0x0000000000018010,
4351  0x0000000000110000, 0x0000000000118000,
4352  0x0000000000110010, 0x0000000000118010,
4353  0x0000000000010008, 0x0000000000018008,
4354  0x0000000000010018, 0x0000000000018018,
4355  0x0000000000110008, 0x0000000000118008,
4356  0x0000000000110018, 0x0000000000118018,
4357  0x0000000000010800, 0x0000000000018800,
4358  0x0000000000010810, 0x0000000000018810,
4359  0x0000000000110800, 0x0000000000118800,
4360  0x0000000000110810, 0x0000000000118810,
4361  0x0000000000010808, 0x0000000000018808,
4362  0x0000000000010818, 0x0000000000018818,
4363  0x0000000000110808, 0x0000000000118808,
4364  0x0000000000110818, 0x0000000000118818,
4365  0x0000000000011000, 0x0000000000019000,
4366  0x0000000000011010, 0x0000000000019010,
4367  0x0000000000111000, 0x0000000000119000,
4368  0x0000000000111010, 0x0000000000119010,
4369  0x0000000000011008, 0x0000000000019008,
4370  0x0000000000011018, 0x0000000000019018,
4371  0x0000000000111008, 0x0000000000119008,
4372  0x0000000000111018, 0x0000000000119018,
4373  0x0000000000011800, 0x0000000000019800,
4374  0x0000000000011810, 0x0000000000019810,
4375  0x0000000000111800, 0x0000000000119800,
4376  0x0000000000111810, 0x0000000000119810,
4377  0x0000000000011808, 0x0000000000019808,
4378  0x0000000000011818, 0x0000000000019818,
4379  0x0000000000111808, 0x0000000000119808,
4380  0x0000000000111818, 0x0000000000119818,
4381  0x0000000002010000, 0x0000000002018000,
4382  0x0000000002010010, 0x0000000002018010,
4383  0x0000000002110000, 0x0000000002118000,
4384  0x0000000002110010, 0x0000000002118010,
4385  0x0000000002010008, 0x0000000002018008,
4386  0x0000000002010018, 0x0000000002018018,
4387  0x0000000002110008, 0x0000000002118008,
4388  0x0000000002110018, 0x0000000002118018,
4389  0x0000000002010800, 0x0000000002018800,
4390  0x0000000002010810, 0x0000000002018810,
4391  0x0000000002110800, 0x0000000002118800,
4392  0x0000000002110810, 0x0000000002118810,
4393  0x0000000002010808, 0x0000000002018808,
4394  0x0000000002010818, 0x0000000002018818,
4395  0x0000000002110808, 0x0000000002118808,
4396  0x0000000002110818, 0x0000000002118818,
4397  0x0000000002011000, 0x0000000002019000,
4398  0x0000000002011010, 0x0000000002019010,
4399  0x0000000002111000, 0x0000000002119000,
4400  0x0000000002111010, 0x0000000002119010,
4401  0x0000000002011008, 0x0000000002019008,
4402  0x0000000002011018, 0x0000000002019018,
4403  0x0000000002111008, 0x0000000002119008,
4404  0x0000000002111018, 0x0000000002119018,
4405  0x0000000002011800, 0x0000000002019800,
4406  0x0000000002011810, 0x0000000002019810,
4407  0x0000000002111800, 0x0000000002119800,
4408  0x0000000002111810, 0x0000000002119810,
4409  0x0000000002011808, 0x0000000002019808,
4410  0x0000000002011818, 0x0000000002019818,
4411  0x0000000002111808, 0x0000000002119808,
4412  0x0000000002111818, 0x0000000002119818
4413)
4414
4415# PC1 permutation table
4416PC1_K = (
4417  0x0000000000000000, 0x0000000000000000,
4418  0x0000000008000000, 0x0000000008000000,
4419  0x0000000000080000, 0x0000000000080000,
4420  0x0000000008080000, 0x0000000008080000,
4421  0x0000000000000800, 0x0000000000000800,
4422  0x0000000008000800, 0x0000000008000800,
4423  0x0000000000080800, 0x0000000000080800,
4424  0x0000000008080800, 0x0000000008080800,
4425  0x0000000080000000, 0x0000000080000000,
4426  0x0000000088000000, 0x0000000088000000,
4427  0x0000000080080000, 0x0000000080080000,
4428  0x0000000088080000, 0x0000000088080000,
4429  0x0000000080000800, 0x0000000080000800,
4430  0x0000000088000800, 0x0000000088000800,
4431  0x0000000080080800, 0x0000000080080800,
4432  0x0000000088080800, 0x0000000088080800,
4433  0x0000008000000000, 0x0000008000000000,
4434  0x0000008008000000, 0x0000008008000000,
4435  0x0000008000080000, 0x0000008000080000,
4436  0x0000008008080000, 0x0000008008080000,
4437  0x0000008000000800, 0x0000008000000800,
4438  0x0000008008000800, 0x0000008008000800,
4439  0x0000008000080800, 0x0000008000080800,
4440  0x0000008008080800, 0x0000008008080800,
4441  0x0000008080000000, 0x0000008080000000,
4442  0x0000008088000000, 0x0000008088000000,
4443  0x0000008080080000, 0x0000008080080000,
4444  0x0000008088080000, 0x0000008088080000,
4445  0x0000008080000800, 0x0000008080000800,
4446  0x0000008088000800, 0x0000008088000800,
4447  0x0000008080080800, 0x0000008080080800,
4448  0x0000008088080800, 0x0000008088080800,
4449  0x0000800000000000, 0x0000800000000000,
4450  0x0000800008000000, 0x0000800008000000,
4451  0x0000800000080000, 0x0000800000080000,
4452  0x0000800008080000, 0x0000800008080000,
4453  0x0000800000000800, 0x0000800000000800,
4454  0x0000800008000800, 0x0000800008000800,
4455  0x0000800000080800, 0x0000800000080800,
4456  0x0000800008080800, 0x0000800008080800,
4457  0x0000800080000000, 0x0000800080000000,
4458  0x0000800088000000, 0x0000800088000000,
4459  0x0000800080080000, 0x0000800080080000,
4460  0x0000800088080000, 0x0000800088080000,
4461  0x0000800080000800, 0x0000800080000800,
4462  0x0000800088000800, 0x0000800088000800,
4463  0x0000800080080800, 0x0000800080080800,
4464  0x0000800088080800, 0x0000800088080800,
4465  0x0000808000000000, 0x0000808000000000,
4466  0x0000808008000000, 0x0000808008000000,
4467  0x0000808000080000, 0x0000808000080000,
4468  0x0000808008080000, 0x0000808008080000,
4469  0x0000808000000800, 0x0000808000000800,
4470  0x0000808008000800, 0x0000808008000800,
4471  0x0000808000080800, 0x0000808000080800,
4472  0x0000808008080800, 0x0000808008080800,
4473  0x0000808080000000, 0x0000808080000000,
4474  0x0000808088000000, 0x0000808088000000,
4475  0x0000808080080000, 0x0000808080080000,
4476  0x0000808088080000, 0x0000808088080000,
4477  0x0000808080000800, 0x0000808080000800,
4478  0x0000808088000800, 0x0000808088000800,
4479  0x0000808080080800, 0x0000808080080800,
4480  0x0000808088080800, 0x0000808088080800,
4481  0x0080000000000000, 0x0080000000000000,
4482  0x0080000008000000, 0x0080000008000000,
4483  0x0080000000080000, 0x0080000000080000,
4484  0x0080000008080000, 0x0080000008080000,
4485  0x0080000000000800, 0x0080000000000800,
4486  0x0080000008000800, 0x0080000008000800,
4487  0x0080000000080800, 0x0080000000080800,
4488  0x0080000008080800, 0x0080000008080800,
4489  0x0080000080000000, 0x0080000080000000,
4490  0x0080000088000000, 0x0080000088000000,
4491  0x0080000080080000, 0x0080000080080000,
4492  0x0080000088080000, 0x0080000088080000,
4493  0x0080000080000800, 0x0080000080000800,
4494  0x0080000088000800, 0x0080000088000800,
4495  0x0080000080080800, 0x0080000080080800,
4496  0x0080000088080800, 0x0080000088080800,
4497  0x0080008000000000, 0x0080008000000000,
4498  0x0080008008000000, 0x0080008008000000,
4499  0x0080008000080000, 0x0080008000080000,
4500  0x0080008008080000, 0x0080008008080000,
4501  0x0080008000000800, 0x0080008000000800,
4502  0x0080008008000800, 0x0080008008000800,
4503  0x0080008000080800, 0x0080008000080800,
4504  0x0080008008080800, 0x0080008008080800,
4505  0x0080008080000000, 0x0080008080000000,
4506  0x0080008088000000, 0x0080008088000000,
4507  0x0080008080080000, 0x0080008080080000,
4508  0x0080008088080000, 0x0080008088080000,
4509  0x0080008080000800, 0x0080008080000800,
4510  0x0080008088000800, 0x0080008088000800,
4511  0x0080008080080800, 0x0080008080080800,
4512  0x0080008088080800, 0x0080008088080800,
4513  0x0080800000000000, 0x0080800000000000,
4514  0x0080800008000000, 0x0080800008000000,
4515  0x0080800000080000, 0x0080800000080000,
4516  0x0080800008080000, 0x0080800008080000,
4517  0x0080800000000800, 0x0080800000000800,
4518  0x0080800008000800, 0x0080800008000800,
4519  0x0080800000080800, 0x0080800000080800,
4520  0x0080800008080800, 0x0080800008080800,
4521  0x0080800080000000, 0x0080800080000000,
4522  0x0080800088000000, 0x0080800088000000,
4523  0x0080800080080000, 0x0080800080080000,
4524  0x0080800088080000, 0x0080800088080000,
4525  0x0080800080000800, 0x0080800080000800,
4526  0x0080800088000800, 0x0080800088000800,
4527  0x0080800080080800, 0x0080800080080800,
4528  0x0080800088080800, 0x0080800088080800,
4529  0x0080808000000000, 0x0080808000000000,
4530  0x0080808008000000, 0x0080808008000000,
4531  0x0080808000080000, 0x0080808000080000,
4532  0x0080808008080000, 0x0080808008080000,
4533  0x0080808000000800, 0x0080808000000800,
4534  0x0080808008000800, 0x0080808008000800,
4535  0x0080808000080800, 0x0080808000080800,
4536  0x0080808008080800, 0x0080808008080800,
4537  0x0080808080000000, 0x0080808080000000,
4538  0x0080808088000000, 0x0080808088000000,
4539  0x0080808080080000, 0x0080808080080000,
4540  0x0080808088080000, 0x0080808088080000,
4541  0x0080808080000800, 0x0080808080000800,
4542  0x0080808088000800, 0x0080808088000800,
4543  0x0080808080080800, 0x0080808080080800,
4544  0x0080808088080800, 0x0080808088080800,
4545  0x0000000000000000, 0x0000000000000000,
4546  0x0000000004000000, 0x0000000004000000,
4547  0x0000000000040000, 0x0000000000040000,
4548  0x0000000004040000, 0x0000000004040000,
4549  0x0000000000000400, 0x0000000000000400,
4550  0x0000000004000400, 0x0000000004000400,
4551  0x0000000000040400, 0x0000000000040400,
4552  0x0000000004040400, 0x0000000004040400,
4553  0x0000000040000000, 0x0000000040000000,
4554  0x0000000044000000, 0x0000000044000000,
4555  0x0000000040040000, 0x0000000040040000,
4556  0x0000000044040000, 0x0000000044040000,
4557  0x0000000040000400, 0x0000000040000400,
4558  0x0000000044000400, 0x0000000044000400,
4559  0x0000000040040400, 0x0000000040040400,
4560  0x0000000044040400, 0x0000000044040400,
4561  0x0000004000000000, 0x0000004000000000,
4562  0x0000004004000000, 0x0000004004000000,
4563  0x0000004000040000, 0x0000004000040000,
4564  0x0000004004040000, 0x0000004004040000,
4565  0x0000004000000400, 0x0000004000000400,
4566  0x0000004004000400, 0x0000004004000400,
4567  0x0000004000040400, 0x0000004000040400,
4568  0x0000004004040400, 0x0000004004040400,
4569  0x0000004040000000, 0x0000004040000000,
4570  0x0000004044000000, 0x0000004044000000,
4571  0x0000004040040000, 0x0000004040040000,
4572  0x0000004044040000, 0x0000004044040000,
4573  0x0000004040000400, 0x0000004040000400,
4574  0x0000004044000400, 0x0000004044000400,
4575  0x0000004040040400, 0x0000004040040400,
4576  0x0000004044040400, 0x0000004044040400,
4577  0x0000400000000000, 0x0000400000000000,
4578  0x0000400004000000, 0x0000400004000000,
4579  0x0000400000040000, 0x0000400000040000,
4580  0x0000400004040000, 0x0000400004040000,
4581  0x0000400000000400, 0x0000400000000400,
4582  0x0000400004000400, 0x0000400004000400,
4583  0x0000400000040400, 0x0000400000040400,
4584  0x0000400004040400, 0x0000400004040400,
4585  0x0000400040000000, 0x0000400040000000,
4586  0x0000400044000000, 0x0000400044000000,
4587  0x0000400040040000, 0x0000400040040000,
4588  0x0000400044040000, 0x0000400044040000,
4589  0x0000400040000400, 0x0000400040000400,
4590  0x0000400044000400, 0x0000400044000400,
4591  0x0000400040040400, 0x0000400040040400,
4592  0x0000400044040400, 0x0000400044040400,
4593  0x0000404000000000, 0x0000404000000000,
4594  0x0000404004000000, 0x0000404004000000,
4595  0x0000404000040000, 0x0000404000040000,
4596  0x0000404004040000, 0x0000404004040000,
4597  0x0000404000000400, 0x0000404000000400,
4598  0x0000404004000400, 0x0000404004000400,
4599  0x0000404000040400, 0x0000404000040400,
4600  0x0000404004040400, 0x0000404004040400,
4601  0x0000404040000000, 0x0000404040000000,
4602  0x0000404044000000, 0x0000404044000000,
4603  0x0000404040040000, 0x0000404040040000,
4604  0x0000404044040000, 0x0000404044040000,
4605  0x0000404040000400, 0x0000404040000400,
4606  0x0000404044000400, 0x0000404044000400,
4607  0x0000404040040400, 0x0000404040040400,
4608  0x0000404044040400, 0x0000404044040400,
4609  0x0040000000000000, 0x0040000000000000,
4610  0x0040000004000000, 0x0040000004000000,
4611  0x0040000000040000, 0x0040000000040000,
4612  0x0040000004040000, 0x0040000004040000,
4613  0x0040000000000400, 0x0040000000000400,
4614  0x0040000004000400, 0x0040000004000400,
4615  0x0040000000040400, 0x0040000000040400,
4616  0x0040000004040400, 0x0040000004040400,
4617  0x0040000040000000, 0x0040000040000000,
4618  0x0040000044000000, 0x0040000044000000,
4619  0x0040000040040000, 0x0040000040040000,
4620  0x0040000044040000, 0x0040000044040000,
4621  0x0040000040000400, 0x0040000040000400,
4622  0x0040000044000400, 0x0040000044000400,
4623  0x0040000040040400, 0x0040000040040400,
4624  0x0040000044040400, 0x0040000044040400,
4625  0x0040004000000000, 0x0040004000000000,
4626  0x0040004004000000, 0x0040004004000000,
4627  0x0040004000040000, 0x0040004000040000,
4628  0x0040004004040000, 0x0040004004040000,
4629  0x0040004000000400, 0x0040004000000400,
4630  0x0040004004000400, 0x0040004004000400,
4631  0x0040004000040400, 0x0040004000040400,
4632  0x0040004004040400, 0x0040004004040400,
4633  0x0040004040000000, 0x0040004040000000,
4634  0x0040004044000000, 0x0040004044000000,
4635  0x0040004040040000, 0x0040004040040000,
4636  0x0040004044040000, 0x0040004044040000,
4637  0x0040004040000400, 0x0040004040000400,
4638  0x0040004044000400, 0x0040004044000400,
4639  0x0040004040040400, 0x0040004040040400,
4640  0x0040004044040400, 0x0040004044040400,
4641  0x0040400000000000, 0x0040400000000000,
4642  0x0040400004000000, 0x0040400004000000,
4643  0x0040400000040000, 0x0040400000040000,
4644  0x0040400004040000, 0x0040400004040000,
4645  0x0040400000000400, 0x0040400000000400,
4646  0x0040400004000400, 0x0040400004000400,
4647  0x0040400000040400, 0x0040400000040400,
4648  0x0040400004040400, 0x0040400004040400,
4649  0x0040400040000000, 0x0040400040000000,
4650  0x0040400044000000, 0x0040400044000000,
4651  0x0040400040040000, 0x0040400040040000,
4652  0x0040400044040000, 0x0040400044040000,
4653  0x0040400040000400, 0x0040400040000400,
4654  0x0040400044000400, 0x0040400044000400,
4655  0x0040400040040400, 0x0040400040040400,
4656  0x0040400044040400, 0x0040400044040400,
4657  0x0040404000000000, 0x0040404000000000,
4658  0x0040404004000000, 0x0040404004000000,
4659  0x0040404000040000, 0x0040404000040000,
4660  0x0040404004040000, 0x0040404004040000,
4661  0x0040404000000400, 0x0040404000000400,
4662  0x0040404004000400, 0x0040404004000400,
4663  0x0040404000040400, 0x0040404000040400,
4664  0x0040404004040400, 0x0040404004040400,
4665  0x0040404040000000, 0x0040404040000000,
4666  0x0040404044000000, 0x0040404044000000,
4667  0x0040404040040000, 0x0040404040040000,
4668  0x0040404044040000, 0x0040404044040000,
4669  0x0040404040000400, 0x0040404040000400,
4670  0x0040404044000400, 0x0040404044000400,
4671  0x0040404040040400, 0x0040404040040400,
4672  0x0040404044040400, 0x0040404044040400,
4673  0x0000000000000000, 0x0000000000000000,
4674  0x0000000002000000, 0x0000000002000000,
4675  0x0000000000020000, 0x0000000000020000,
4676  0x0000000002020000, 0x0000000002020000,
4677  0x0000000000000200, 0x0000000000000200,
4678  0x0000000002000200, 0x0000000002000200,
4679  0x0000000000020200, 0x0000000000020200,
4680  0x0000000002020200, 0x0000000002020200,
4681  0x0000000020000000, 0x0000000020000000,
4682  0x0000000022000000, 0x0000000022000000,
4683  0x0000000020020000, 0x0000000020020000,
4684  0x0000000022020000, 0x0000000022020000,
4685  0x0000000020000200, 0x0000000020000200,
4686  0x0000000022000200, 0x0000000022000200,
4687  0x0000000020020200, 0x0000000020020200,
4688  0x0000000022020200, 0x0000000022020200,
4689  0x0000002000000000, 0x0000002000000000,
4690  0x0000002002000000, 0x0000002002000000,
4691  0x0000002000020000, 0x0000002000020000,
4692  0x0000002002020000, 0x0000002002020000,
4693  0x0000002000000200, 0x0000002000000200,
4694  0x0000002002000200, 0x0000002002000200,
4695  0x0000002000020200, 0x0000002000020200,
4696  0x0000002002020200, 0x0000002002020200,
4697  0x0000002020000000, 0x0000002020000000,
4698  0x0000002022000000, 0x0000002022000000,
4699  0x0000002020020000, 0x0000002020020000,
4700  0x0000002022020000, 0x0000002022020000,
4701  0x0000002020000200, 0x0000002020000200,
4702  0x0000002022000200, 0x0000002022000200,
4703  0x0000002020020200, 0x0000002020020200,
4704  0x0000002022020200, 0x0000002022020200,
4705  0x0000200000000000, 0x0000200000000000,
4706  0x0000200002000000, 0x0000200002000000,
4707  0x0000200000020000, 0x0000200000020000,
4708  0x0000200002020000, 0x0000200002020000,
4709  0x0000200000000200, 0x0000200000000200,
4710  0x0000200002000200, 0x0000200002000200,
4711  0x0000200000020200, 0x0000200000020200,
4712  0x0000200002020200, 0x0000200002020200,
4713  0x0000200020000000, 0x0000200020000000,
4714  0x0000200022000000, 0x0000200022000000,
4715  0x0000200020020000, 0x0000200020020000,
4716  0x0000200022020000, 0x0000200022020000,
4717  0x0000200020000200, 0x0000200020000200,
4718  0x0000200022000200, 0x0000200022000200,
4719  0x0000200020020200, 0x0000200020020200,
4720  0x0000200022020200, 0x0000200022020200,
4721  0x0000202000000000, 0x0000202000000000,
4722  0x0000202002000000, 0x0000202002000000,
4723  0x0000202000020000, 0x0000202000020000,
4724  0x0000202002020000, 0x0000202002020000,
4725  0x0000202000000200, 0x0000202000000200,
4726  0x0000202002000200, 0x0000202002000200,
4727  0x0000202000020200, 0x0000202000020200,
4728  0x0000202002020200, 0x0000202002020200,
4729  0x0000202020000000, 0x0000202020000000,
4730  0x0000202022000000, 0x0000202022000000,
4731  0x0000202020020000, 0x0000202020020000,
4732  0x0000202022020000, 0x0000202022020000,
4733  0x0000202020000200, 0x0000202020000200,
4734  0x0000202022000200, 0x0000202022000200,
4735  0x0000202020020200, 0x0000202020020200,
4736  0x0000202022020200, 0x0000202022020200,
4737  0x0020000000000000, 0x0020000000000000,
4738  0x0020000002000000, 0x0020000002000000,
4739  0x0020000000020000, 0x0020000000020000,
4740  0x0020000002020000, 0x0020000002020000,
4741  0x0020000000000200, 0x0020000000000200,
4742  0x0020000002000200, 0x0020000002000200,
4743  0x0020000000020200, 0x0020000000020200,
4744  0x0020000002020200, 0x0020000002020200,
4745  0x0020000020000000, 0x0020000020000000,
4746  0x0020000022000000, 0x0020000022000000,
4747  0x0020000020020000, 0x0020000020020000,
4748  0x0020000022020000, 0x0020000022020000,
4749  0x0020000020000200, 0x0020000020000200,
4750  0x0020000022000200, 0x0020000022000200,
4751  0x0020000020020200, 0x0020000020020200,
4752  0x0020000022020200, 0x0020000022020200,
4753  0x0020002000000000, 0x0020002000000000,
4754  0x0020002002000000, 0x0020002002000000,
4755  0x0020002000020000, 0x0020002000020000,
4756  0x0020002002020000, 0x0020002002020000,
4757  0x0020002000000200, 0x0020002000000200,
4758  0x0020002002000200, 0x0020002002000200,
4759  0x0020002000020200, 0x0020002000020200,
4760  0x0020002002020200, 0x0020002002020200,
4761  0x0020002020000000, 0x0020002020000000,
4762  0x0020002022000000, 0x0020002022000000,
4763  0x0020002020020000, 0x0020002020020000,
4764  0x0020002022020000, 0x0020002022020000,
4765  0x0020002020000200, 0x0020002020000200,
4766  0x0020002022000200, 0x0020002022000200,
4767  0x0020002020020200, 0x0020002020020200,
4768  0x0020002022020200, 0x0020002022020200,
4769  0x0020200000000000, 0x0020200000000000,
4770  0x0020200002000000, 0x0020200002000000,
4771  0x0020200000020000, 0x0020200000020000,
4772  0x0020200002020000, 0x0020200002020000,
4773  0x0020200000000200, 0x0020200000000200,
4774  0x0020200002000200, 0x0020200002000200,
4775  0x0020200000020200, 0x0020200000020200,
4776  0x0020200002020200, 0x0020200002020200,
4777  0x0020200020000000, 0x0020200020000000,
4778  0x0020200022000000, 0x0020200022000000,
4779  0x0020200020020000, 0x0020200020020000,
4780  0x0020200022020000, 0x0020200022020000,
4781  0x0020200020000200, 0x0020200020000200,
4782  0x0020200022000200, 0x0020200022000200,
4783  0x0020200020020200, 0x0020200020020200,
4784  0x0020200022020200, 0x0020200022020200,
4785  0x0020202000000000, 0x0020202000000000,
4786  0x0020202002000000, 0x0020202002000000,
4787  0x0020202000020000, 0x0020202000020000,
4788  0x0020202002020000, 0x0020202002020000,
4789  0x0020202000000200, 0x0020202000000200,
4790  0x0020202002000200, 0x0020202002000200,
4791  0x0020202000020200, 0x0020202000020200,
4792  0x0020202002020200, 0x0020202002020200,
4793  0x0020202020000000, 0x0020202020000000,
4794  0x0020202022000000, 0x0020202022000000,
4795  0x0020202020020000, 0x0020202020020000,
4796  0x0020202022020000, 0x0020202022020000,
4797  0x0020202020000200, 0x0020202020000200,
4798  0x0020202022000200, 0x0020202022000200,
4799  0x0020202020020200, 0x0020202020020200,
4800  0x0020202022020200, 0x0020202022020200,
4801  0x0000000000000000, 0x0000000000000000,
4802  0x0000000001000000, 0x0000000001000000,
4803  0x0000000000010000, 0x0000000000010000,
4804  0x0000000001010000, 0x0000000001010000,
4805  0x0000000000000100, 0x0000000000000100,
4806  0x0000000001000100, 0x0000000001000100,
4807  0x0000000000010100, 0x0000000000010100,
4808  0x0000000001010100, 0x0000000001010100,
4809  0x0000000010000000, 0x0000000010000000,
4810  0x0000000011000000, 0x0000000011000000,
4811  0x0000000010010000, 0x0000000010010000,
4812  0x0000000011010000, 0x0000000011010000,
4813  0x0000000010000100, 0x0000000010000100,
4814  0x0000000011000100, 0x0000000011000100,
4815  0x0000000010010100, 0x0000000010010100,
4816  0x0000000011010100, 0x0000000011010100,
4817  0x0000001000000000, 0x0000001000000000,
4818  0x0000001001000000, 0x0000001001000000,
4819  0x0000001000010000, 0x0000001000010000,
4820  0x0000001001010000, 0x0000001001010000,
4821  0x0000001000000100, 0x0000001000000100,
4822  0x0000001001000100, 0x0000001001000100,
4823  0x0000001000010100, 0x0000001000010100,
4824  0x0000001001010100, 0x0000001001010100,
4825  0x0000001010000000, 0x0000001010000000,
4826  0x0000001011000000, 0x0000001011000000,
4827  0x0000001010010000, 0x0000001010010000,
4828  0x0000001011010000, 0x0000001011010000,
4829  0x0000001010000100, 0x0000001010000100,
4830  0x0000001011000100, 0x0000001011000100,
4831  0x0000001010010100, 0x0000001010010100,
4832  0x0000001011010100, 0x0000001011010100,
4833  0x0000100000000000, 0x0000100000000000,
4834  0x0000100001000000, 0x0000100001000000,
4835  0x0000100000010000, 0x0000100000010000,
4836  0x0000100001010000, 0x0000100001010000,
4837  0x0000100000000100, 0x0000100000000100,
4838  0x0000100001000100, 0x0000100001000100,
4839  0x0000100000010100, 0x0000100000010100,
4840  0x0000100001010100, 0x0000100001010100,
4841  0x0000100010000000, 0x0000100010000000,
4842  0x0000100011000000, 0x0000100011000000,
4843  0x0000100010010000, 0x0000100010010000,
4844  0x0000100011010000, 0x0000100011010000,
4845  0x0000100010000100, 0x0000100010000100,
4846  0x0000100011000100, 0x0000100011000100,
4847  0x0000100010010100, 0x0000100010010100,
4848  0x0000100011010100, 0x0000100011010100,
4849  0x0000101000000000, 0x0000101000000000,
4850  0x0000101001000000, 0x0000101001000000,
4851  0x0000101000010000, 0x0000101000010000,
4852  0x0000101001010000, 0x0000101001010000,
4853  0x0000101000000100, 0x0000101000000100,
4854  0x0000101001000100, 0x0000101001000100,
4855  0x0000101000010100, 0x0000101000010100,
4856  0x0000101001010100, 0x0000101001010100,
4857  0x0000101010000000, 0x0000101010000000,
4858  0x0000101011000000, 0x0000101011000000,
4859  0x0000101010010000, 0x0000101010010000,
4860  0x0000101011010000, 0x0000101011010000,
4861  0x0000101010000100, 0x0000101010000100,
4862  0x0000101011000100, 0x0000101011000100,
4863  0x0000101010010100, 0x0000101010010100,
4864  0x0000101011010100, 0x0000101011010100,
4865  0x0010000000000000, 0x0010000000000000,
4866  0x0010000001000000, 0x0010000001000000,
4867  0x0010000000010000, 0x0010000000010000,
4868  0x0010000001010000, 0x0010000001010000,
4869  0x0010000000000100, 0x0010000000000100,
4870  0x0010000001000100, 0x0010000001000100,
4871  0x0010000000010100, 0x0010000000010100,
4872  0x0010000001010100, 0x0010000001010100,
4873  0x0010000010000000, 0x0010000010000000,
4874  0x0010000011000000, 0x0010000011000000,
4875  0x0010000010010000, 0x0010000010010000,
4876  0x0010000011010000, 0x0010000011010000,
4877  0x0010000010000100, 0x0010000010000100,
4878  0x0010000011000100, 0x0010000011000100,
4879  0x0010000010010100, 0x0010000010010100,
4880  0x0010000011010100, 0x0010000011010100,
4881  0x0010001000000000, 0x0010001000000000,
4882  0x0010001001000000, 0x0010001001000000,
4883  0x0010001000010000, 0x0010001000010000,
4884  0x0010001001010000, 0x0010001001010000,
4885  0x0010001000000100, 0x0010001000000100,
4886  0x0010001001000100, 0x0010001001000100,
4887  0x0010001000010100, 0x0010001000010100,
4888  0x0010001001010100, 0x0010001001010100,
4889  0x0010001010000000, 0x0010001010000000,
4890  0x0010001011000000, 0x0010001011000000,
4891  0x0010001010010000, 0x0010001010010000,
4892  0x0010001011010000, 0x0010001011010000,
4893  0x0010001010000100, 0x0010001010000100,
4894  0x0010001011000100, 0x0010001011000100,
4895  0x0010001010010100, 0x0010001010010100,
4896  0x0010001011010100, 0x0010001011010100,
4897  0x0010100000000000, 0x0010100000000000,
4898  0x0010100001000000, 0x0010100001000000,
4899  0x0010100000010000, 0x0010100000010000,
4900  0x0010100001010000, 0x0010100001010000,
4901  0x0010100000000100, 0x0010100000000100,
4902  0x0010100001000100, 0x0010100001000100,
4903  0x0010100000010100, 0x0010100000010100,
4904  0x0010100001010100, 0x0010100001010100,
4905  0x0010100010000000, 0x0010100010000000,
4906  0x0010100011000000, 0x0010100011000000,
4907  0x0010100010010000, 0x0010100010010000,
4908  0x0010100011010000, 0x0010100011010000,
4909  0x0010100010000100, 0x0010100010000100,
4910  0x0010100011000100, 0x0010100011000100,
4911  0x0010100010010100, 0x0010100010010100,
4912  0x0010100011010100, 0x0010100011010100,
4913  0x0010101000000000, 0x0010101000000000,
4914  0x0010101001000000, 0x0010101001000000,
4915  0x0010101000010000, 0x0010101000010000,
4916  0x0010101001010000, 0x0010101001010000,
4917  0x0010101000000100, 0x0010101000000100,
4918  0x0010101001000100, 0x0010101001000100,
4919  0x0010101000010100, 0x0010101000010100,
4920  0x0010101001010100, 0x0010101001010100,
4921  0x0010101010000000, 0x0010101010000000,
4922  0x0010101011000000, 0x0010101011000000,
4923  0x0010101010010000, 0x0010101010010000,
4924  0x0010101011010000, 0x0010101011010000,
4925  0x0010101010000100, 0x0010101010000100,
4926  0x0010101011000100, 0x0010101011000100,
4927  0x0010101010010100, 0x0010101010010100,
4928  0x0010101011010100, 0x0010101011010100,
4929  0x0000000000000000, 0x0000000000000000,
4930  0x0000000000800000, 0x0000000000800000,
4931  0x0000000000008000, 0x0000000000008000,
4932  0x0000000000808000, 0x0000000000808000,
4933  0x0000000000000080, 0x0000000000000080,
4934  0x0000000000800080, 0x0000000000800080,
4935  0x0000000000008080, 0x0000000000008080,
4936  0x0000000000808080, 0x0000000000808080,
4937  0x0000000000000008, 0x0000000000000008,
4938  0x0000000000800008, 0x0000000000800008,
4939  0x0000000000008008, 0x0000000000008008,
4940  0x0000000000808008, 0x0000000000808008,
4941  0x0000000000000088, 0x0000000000000088,
4942  0x0000000000800088, 0x0000000000800088,
4943  0x0000000000008088, 0x0000000000008088,
4944  0x0000000000808088, 0x0000000000808088,
4945  0x0000000800000000, 0x0000000800000000,
4946  0x0000000800800000, 0x0000000800800000,
4947  0x0000000800008000, 0x0000000800008000,
4948  0x0000000800808000, 0x0000000800808000,
4949  0x0000000800000080, 0x0000000800000080,
4950  0x0000000800800080, 0x0000000800800080,
4951  0x0000000800008080, 0x0000000800008080,
4952  0x0000000800808080, 0x0000000800808080,
4953  0x0000000800000008, 0x0000000800000008,
4954  0x0000000800800008, 0x0000000800800008,
4955  0x0000000800008008, 0x0000000800008008,
4956  0x0000000800808008, 0x0000000800808008,
4957  0x0000000800000088, 0x0000000800000088,
4958  0x0000000800800088, 0x0000000800800088,
4959  0x0000000800008088, 0x0000000800008088,
4960  0x0000000800808088, 0x0000000800808088,
4961  0x0000080000000000, 0x0000080000000000,
4962  0x0000080000800000, 0x0000080000800000,
4963  0x0000080000008000, 0x0000080000008000,
4964  0x0000080000808000, 0x0000080000808000,
4965  0x0000080000000080, 0x0000080000000080,
4966  0x0000080000800080, 0x0000080000800080,
4967  0x0000080000008080, 0x0000080000008080,
4968  0x0000080000808080, 0x0000080000808080,
4969  0x0000080000000008, 0x0000080000000008,
4970  0x0000080000800008, 0x0000080000800008,
4971  0x0000080000008008, 0x0000080000008008,
4972  0x0000080000808008, 0x0000080000808008,
4973  0x0000080000000088, 0x0000080000000088,
4974  0x0000080000800088, 0x0000080000800088,
4975  0x0000080000008088, 0x0000080000008088,
4976  0x0000080000808088, 0x0000080000808088,
4977  0x0000080800000000, 0x0000080800000000,
4978  0x0000080800800000, 0x0000080800800000,
4979  0x0000080800008000, 0x0000080800008000,
4980  0x0000080800808000, 0x0000080800808000,
4981  0x0000080800000080, 0x0000080800000080,
4982  0x0000080800800080, 0x0000080800800080,
4983  0x0000080800008080, 0x0000080800008080,
4984  0x0000080800808080, 0x0000080800808080,
4985  0x0000080800000008, 0x0000080800000008,
4986  0x0000080800800008, 0x0000080800800008,
4987  0x0000080800008008, 0x0000080800008008,
4988  0x0000080800808008, 0x0000080800808008,
4989  0x0000080800000088, 0x0000080800000088,
4990  0x0000080800800088, 0x0000080800800088,
4991  0x0000080800008088, 0x0000080800008088,
4992  0x0000080800808088, 0x0000080800808088,
4993  0x0008000000000000, 0x0008000000000000,
4994  0x0008000000800000, 0x0008000000800000,
4995  0x0008000000008000, 0x0008000000008000,
4996  0x0008000000808000, 0x0008000000808000,
4997  0x0008000000000080, 0x0008000000000080,
4998  0x0008000000800080, 0x0008000000800080,
4999  0x0008000000008080, 0x0008000000008080,
5000  0x0008000000808080, 0x0008000000808080,
5001  0x0008000000000008, 0x0008000000000008,
5002  0x0008000000800008, 0x0008000000800008,
5003  0x0008000000008008, 0x0008000000008008,
5004  0x0008000000808008, 0x0008000000808008,
5005  0x0008000000000088, 0x0008000000000088,
5006  0x0008000000800088, 0x0008000000800088,
5007  0x0008000000008088, 0x0008000000008088,
5008  0x0008000000808088, 0x0008000000808088,
5009  0x0008000800000000, 0x0008000800000000,
5010  0x0008000800800000, 0x0008000800800000,
5011  0x0008000800008000, 0x0008000800008000,
5012  0x0008000800808000, 0x0008000800808000,
5013  0x0008000800000080, 0x0008000800000080,
5014  0x0008000800800080, 0x0008000800800080,
5015  0x0008000800008080, 0x0008000800008080,
5016  0x0008000800808080, 0x0008000800808080,
5017  0x0008000800000008, 0x0008000800000008,
5018  0x0008000800800008, 0x0008000800800008,
5019  0x0008000800008008, 0x0008000800008008,
5020  0x0008000800808008, 0x0008000800808008,
5021  0x0008000800000088, 0x0008000800000088,
5022  0x0008000800800088, 0x0008000800800088,
5023  0x0008000800008088, 0x0008000800008088,
5024  0x0008000800808088, 0x0008000800808088,
5025  0x0008080000000000, 0x0008080000000000,
5026  0x0008080000800000, 0x0008080000800000,
5027  0x0008080000008000, 0x0008080000008000,
5028  0x0008080000808000, 0x0008080000808000,
5029  0x0008080000000080, 0x0008080000000080,
5030  0x0008080000800080, 0x0008080000800080,
5031  0x0008080000008080, 0x0008080000008080,
5032  0x0008080000808080, 0x0008080000808080,
5033  0x0008080000000008, 0x0008080000000008,
5034  0x0008080000800008, 0x0008080000800008,
5035  0x0008080000008008, 0x0008080000008008,
5036  0x0008080000808008, 0x0008080000808008,
5037  0x0008080000000088, 0x0008080000000088,
5038  0x0008080000800088, 0x0008080000800088,
5039  0x0008080000008088, 0x0008080000008088,
5040  0x0008080000808088, 0x0008080000808088,
5041  0x0008080800000000, 0x0008080800000000,
5042  0x0008080800800000, 0x0008080800800000,
5043  0x0008080800008000, 0x0008080800008000,
5044  0x0008080800808000, 0x0008080800808000,
5045  0x0008080800000080, 0x0008080800000080,
5046  0x0008080800800080, 0x0008080800800080,
5047  0x0008080800008080, 0x0008080800008080,
5048  0x0008080800808080, 0x0008080800808080,
5049  0x0008080800000008, 0x0008080800000008,
5050  0x0008080800800008, 0x0008080800800008,
5051  0x0008080800008008, 0x0008080800008008,
5052  0x0008080800808008, 0x0008080800808008,
5053  0x0008080800000088, 0x0008080800000088,
5054  0x0008080800800088, 0x0008080800800088,
5055  0x0008080800008088, 0x0008080800008088,
5056  0x0008080800808088, 0x0008080800808088,
5057  0x0000000000000000, 0x0000000000000000,
5058  0x0000000000400000, 0x0000000000400000,
5059  0x0000000000004000, 0x0000000000004000,
5060  0x0000000000404000, 0x0000000000404000,
5061  0x0000000000000040, 0x0000000000000040,
5062  0x0000000000400040, 0x0000000000400040,
5063  0x0000000000004040, 0x0000000000004040,
5064  0x0000000000404040, 0x0000000000404040,
5065  0x0000000000000004, 0x0000000000000004,
5066  0x0000000000400004, 0x0000000000400004,
5067  0x0000000000004004, 0x0000000000004004,
5068  0x0000000000404004, 0x0000000000404004,
5069  0x0000000000000044, 0x0000000000000044,
5070  0x0000000000400044, 0x0000000000400044,
5071  0x0000000000004044, 0x0000000000004044,
5072  0x0000000000404044, 0x0000000000404044,
5073  0x0000000400000000, 0x0000000400000000,
5074  0x0000000400400000, 0x0000000400400000,
5075  0x0000000400004000, 0x0000000400004000,
5076  0x0000000400404000, 0x0000000400404000,
5077  0x0000000400000040, 0x0000000400000040,
5078  0x0000000400400040, 0x0000000400400040,
5079  0x0000000400004040, 0x0000000400004040,
5080  0x0000000400404040, 0x0000000400404040,
5081  0x0000000400000004, 0x0000000400000004,
5082  0x0000000400400004, 0x0000000400400004,
5083  0x0000000400004004, 0x0000000400004004,
5084  0x0000000400404004, 0x0000000400404004,
5085  0x0000000400000044, 0x0000000400000044,
5086  0x0000000400400044, 0x0000000400400044,
5087  0x0000000400004044, 0x0000000400004044,
5088  0x0000000400404044, 0x0000000400404044,
5089  0x0000040000000000, 0x0000040000000000,
5090  0x0000040000400000, 0x0000040000400000,
5091  0x0000040000004000, 0x0000040000004000,
5092  0x0000040000404000, 0x0000040000404000,
5093  0x0000040000000040, 0x0000040000000040,
5094  0x0000040000400040, 0x0000040000400040,
5095  0x0000040000004040, 0x0000040000004040,
5096  0x0000040000404040, 0x0000040000404040,
5097  0x0000040000000004, 0x0000040000000004,
5098  0x0000040000400004, 0x0000040000400004,
5099  0x0000040000004004, 0x0000040000004004,
5100  0x0000040000404004, 0x0000040000404004,
5101  0x0000040000000044, 0x0000040000000044,
5102  0x0000040000400044, 0x0000040000400044,
5103  0x0000040000004044, 0x0000040000004044,
5104  0x0000040000404044, 0x0000040000404044,
5105  0x0000040400000000, 0x0000040400000000,
5106  0x0000040400400000, 0x0000040400400000,
5107  0x0000040400004000, 0x0000040400004000,
5108  0x0000040400404000, 0x0000040400404000,
5109  0x0000040400000040, 0x0000040400000040,
5110  0x0000040400400040, 0x0000040400400040,
5111  0x0000040400004040, 0x0000040400004040,
5112  0x0000040400404040, 0x0000040400404040,
5113  0x0000040400000004, 0x0000040400000004,
5114  0x0000040400400004, 0x0000040400400004,
5115  0x0000040400004004, 0x0000040400004004,
5116  0x0000040400404004, 0x0000040400404004,
5117  0x0000040400000044, 0x0000040400000044,
5118  0x0000040400400044, 0x0000040400400044,
5119  0x0000040400004044, 0x0000040400004044,
5120  0x0000040400404044, 0x0000040400404044,
5121  0x0004000000000000, 0x0004000000000000,
5122  0x0004000000400000, 0x0004000000400000,
5123  0x0004000000004000, 0x0004000000004000,
5124  0x0004000000404000, 0x0004000000404000,
5125  0x0004000000000040, 0x0004000000000040,
5126  0x0004000000400040, 0x0004000000400040,
5127  0x0004000000004040, 0x0004000000004040,
5128  0x0004000000404040, 0x0004000000404040,
5129  0x0004000000000004, 0x0004000000000004,
5130  0x0004000000400004, 0x0004000000400004,
5131  0x0004000000004004, 0x0004000000004004,
5132  0x0004000000404004, 0x0004000000404004,
5133  0x0004000000000044, 0x0004000000000044,
5134  0x0004000000400044, 0x0004000000400044,
5135  0x0004000000004044, 0x0004000000004044,
5136  0x0004000000404044, 0x0004000000404044,
5137  0x0004000400000000, 0x0004000400000000,
5138  0x0004000400400000, 0x0004000400400000,
5139  0x0004000400004000, 0x0004000400004000,
5140  0x0004000400404000, 0x0004000400404000,
5141  0x0004000400000040, 0x0004000400000040,
5142  0x0004000400400040, 0x0004000400400040,
5143  0x0004000400004040, 0x0004000400004040,
5144  0x0004000400404040, 0x0004000400404040,
5145  0x0004000400000004, 0x0004000400000004,
5146  0x0004000400400004, 0x0004000400400004,
5147  0x0004000400004004, 0x0004000400004004,
5148  0x0004000400404004, 0x0004000400404004,
5149  0x0004000400000044, 0x0004000400000044,
5150  0x0004000400400044, 0x0004000400400044,
5151  0x0004000400004044, 0x0004000400004044,
5152  0x0004000400404044, 0x0004000400404044,
5153  0x0004040000000000, 0x0004040000000000,
5154  0x0004040000400000, 0x0004040000400000,
5155  0x0004040000004000, 0x0004040000004000,
5156  0x0004040000404000, 0x0004040000404000,
5157  0x0004040000000040, 0x0004040000000040,
5158  0x0004040000400040, 0x0004040000400040,
5159  0x0004040000004040, 0x0004040000004040,
5160  0x0004040000404040, 0x0004040000404040,
5161  0x0004040000000004, 0x0004040000000004,
5162  0x0004040000400004, 0x0004040000400004,
5163  0x0004040000004004, 0x0004040000004004,
5164  0x0004040000404004, 0x0004040000404004,
5165  0x0004040000000044, 0x0004040000000044,
5166  0x0004040000400044, 0x0004040000400044,
5167  0x0004040000004044, 0x0004040000004044,
5168  0x0004040000404044, 0x0004040000404044,
5169  0x0004040400000000, 0x0004040400000000,
5170  0x0004040400400000, 0x0004040400400000,
5171  0x0004040400004000, 0x0004040400004000,
5172  0x0004040400404000, 0x0004040400404000,
5173  0x0004040400000040, 0x0004040400000040,
5174  0x0004040400400040, 0x0004040400400040,
5175  0x0004040400004040, 0x0004040400004040,
5176  0x0004040400404040, 0x0004040400404040,
5177  0x0004040400000004, 0x0004040400000004,
5178  0x0004040400400004, 0x0004040400400004,
5179  0x0004040400004004, 0x0004040400004004,
5180  0x0004040400404004, 0x0004040400404004,
5181  0x0004040400000044, 0x0004040400000044,
5182  0x0004040400400044, 0x0004040400400044,
5183  0x0004040400004044, 0x0004040400004044,
5184  0x0004040400404044, 0x0004040400404044,
5185  0x0000000000000000, 0x0000000000000000,
5186  0x0000000000200000, 0x0000000000200000,
5187  0x0000000000002000, 0x0000000000002000,
5188  0x0000000000202000, 0x0000000000202000,
5189  0x0000000000000020, 0x0000000000000020,
5190  0x0000000000200020, 0x0000000000200020,
5191  0x0000000000002020, 0x0000000000002020,
5192  0x0000000000202020, 0x0000000000202020,
5193  0x0000000000000002, 0x0000000000000002,
5194  0x0000000000200002, 0x0000000000200002,
5195  0x0000000000002002, 0x0000000000002002,
5196  0x0000000000202002, 0x0000000000202002,
5197  0x0000000000000022, 0x0000000000000022,
5198  0x0000000000200022, 0x0000000000200022,
5199  0x0000000000002022, 0x0000000000002022,
5200  0x0000000000202022, 0x0000000000202022,
5201  0x0000000200000000, 0x0000000200000000,
5202  0x0000000200200000, 0x0000000200200000,
5203  0x0000000200002000, 0x0000000200002000,
5204  0x0000000200202000, 0x0000000200202000,
5205  0x0000000200000020, 0x0000000200000020,
5206  0x0000000200200020, 0x0000000200200020,
5207  0x0000000200002020, 0x0000000200002020,
5208  0x0000000200202020, 0x0000000200202020,
5209  0x0000000200000002, 0x0000000200000002,
5210  0x0000000200200002, 0x0000000200200002,
5211  0x0000000200002002, 0x0000000200002002,
5212  0x0000000200202002, 0x0000000200202002,
5213  0x0000000200000022, 0x0000000200000022,
5214  0x0000000200200022, 0x0000000200200022,
5215  0x0000000200002022, 0x0000000200002022,
5216  0x0000000200202022, 0x0000000200202022,
5217  0x0000020000000000, 0x0000020000000000,
5218  0x0000020000200000, 0x0000020000200000,
5219  0x0000020000002000, 0x0000020000002000,
5220  0x0000020000202000, 0x0000020000202000,
5221  0x0000020000000020, 0x0000020000000020,
5222  0x0000020000200020, 0x0000020000200020,
5223  0x0000020000002020, 0x0000020000002020,
5224  0x0000020000202020, 0x0000020000202020,
5225  0x0000020000000002, 0x0000020000000002,
5226  0x0000020000200002, 0x0000020000200002,
5227  0x0000020000002002, 0x0000020000002002,
5228  0x0000020000202002, 0x0000020000202002,
5229  0x0000020000000022, 0x0000020000000022,
5230  0x0000020000200022, 0x0000020000200022,
5231  0x0000020000002022, 0x0000020000002022,
5232  0x0000020000202022, 0x0000020000202022,
5233  0x0000020200000000, 0x0000020200000000,
5234  0x0000020200200000, 0x0000020200200000,
5235  0x0000020200002000, 0x0000020200002000,
5236  0x0000020200202000, 0x0000020200202000,
5237  0x0000020200000020, 0x0000020200000020,
5238  0x0000020200200020, 0x0000020200200020,
5239  0x0000020200002020, 0x0000020200002020,
5240  0x0000020200202020, 0x0000020200202020,
5241  0x0000020200000002, 0x0000020200000002,
5242  0x0000020200200002, 0x0000020200200002,
5243  0x0000020200002002, 0x0000020200002002,
5244  0x0000020200202002, 0x0000020200202002,
5245  0x0000020200000022, 0x0000020200000022,
5246  0x0000020200200022, 0x0000020200200022,
5247  0x0000020200002022, 0x0000020200002022,
5248  0x0000020200202022, 0x0000020200202022,
5249  0x0002000000000000, 0x0002000000000000,
5250  0x0002000000200000, 0x0002000000200000,
5251  0x0002000000002000, 0x0002000000002000,
5252  0x0002000000202000, 0x0002000000202000,
5253  0x0002000000000020, 0x0002000000000020,
5254  0x0002000000200020, 0x0002000000200020,
5255  0x0002000000002020, 0x0002000000002020,
5256  0x0002000000202020, 0x0002000000202020,
5257  0x0002000000000002, 0x0002000000000002,
5258  0x0002000000200002, 0x0002000000200002,
5259  0x0002000000002002, 0x0002000000002002,
5260  0x0002000000202002, 0x0002000000202002,
5261  0x0002000000000022, 0x0002000000000022,
5262  0x0002000000200022, 0x0002000000200022,
5263  0x0002000000002022, 0x0002000000002022,
5264  0x0002000000202022, 0x0002000000202022,
5265  0x0002000200000000, 0x0002000200000000,
5266  0x0002000200200000, 0x0002000200200000,
5267  0x0002000200002000, 0x0002000200002000,
5268  0x0002000200202000, 0x0002000200202000,
5269  0x0002000200000020, 0x0002000200000020,
5270  0x0002000200200020, 0x0002000200200020,
5271  0x0002000200002020, 0x0002000200002020,
5272  0x0002000200202020, 0x0002000200202020,
5273  0x0002000200000002, 0x0002000200000002,
5274  0x0002000200200002, 0x0002000200200002,
5275  0x0002000200002002, 0x0002000200002002,
5276  0x0002000200202002, 0x0002000200202002,
5277  0x0002000200000022, 0x0002000200000022,
5278  0x0002000200200022, 0x0002000200200022,
5279  0x0002000200002022, 0x0002000200002022,
5280  0x0002000200202022, 0x0002000200202022,
5281  0x0002020000000000, 0x0002020000000000,
5282  0x0002020000200000, 0x0002020000200000,
5283  0x0002020000002000, 0x0002020000002000,
5284  0x0002020000202000, 0x0002020000202000,
5285  0x0002020000000020, 0x0002020000000020,
5286  0x0002020000200020, 0x0002020000200020,
5287  0x0002020000002020, 0x0002020000002020,
5288  0x0002020000202020, 0x0002020000202020,
5289  0x0002020000000002, 0x0002020000000002,
5290  0x0002020000200002, 0x0002020000200002,
5291  0x0002020000002002, 0x0002020000002002,
5292  0x0002020000202002, 0x0002020000202002,
5293  0x0002020000000022, 0x0002020000000022,
5294  0x0002020000200022, 0x0002020000200022,
5295  0x0002020000002022, 0x0002020000002022,
5296  0x0002020000202022, 0x0002020000202022,
5297  0x0002020200000000, 0x0002020200000000,
5298  0x0002020200200000, 0x0002020200200000,
5299  0x0002020200002000, 0x0002020200002000,
5300  0x0002020200202000, 0x0002020200202000,
5301  0x0002020200000020, 0x0002020200000020,
5302  0x0002020200200020, 0x0002020200200020,
5303  0x0002020200002020, 0x0002020200002020,
5304  0x0002020200202020, 0x0002020200202020,
5305  0x0002020200000002, 0x0002020200000002,
5306  0x0002020200200002, 0x0002020200200002,
5307  0x0002020200002002, 0x0002020200002002,
5308  0x0002020200202002, 0x0002020200202002,
5309  0x0002020200000022, 0x0002020200000022,
5310  0x0002020200200022, 0x0002020200200022,
5311  0x0002020200002022, 0x0002020200002022,
5312  0x0002020200202022, 0x0002020200202022,
5313  0x0000000000000000, 0x0000000000000000,
5314  0x0000000000100000, 0x0000000000100000,
5315  0x0000000000001000, 0x0000000000001000,
5316  0x0000000000101000, 0x0000000000101000,
5317  0x0000000000000010, 0x0000000000000010,
5318  0x0000000000100010, 0x0000000000100010,
5319  0x0000000000001010, 0x0000000000001010,
5320  0x0000000000101010, 0x0000000000101010,
5321  0x0000000000000001, 0x0000000000000001,
5322  0x0000000000100001, 0x0000000000100001,
5323  0x0000000000001001, 0x0000000000001001,
5324  0x0000000000101001, 0x0000000000101001,
5325  0x0000000000000011, 0x0000000000000011,
5326  0x0000000000100011, 0x0000000000100011,
5327  0x0000000000001011, 0x0000000000001011,
5328  0x0000000000101011, 0x0000000000101011,
5329  0x0000000100000000, 0x0000000100000000,
5330  0x0000000100100000, 0x0000000100100000,
5331  0x0000000100001000, 0x0000000100001000,
5332  0x0000000100101000, 0x0000000100101000,
5333  0x0000000100000010, 0x0000000100000010,
5334  0x0000000100100010, 0x0000000100100010,
5335  0x0000000100001010, 0x0000000100001010,
5336  0x0000000100101010, 0x0000000100101010,
5337  0x0000000100000001, 0x0000000100000001,
5338  0x0000000100100001, 0x0000000100100001,
5339  0x0000000100001001, 0x0000000100001001,
5340  0x0000000100101001, 0x0000000100101001,
5341  0x0000000100000011, 0x0000000100000011,
5342  0x0000000100100011, 0x0000000100100011,
5343  0x0000000100001011, 0x0000000100001011,
5344  0x0000000100101011, 0x0000000100101011,
5345  0x0000010000000000, 0x0000010000000000,
5346  0x0000010000100000, 0x0000010000100000,
5347  0x0000010000001000, 0x0000010000001000,
5348  0x0000010000101000, 0x0000010000101000,
5349  0x0000010000000010, 0x0000010000000010,
5350  0x0000010000100010, 0x0000010000100010,
5351  0x0000010000001010, 0x0000010000001010,
5352  0x0000010000101010, 0x0000010000101010,
5353  0x0000010000000001, 0x0000010000000001,
5354  0x0000010000100001, 0x0000010000100001,
5355  0x0000010000001001, 0x0000010000001001,
5356  0x0000010000101001, 0x0000010000101001,
5357  0x0000010000000011, 0x0000010000000011,
5358  0x0000010000100011, 0x0000010000100011,
5359  0x0000010000001011, 0x0000010000001011,
5360  0x0000010000101011, 0x0000010000101011,
5361  0x0000010100000000, 0x0000010100000000,
5362  0x0000010100100000, 0x0000010100100000,
5363  0x0000010100001000, 0x0000010100001000,
5364  0x0000010100101000, 0x0000010100101000,
5365  0x0000010100000010, 0x0000010100000010,
5366  0x0000010100100010, 0x0000010100100010,
5367  0x0000010100001010, 0x0000010100001010,
5368  0x0000010100101010, 0x0000010100101010,
5369  0x0000010100000001, 0x0000010100000001,
5370  0x0000010100100001, 0x0000010100100001,
5371  0x0000010100001001, 0x0000010100001001,
5372  0x0000010100101001, 0x0000010100101001,
5373  0x0000010100000011, 0x0000010100000011,
5374  0x0000010100100011, 0x0000010100100011,
5375  0x0000010100001011, 0x0000010100001011,
5376  0x0000010100101011, 0x0000010100101011,
5377  0x0001000000000000, 0x0001000000000000,
5378  0x0001000000100000, 0x0001000000100000,
5379  0x0001000000001000, 0x0001000000001000,
5380  0x0001000000101000, 0x0001000000101000,
5381  0x0001000000000010, 0x0001000000000010,
5382  0x0001000000100010, 0x0001000000100010,
5383  0x0001000000001010, 0x0001000000001010,
5384  0x0001000000101010, 0x0001000000101010,
5385  0x0001000000000001, 0x0001000000000001,
5386  0x0001000000100001, 0x0001000000100001,
5387  0x0001000000001001, 0x0001000000001001,
5388  0x0001000000101001, 0x0001000000101001,
5389  0x0001000000000011, 0x0001000000000011,
5390  0x0001000000100011, 0x0001000000100011,
5391  0x0001000000001011, 0x0001000000001011,
5392  0x0001000000101011, 0x0001000000101011,
5393  0x0001000100000000, 0x0001000100000000,
5394  0x0001000100100000, 0x0001000100100000,
5395  0x0001000100001000, 0x0001000100001000,
5396  0x0001000100101000, 0x0001000100101000,
5397  0x0001000100000010, 0x0001000100000010,
5398  0x0001000100100010, 0x0001000100100010,
5399  0x0001000100001010, 0x0001000100001010,
5400  0x0001000100101010, 0x0001000100101010,
5401  0x0001000100000001, 0x0001000100000001,
5402  0x0001000100100001, 0x0001000100100001,
5403  0x0001000100001001, 0x0001000100001001,
5404  0x0001000100101001, 0x0001000100101001,
5405  0x0001000100000011, 0x0001000100000011,
5406  0x0001000100100011, 0x0001000100100011,
5407  0x0001000100001011, 0x0001000100001011,
5408  0x0001000100101011, 0x0001000100101011,
5409  0x0001010000000000, 0x0001010000000000,
5410  0x0001010000100000, 0x0001010000100000,
5411  0x0001010000001000, 0x0001010000001000,
5412  0x0001010000101000, 0x0001010000101000,
5413  0x0001010000000010, 0x0001010000000010,
5414  0x0001010000100010, 0x0001010000100010,
5415  0x0001010000001010, 0x0001010000001010,
5416  0x0001010000101010, 0x0001010000101010,
5417  0x0001010000000001, 0x0001010000000001,
5418  0x0001010000100001, 0x0001010000100001,
5419  0x0001010000001001, 0x0001010000001001,
5420  0x0001010000101001, 0x0001010000101001,
5421  0x0001010000000011, 0x0001010000000011,
5422  0x0001010000100011, 0x0001010000100011,
5423  0x0001010000001011, 0x0001010000001011,
5424  0x0001010000101011, 0x0001010000101011,
5425  0x0001010100000000, 0x0001010100000000,
5426  0x0001010100100000, 0x0001010100100000,
5427  0x0001010100001000, 0x0001010100001000,
5428  0x0001010100101000, 0x0001010100101000,
5429  0x0001010100000010, 0x0001010100000010,
5430  0x0001010100100010, 0x0001010100100010,
5431  0x0001010100001010, 0x0001010100001010,
5432  0x0001010100101010, 0x0001010100101010,
5433  0x0001010100000001, 0x0001010100000001,
5434  0x0001010100100001, 0x0001010100100001,
5435  0x0001010100001001, 0x0001010100001001,
5436  0x0001010100101001, 0x0001010100101001,
5437  0x0001010100000011, 0x0001010100000011,
5438  0x0001010100100011, 0x0001010100100011,
5439  0x0001010100001011, 0x0001010100001011,
5440  0x0001010100101011, 0x0001010100101011
5441)
5442
5443# Inverse PC1 permutation table
5444N_PC1_K = (
5445  0x0000000000000000, 0x1000000000000000,
5446  0x0010000000000000, 0x1010000000000000,
5447  0x0000100000000000, 0x1000100000000000,
5448  0x0010100000000000, 0x1010100000000000,
5449  0x0000001000000000, 0x1000001000000000,
5450  0x0010001000000000, 0x1010001000000000,
5451  0x0000101000000000, 0x1000101000000000,
5452  0x0010101000000000, 0x1010101000000000,
5453  0x0800000000000000, 0x1800000000000000,
5454  0x0810000000000000, 0x1810000000000000,
5455  0x0800100000000000, 0x1800100000000000,
5456  0x0810100000000000, 0x1810100000000000,
5457  0x0800001000000000, 0x1800001000000000,
5458  0x0810001000000000, 0x1810001000000000,
5459  0x0800101000000000, 0x1800101000000000,
5460  0x0810101000000000, 0x1810101000000000,
5461  0x0008000000000000, 0x1008000000000000,
5462  0x0018000000000000, 0x1018000000000000,
5463  0x0008100000000000, 0x1008100000000000,
5464  0x0018100000000000, 0x1018100000000000,
5465  0x0008001000000000, 0x1008001000000000,
5466  0x0018001000000000, 0x1018001000000000,
5467  0x0008101000000000, 0x1008101000000000,
5468  0x0018101000000000, 0x1018101000000000,
5469  0x0808000000000000, 0x1808000000000000,
5470  0x0818000000000000, 0x1818000000000000,
5471  0x0808100000000000, 0x1808100000000000,
5472  0x0818100000000000, 0x1818100000000000,
5473  0x0808001000000000, 0x1808001000000000,
5474  0x0818001000000000, 0x1818001000000000,
5475  0x0808101000000000, 0x1808101000000000,
5476  0x0818101000000000, 0x1818101000000000,
5477  0x0000080000000000, 0x1000080000000000,
5478  0x0010080000000000, 0x1010080000000000,
5479  0x0000180000000000, 0x1000180000000000,
5480  0x0010180000000000, 0x1010180000000000,
5481  0x0000081000000000, 0x1000081000000000,
5482  0x0010081000000000, 0x1010081000000000,
5483  0x0000181000000000, 0x1000181000000000,
5484  0x0010181000000000, 0x1010181000000000,
5485  0x0800080000000000, 0x1800080000000000,
5486  0x0810080000000000, 0x1810080000000000,
5487  0x0800180000000000, 0x1800180000000000,
5488  0x0810180000000000, 0x1810180000000000,
5489  0x0800081000000000, 0x1800081000000000,
5490  0x0810081000000000, 0x1810081000000000,
5491  0x0800181000000000, 0x1800181000000000,
5492  0x0810181000000000, 0x1810181000000000,
5493  0x0008080000000000, 0x1008080000000000,
5494  0x0018080000000000, 0x1018080000000000,
5495  0x0008180000000000, 0x1008180000000000,
5496  0x0018180000000000, 0x1018180000000000,
5497  0x0008081000000000, 0x1008081000000000,
5498  0x0018081000000000, 0x1018081000000000,
5499  0x0008181000000000, 0x1008181000000000,
5500  0x0018181000000000, 0x1018181000000000,
5501  0x0808080000000000, 0x1808080000000000,
5502  0x0818080000000000, 0x1818080000000000,
5503  0x0808180000000000, 0x1808180000000000,
5504  0x0818180000000000, 0x1818180000000000,
5505  0x0808081000000000, 0x1808081000000000,
5506  0x0818081000000000, 0x1818081000000000,
5507  0x0808181000000000, 0x1808181000000000,
5508  0x0818181000000000, 0x1818181000000000,
5509  0x0000000800000000, 0x1000000800000000,
5510  0x0010000800000000, 0x1010000800000000,
5511  0x0000100800000000, 0x1000100800000000,
5512  0x0010100800000000, 0x1010100800000000,
5513  0x0000001800000000, 0x1000001800000000,
5514  0x0010001800000000, 0x1010001800000000,
5515  0x0000101800000000, 0x1000101800000000,
5516  0x0010101800000000, 0x1010101800000000,
5517  0x0800000800000000, 0x1800000800000000,
5518  0x0810000800000000, 0x1810000800000000,
5519  0x0800100800000000, 0x1800100800000000,
5520  0x0810100800000000, 0x1810100800000000,
5521  0x0800001800000000, 0x1800001800000000,
5522  0x0810001800000000, 0x1810001800000000,
5523  0x0800101800000000, 0x1800101800000000,
5524  0x0810101800000000, 0x1810101800000000,
5525  0x0008000800000000, 0x1008000800000000,
5526  0x0018000800000000, 0x1018000800000000,
5527  0x0008100800000000, 0x1008100800000000,
5528  0x0018100800000000, 0x1018100800000000,
5529  0x0008001800000000, 0x1008001800000000,
5530  0x0018001800000000, 0x1018001800000000,
5531  0x0008101800000000, 0x1008101800000000,
5532  0x0018101800000000, 0x1018101800000000,
5533  0x0808000800000000, 0x1808000800000000,
5534  0x0818000800000000, 0x1818000800000000,
5535  0x0808100800000000, 0x1808100800000000,
5536  0x0818100800000000, 0x1818100800000000,
5537  0x0808001800000000, 0x1808001800000000,
5538  0x0818001800000000, 0x1818001800000000,
5539  0x0808101800000000, 0x1808101800000000,
5540  0x0818101800000000, 0x1818101800000000,
5541  0x0000080800000000, 0x1000080800000000,
5542  0x0010080800000000, 0x1010080800000000,
5543  0x0000180800000000, 0x1000180800000000,
5544  0x0010180800000000, 0x1010180800000000,
5545  0x0000081800000000, 0x1000081800000000,
5546  0x0010081800000000, 0x1010081800000000,
5547  0x0000181800000000, 0x1000181800000000,
5548  0x0010181800000000, 0x1010181800000000,
5549  0x0800080800000000, 0x1800080800000000,
5550  0x0810080800000000, 0x1810080800000000,
5551  0x0800180800000000, 0x1800180800000000,
5552  0x0810180800000000, 0x1810180800000000,
5553  0x0800081800000000, 0x1800081800000000,
5554  0x0810081800000000, 0x1810081800000000,
5555  0x0800181800000000, 0x1800181800000000,
5556  0x0810181800000000, 0x1810181800000000,
5557  0x0008080800000000, 0x1008080800000000,
5558  0x0018080800000000, 0x1018080800000000,
5559  0x0008180800000000, 0x1008180800000000,
5560  0x0018180800000000, 0x1018180800000000,
5561  0x0008081800000000, 0x1008081800000000,
5562  0x0018081800000000, 0x1018081800000000,
5563  0x0008181800000000, 0x1008181800000000,
5564  0x0018181800000000, 0x1018181800000000,
5565  0x0808080800000000, 0x1808080800000000,
5566  0x0818080800000000, 0x1818080800000000,
5567  0x0808180800000000, 0x1808180800000000,
5568  0x0818180800000000, 0x1818180800000000,
5569  0x0808081800000000, 0x1808081800000000,
5570  0x0818081800000000, 0x1818081800000000,
5571  0x0808181800000000, 0x1808181800000000,
5572  0x0818181800000000, 0x1818181800000000,
5573  0x0000000000000000, 0x0000000008000000,
5574  0x0000000000080000, 0x0000000008080000,
5575  0x0000000000000800, 0x0000000008000800,
5576  0x0000000000080800, 0x0000000008080800,
5577  0x0000000000000008, 0x0000000008000008,
5578  0x0000000000080008, 0x0000000008080008,
5579  0x0000000000000808, 0x0000000008000808,
5580  0x0000000000080808, 0x0000000008080808,
5581  0x0400000000000000, 0x0400000008000000,
5582  0x0400000000080000, 0x0400000008080000,
5583  0x0400000000000800, 0x0400000008000800,
5584  0x0400000000080800, 0x0400000008080800,
5585  0x0400000000000008, 0x0400000008000008,
5586  0x0400000000080008, 0x0400000008080008,
5587  0x0400000000000808, 0x0400000008000808,
5588  0x0400000000080808, 0x0400000008080808,
5589  0x0004000000000000, 0x0004000008000000,
5590  0x0004000000080000, 0x0004000008080000,
5591  0x0004000000000800, 0x0004000008000800,
5592  0x0004000000080800, 0x0004000008080800,
5593  0x0004000000000008, 0x0004000008000008,
5594  0x0004000000080008, 0x0004000008080008,
5595  0x0004000000000808, 0x0004000008000808,
5596  0x0004000000080808, 0x0004000008080808,
5597  0x0404000000000000, 0x0404000008000000,
5598  0x0404000000080000, 0x0404000008080000,
5599  0x0404000000000800, 0x0404000008000800,
5600  0x0404000000080800, 0x0404000008080800,
5601  0x0404000000000008, 0x0404000008000008,
5602  0x0404000000080008, 0x0404000008080008,
5603  0x0404000000000808, 0x0404000008000808,
5604  0x0404000000080808, 0x0404000008080808,
5605  0x0000040000000000, 0x0000040008000000,
5606  0x0000040000080000, 0x0000040008080000,
5607  0x0000040000000800, 0x0000040008000800,
5608  0x0000040000080800, 0x0000040008080800,
5609  0x0000040000000008, 0x0000040008000008,
5610  0x0000040000080008, 0x0000040008080008,
5611  0x0000040000000808, 0x0000040008000808,
5612  0x0000040000080808, 0x0000040008080808,
5613  0x0400040000000000, 0x0400040008000000,
5614  0x0400040000080000, 0x0400040008080000,
5615  0x0400040000000800, 0x0400040008000800,
5616  0x0400040000080800, 0x0400040008080800,
5617  0x0400040000000008, 0x0400040008000008,
5618  0x0400040000080008, 0x0400040008080008,
5619  0x0400040000000808, 0x0400040008000808,
5620  0x0400040000080808, 0x0400040008080808,
5621  0x0004040000000000, 0x0004040008000000,
5622  0x0004040000080000, 0x0004040008080000,
5623  0x0004040000000800, 0x0004040008000800,
5624  0x0004040000080800, 0x0004040008080800,
5625  0x0004040000000008, 0x0004040008000008,
5626  0x0004040000080008, 0x0004040008080008,
5627  0x0004040000000808, 0x0004040008000808,
5628  0x0004040000080808, 0x0004040008080808,
5629  0x0404040000000000, 0x0404040008000000,
5630  0x0404040000080000, 0x0404040008080000,
5631  0x0404040000000800, 0x0404040008000800,
5632  0x0404040000080800, 0x0404040008080800,
5633  0x0404040000000008, 0x0404040008000008,
5634  0x0404040000080008, 0x0404040008080008,
5635  0x0404040000000808, 0x0404040008000808,
5636  0x0404040000080808, 0x0404040008080808,
5637  0x0000000400000000, 0x0000000408000000,
5638  0x0000000400080000, 0x0000000408080000,
5639  0x0000000400000800, 0x0000000408000800,
5640  0x0000000400080800, 0x0000000408080800,
5641  0x0000000400000008, 0x0000000408000008,
5642  0x0000000400080008, 0x0000000408080008,
5643  0x0000000400000808, 0x0000000408000808,
5644  0x0000000400080808, 0x0000000408080808,
5645  0x0400000400000000, 0x0400000408000000,
5646  0x0400000400080000, 0x0400000408080000,
5647  0x0400000400000800, 0x0400000408000800,
5648  0x0400000400080800, 0x0400000408080800,
5649  0x0400000400000008, 0x0400000408000008,
5650  0x0400000400080008, 0x0400000408080008,
5651  0x0400000400000808, 0x0400000408000808,
5652  0x0400000400080808, 0x0400000408080808,
5653  0x0004000400000000, 0x0004000408000000,
5654  0x0004000400080000, 0x0004000408080000,
5655  0x0004000400000800, 0x0004000408000800,
5656  0x0004000400080800, 0x0004000408080800,
5657  0x0004000400000008, 0x0004000408000008,
5658  0x0004000400080008, 0x0004000408080008,
5659  0x0004000400000808, 0x0004000408000808,
5660  0x0004000400080808, 0x0004000408080808,
5661  0x0404000400000000, 0x0404000408000000,
5662  0x0404000400080000, 0x0404000408080000,
5663  0x0404000400000800, 0x0404000408000800,
5664  0x0404000400080800, 0x0404000408080800,
5665  0x0404000400000008, 0x0404000408000008,
5666  0x0404000400080008, 0x0404000408080008,
5667  0x0404000400000808, 0x0404000408000808,
5668  0x0404000400080808, 0x0404000408080808,
5669  0x0000040400000000, 0x0000040408000000,
5670  0x0000040400080000, 0x0000040408080000,
5671  0x0000040400000800, 0x0000040408000800,
5672  0x0000040400080800, 0x0000040408080800,
5673  0x0000040400000008, 0x0000040408000008,
5674  0x0000040400080008, 0x0000040408080008,
5675  0x0000040400000808, 0x0000040408000808,
5676  0x0000040400080808, 0x0000040408080808,
5677  0x0400040400000000, 0x0400040408000000,
5678  0x0400040400080000, 0x0400040408080000,
5679  0x0400040400000800, 0x0400040408000800,
5680  0x0400040400080800, 0x0400040408080800,
5681  0x0400040400000008, 0x0400040408000008,
5682  0x0400040400080008, 0x0400040408080008,
5683  0x0400040400000808, 0x0400040408000808,
5684  0x0400040400080808, 0x0400040408080808,
5685  0x0004040400000000, 0x0004040408000000,
5686  0x0004040400080000, 0x0004040408080000,
5687  0x0004040400000800, 0x0004040408000800,
5688  0x0004040400080800, 0x0004040408080800,
5689  0x0004040400000008, 0x0004040408000008,
5690  0x0004040400080008, 0x0004040408080008,
5691  0x0004040400000808, 0x0004040408000808,
5692  0x0004040400080808, 0x0004040408080808,
5693  0x0404040400000000, 0x0404040408000000,
5694  0x0404040400080000, 0x0404040408080000,
5695  0x0404040400000800, 0x0404040408000800,
5696  0x0404040400080800, 0x0404040408080800,
5697  0x0404040400000008, 0x0404040408000008,
5698  0x0404040400080008, 0x0404040408080008,
5699  0x0404040400000808, 0x0404040408000808,
5700  0x0404040400080808, 0x0404040408080808,
5701  0x0000000000000000, 0x0000000004000000,
5702  0x0000000000040000, 0x0000000004040000,
5703  0x0000000000000400, 0x0000000004000400,
5704  0x0000000000040400, 0x0000000004040400,
5705  0x0000000000000004, 0x0000000004000004,
5706  0x0000000000040004, 0x0000000004040004,
5707  0x0000000000000404, 0x0000000004000404,
5708  0x0000000000040404, 0x0000000004040404,
5709  0x0200000000000000, 0x0200000004000000,
5710  0x0200000000040000, 0x0200000004040000,
5711  0x0200000000000400, 0x0200000004000400,
5712  0x0200000000040400, 0x0200000004040400,
5713  0x0200000000000004, 0x0200000004000004,
5714  0x0200000000040004, 0x0200000004040004,
5715  0x0200000000000404, 0x0200000004000404,
5716  0x0200000000040404, 0x0200000004040404,
5717  0x0002000000000000, 0x0002000004000000,
5718  0x0002000000040000, 0x0002000004040000,
5719  0x0002000000000400, 0x0002000004000400,
5720  0x0002000000040400, 0x0002000004040400,
5721  0x0002000000000004, 0x0002000004000004,
5722  0x0002000000040004, 0x0002000004040004,
5723  0x0002000000000404, 0x0002000004000404,
5724  0x0002000000040404, 0x0002000004040404,
5725  0x0202000000000000, 0x0202000004000000,
5726  0x0202000000040000, 0x0202000004040000,
5727  0x0202000000000400, 0x0202000004000400,
5728  0x0202000000040400, 0x0202000004040400,
5729  0x0202000000000004, 0x0202000004000004,
5730  0x0202000000040004, 0x0202000004040004,
5731  0x0202000000000404, 0x0202000004000404,
5732  0x0202000000040404, 0x0202000004040404,
5733  0x0000020000000000, 0x0000020004000000,
5734  0x0000020000040000, 0x0000020004040000,
5735  0x0000020000000400, 0x0000020004000400,
5736  0x0000020000040400, 0x0000020004040400,
5737  0x0000020000000004, 0x0000020004000004,
5738  0x0000020000040004, 0x0000020004040004,
5739  0x0000020000000404, 0x0000020004000404,
5740  0x0000020000040404, 0x0000020004040404,
5741  0x0200020000000000, 0x0200020004000000,
5742  0x0200020000040000, 0x0200020004040000,
5743  0x0200020000000400, 0x0200020004000400,
5744  0x0200020000040400, 0x0200020004040400,
5745  0x0200020000000004, 0x0200020004000004,
5746  0x0200020000040004, 0x0200020004040004,
5747  0x0200020000000404, 0x0200020004000404,
5748  0x0200020000040404, 0x0200020004040404,
5749  0x0002020000000000, 0x0002020004000000,
5750  0x0002020000040000, 0x0002020004040000,
5751  0x0002020000000400, 0x0002020004000400,
5752  0x0002020000040400, 0x0002020004040400,
5753  0x0002020000000004, 0x0002020004000004,
5754  0x0002020000040004, 0x0002020004040004,
5755  0x0002020000000404, 0x0002020004000404,
5756  0x0002020000040404, 0x0002020004040404,
5757  0x0202020000000000, 0x0202020004000000,
5758  0x0202020000040000, 0x0202020004040000,
5759  0x0202020000000400, 0x0202020004000400,
5760  0x0202020000040400, 0x0202020004040400,
5761  0x0202020000000004, 0x0202020004000004,
5762  0x0202020000040004, 0x0202020004040004,
5763  0x0202020000000404, 0x0202020004000404,
5764  0x0202020000040404, 0x0202020004040404,
5765  0x0000000200000000, 0x0000000204000000,
5766  0x0000000200040000, 0x0000000204040000,
5767  0x0000000200000400, 0x0000000204000400,
5768  0x0000000200040400, 0x0000000204040400,
5769  0x0000000200000004, 0x0000000204000004,
5770  0x0000000200040004, 0x0000000204040004,
5771  0x0000000200000404, 0x0000000204000404,
5772  0x0000000200040404, 0x0000000204040404,
5773  0x0200000200000000, 0x0200000204000000,
5774  0x0200000200040000, 0x0200000204040000,
5775  0x0200000200000400, 0x0200000204000400,
5776  0x0200000200040400, 0x0200000204040400,
5777  0x0200000200000004, 0x0200000204000004,
5778  0x0200000200040004, 0x0200000204040004,
5779  0x0200000200000404, 0x0200000204000404,
5780  0x0200000200040404, 0x0200000204040404,
5781  0x0002000200000000, 0x0002000204000000,
5782  0x0002000200040000, 0x0002000204040000,
5783  0x0002000200000400, 0x0002000204000400,
5784  0x0002000200040400, 0x0002000204040400,
5785  0x0002000200000004, 0x0002000204000004,
5786  0x0002000200040004, 0x0002000204040004,
5787  0x0002000200000404, 0x0002000204000404,
5788  0x0002000200040404, 0x0002000204040404,
5789  0x0202000200000000, 0x0202000204000000,
5790  0x0202000200040000, 0x0202000204040000,
5791  0x0202000200000400, 0x0202000204000400,
5792  0x0202000200040400, 0x0202000204040400,
5793  0x0202000200000004, 0x0202000204000004,
5794  0x0202000200040004, 0x0202000204040004,
5795  0x0202000200000404, 0x0202000204000404,
5796  0x0202000200040404, 0x0202000204040404,
5797  0x0000020200000000, 0x0000020204000000,
5798  0x0000020200040000, 0x0000020204040000,
5799  0x0000020200000400, 0x0000020204000400,
5800  0x0000020200040400, 0x0000020204040400,
5801  0x0000020200000004, 0x0000020204000004,
5802  0x0000020200040004, 0x0000020204040004,
5803  0x0000020200000404, 0x0000020204000404,
5804  0x0000020200040404, 0x0000020204040404,
5805  0x0200020200000000, 0x0200020204000000,
5806  0x0200020200040000, 0x0200020204040000,
5807  0x0200020200000400, 0x0200020204000400,
5808  0x0200020200040400, 0x0200020204040400,
5809  0x0200020200000004, 0x0200020204000004,
5810  0x0200020200040004, 0x0200020204040004,
5811  0x0200020200000404, 0x0200020204000404,
5812  0x0200020200040404, 0x0200020204040404,
5813  0x0002020200000000, 0x0002020204000000,
5814  0x0002020200040000, 0x0002020204040000,
5815  0x0002020200000400, 0x0002020204000400,
5816  0x0002020200040400, 0x0002020204040400,
5817  0x0002020200000004, 0x0002020204000004,
5818  0x0002020200040004, 0x0002020204040004,
5819  0x0002020200000404, 0x0002020204000404,
5820  0x0002020200040404, 0x0002020204040404,
5821  0x0202020200000000, 0x0202020204000000,
5822  0x0202020200040000, 0x0202020204040000,
5823  0x0202020200000400, 0x0202020204000400,
5824  0x0202020200040400, 0x0202020204040400,
5825  0x0202020200000004, 0x0202020204000004,
5826  0x0202020200040004, 0x0202020204040004,
5827  0x0202020200000404, 0x0202020204000404,
5828  0x0202020200040404, 0x0202020204040404,
5829  0x0000000000000000, 0x0000000002000000,
5830  0x0000000000020000, 0x0000000002020000,
5831  0x0000000000000200, 0x0000000002000200,
5832  0x0000000000020200, 0x0000000002020200,
5833  0x0000000000000002, 0x0000000002000002,
5834  0x0000000000020002, 0x0000000002020002,
5835  0x0000000000000202, 0x0000000002000202,
5836  0x0000000000020202, 0x0000000002020202,
5837  0x0000000010000000, 0x0000000012000000,
5838  0x0000000010020000, 0x0000000012020000,
5839  0x0000000010000200, 0x0000000012000200,
5840  0x0000000010020200, 0x0000000012020200,
5841  0x0000000010000002, 0x0000000012000002,
5842  0x0000000010020002, 0x0000000012020002,
5843  0x0000000010000202, 0x0000000012000202,
5844  0x0000000010020202, 0x0000000012020202,
5845  0x0000000000100000, 0x0000000002100000,
5846  0x0000000000120000, 0x0000000002120000,
5847  0x0000000000100200, 0x0000000002100200,
5848  0x0000000000120200, 0x0000000002120200,
5849  0x0000000000100002, 0x0000000002100002,
5850  0x0000000000120002, 0x0000000002120002,
5851  0x0000000000100202, 0x0000000002100202,
5852  0x0000000000120202, 0x0000000002120202,
5853  0x0000000010100000, 0x0000000012100000,
5854  0x0000000010120000, 0x0000000012120000,
5855  0x0000000010100200, 0x0000000012100200,
5856  0x0000000010120200, 0x0000000012120200,
5857  0x0000000010100002, 0x0000000012100002,
5858  0x0000000010120002, 0x0000000012120002,
5859  0x0000000010100202, 0x0000000012100202,
5860  0x0000000010120202, 0x0000000012120202,
5861  0x0000000000001000, 0x0000000002001000,
5862  0x0000000000021000, 0x0000000002021000,
5863  0x0000000000001200, 0x0000000002001200,
5864  0x0000000000021200, 0x0000000002021200,
5865  0x0000000000001002, 0x0000000002001002,
5866  0x0000000000021002, 0x0000000002021002,
5867  0x0000000000001202, 0x0000000002001202,
5868  0x0000000000021202, 0x0000000002021202,
5869  0x0000000010001000, 0x0000000012001000,
5870  0x0000000010021000, 0x0000000012021000,
5871  0x0000000010001200, 0x0000000012001200,
5872  0x0000000010021200, 0x0000000012021200,
5873  0x0000000010001002, 0x0000000012001002,
5874  0x0000000010021002, 0x0000000012021002,
5875  0x0000000010001202, 0x0000000012001202,
5876  0x0000000010021202, 0x0000000012021202,
5877  0x0000000000101000, 0x0000000002101000,
5878  0x0000000000121000, 0x0000000002121000,
5879  0x0000000000101200, 0x0000000002101200,
5880  0x0000000000121200, 0x0000000002121200,
5881  0x0000000000101002, 0x0000000002101002,
5882  0x0000000000121002, 0x0000000002121002,
5883  0x0000000000101202, 0x0000000002101202,
5884  0x0000000000121202, 0x0000000002121202,
5885  0x0000000010101000, 0x0000000012101000,
5886  0x0000000010121000, 0x0000000012121000,
5887  0x0000000010101200, 0x0000000012101200,
5888  0x0000000010121200, 0x0000000012121200,
5889  0x0000000010101002, 0x0000000012101002,
5890  0x0000000010121002, 0x0000000012121002,
5891  0x0000000010101202, 0x0000000012101202,
5892  0x0000000010121202, 0x0000000012121202,
5893  0x0000000000000010, 0x0000000002000010,
5894  0x0000000000020010, 0x0000000002020010,
5895  0x0000000000000210, 0x0000000002000210,
5896  0x0000000000020210, 0x0000000002020210,
5897  0x0000000000000012, 0x0000000002000012,
5898  0x0000000000020012, 0x0000000002020012,
5899  0x0000000000000212, 0x0000000002000212,
5900  0x0000000000020212, 0x0000000002020212,
5901  0x0000000010000010, 0x0000000012000010,
5902  0x0000000010020010, 0x0000000012020010,
5903  0x0000000010000210, 0x0000000012000210,
5904  0x0000000010020210, 0x0000000012020210,
5905  0x0000000010000012, 0x0000000012000012,
5906  0x0000000010020012, 0x0000000012020012,
5907  0x0000000010000212, 0x0000000012000212,
5908  0x0000000010020212, 0x0000000012020212,
5909  0x0000000000100010, 0x0000000002100010,
5910  0x0000000000120010, 0x0000000002120010,
5911  0x0000000000100210, 0x0000000002100210,
5912  0x0000000000120210, 0x0000000002120210,
5913  0x0000000000100012, 0x0000000002100012,
5914  0x0000000000120012, 0x0000000002120012,
5915  0x0000000000100212, 0x0000000002100212,
5916  0x0000000000120212, 0x0000000002120212,
5917  0x0000000010100010, 0x0000000012100010,
5918  0x0000000010120010, 0x0000000012120010,
5919  0x0000000010100210, 0x0000000012100210,
5920  0x0000000010120210, 0x0000000012120210,
5921  0x0000000010100012, 0x0000000012100012,
5922  0x0000000010120012, 0x0000000012120012,
5923  0x0000000010100212, 0x0000000012100212,
5924  0x0000000010120212, 0x0000000012120212,
5925  0x0000000000001010, 0x0000000002001010,
5926  0x0000000000021010, 0x0000000002021010,
5927  0x0000000000001210, 0x0000000002001210,
5928  0x0000000000021210, 0x0000000002021210,
5929  0x0000000000001012, 0x0000000002001012,
5930  0x0000000000021012, 0x0000000002021012,
5931  0x0000000000001212, 0x0000000002001212,
5932  0x0000000000021212, 0x0000000002021212,
5933  0x0000000010001010, 0x0000000012001010,
5934  0x0000000010021010, 0x0000000012021010,
5935  0x0000000010001210, 0x0000000012001210,
5936  0x0000000010021210, 0x0000000012021210,
5937  0x0000000010001012, 0x0000000012001012,
5938  0x0000000010021012, 0x0000000012021012,
5939  0x0000000010001212, 0x0000000012001212,
5940  0x0000000010021212, 0x0000000012021212,
5941  0x0000000000101010, 0x0000000002101010,
5942  0x0000000000121010, 0x0000000002121010,
5943  0x0000000000101210, 0x0000000002101210,
5944  0x0000000000121210, 0x0000000002121210,
5945  0x0000000000101012, 0x0000000002101012,
5946  0x0000000000121012, 0x0000000002121012,
5947  0x0000000000101212, 0x0000000002101212,
5948  0x0000000000121212, 0x0000000002121212,
5949  0x0000000010101010, 0x0000000012101010,
5950  0x0000000010121010, 0x0000000012121010,
5951  0x0000000010101210, 0x0000000012101210,
5952  0x0000000010121210, 0x0000000012121210,
5953  0x0000000010101012, 0x0000000012101012,
5954  0x0000000010121012, 0x0000000012121012,
5955  0x0000000010101212, 0x0000000012101212,
5956  0x0000000010121212, 0x0000000012121212,
5957  0x0000000000000000, 0x2000000000000000,
5958  0x0020000000000000, 0x2020000000000000,
5959  0x0000200000000000, 0x2000200000000000,
5960  0x0020200000000000, 0x2020200000000000,
5961  0x0000002000000000, 0x2000002000000000,
5962  0x0020002000000000, 0x2020002000000000,
5963  0x0000202000000000, 0x2000202000000000,
5964  0x0020202000000000, 0x2020202000000000,
5965  0x0000000020000000, 0x2000000020000000,
5966  0x0020000020000000, 0x2020000020000000,
5967  0x0000200020000000, 0x2000200020000000,
5968  0x0020200020000000, 0x2020200020000000,
5969  0x0000002020000000, 0x2000002020000000,
5970  0x0020002020000000, 0x2020002020000000,
5971  0x0000202020000000, 0x2000202020000000,
5972  0x0020202020000000, 0x2020202020000000,
5973  0x0000000000200000, 0x2000000000200000,
5974  0x0020000000200000, 0x2020000000200000,
5975  0x0000200000200000, 0x2000200000200000,
5976  0x0020200000200000, 0x2020200000200000,
5977  0x0000002000200000, 0x2000002000200000,
5978  0x0020002000200000, 0x2020002000200000,
5979  0x0000202000200000, 0x2000202000200000,
5980  0x0020202000200000, 0x2020202000200000,
5981  0x0000000020200000, 0x2000000020200000,
5982  0x0020000020200000, 0x2020000020200000,
5983  0x0000200020200000, 0x2000200020200000,
5984  0x0020200020200000, 0x2020200020200000,
5985  0x0000002020200000, 0x2000002020200000,
5986  0x0020002020200000, 0x2020002020200000,
5987  0x0000202020200000, 0x2000202020200000,
5988  0x0020202020200000, 0x2020202020200000,
5989  0x0000000000002000, 0x2000000000002000,
5990  0x0020000000002000, 0x2020000000002000,
5991  0x0000200000002000, 0x2000200000002000,
5992  0x0020200000002000, 0x2020200000002000,
5993  0x0000002000002000, 0x2000002000002000,
5994  0x0020002000002000, 0x2020002000002000,
5995  0x0000202000002000, 0x2000202000002000,
5996  0x0020202000002000, 0x2020202000002000,
5997  0x0000000020002000, 0x2000000020002000,
5998  0x0020000020002000, 0x2020000020002000,
5999  0x0000200020002000, 0x2000200020002000,
6000  0x0020200020002000, 0x2020200020002000,
6001  0x0000002020002000, 0x2000002020002000,
6002  0x0020002020002000, 0x2020002020002000,
6003  0x0000202020002000, 0x2000202020002000,
6004  0x0020202020002000, 0x2020202020002000,
6005  0x0000000000202000, 0x2000000000202000,
6006  0x0020000000202000, 0x2020000000202000,
6007  0x0000200000202000, 0x2000200000202000,
6008  0x0020200000202000, 0x2020200000202000,
6009  0x0000002000202000, 0x2000002000202000,
6010  0x0020002000202000, 0x2020002000202000,
6011  0x0000202000202000, 0x2000202000202000,
6012  0x0020202000202000, 0x2020202000202000,
6013  0x0000000020202000, 0x2000000020202000,
6014  0x0020000020202000, 0x2020000020202000,
6015  0x0000200020202000, 0x2000200020202000,
6016  0x0020200020202000, 0x2020200020202000,
6017  0x0000002020202000, 0x2000002020202000,
6018  0x0020002020202000, 0x2020002020202000,
6019  0x0000202020202000, 0x2000202020202000,
6020  0x0020202020202000, 0x2020202020202000,
6021  0x0000000000000020, 0x2000000000000020,
6022  0x0020000000000020, 0x2020000000000020,
6023  0x0000200000000020, 0x2000200000000020,
6024  0x0020200000000020, 0x2020200000000020,
6025  0x0000002000000020, 0x2000002000000020,
6026  0x0020002000000020, 0x2020002000000020,
6027  0x0000202000000020, 0x2000202000000020,
6028  0x0020202000000020, 0x2020202000000020,
6029  0x0000000020000020, 0x2000000020000020,
6030  0x0020000020000020, 0x2020000020000020,
6031  0x0000200020000020, 0x2000200020000020,
6032  0x0020200020000020, 0x2020200020000020,
6033  0x0000002020000020, 0x2000002020000020,
6034  0x0020002020000020, 0x2020002020000020,
6035  0x0000202020000020, 0x2000202020000020,
6036  0x0020202020000020, 0x2020202020000020,
6037  0x0000000000200020, 0x2000000000200020,
6038  0x0020000000200020, 0x2020000000200020,
6039  0x0000200000200020, 0x2000200000200020,
6040  0x0020200000200020, 0x2020200000200020,
6041  0x0000002000200020, 0x2000002000200020,
6042  0x0020002000200020, 0x2020002000200020,
6043  0x0000202000200020, 0x2000202000200020,
6044  0x0020202000200020, 0x2020202000200020,
6045  0x0000000020200020, 0x2000000020200020,
6046  0x0020000020200020, 0x2020000020200020,
6047  0x0000200020200020, 0x2000200020200020,
6048  0x0020200020200020, 0x2020200020200020,
6049  0x0000002020200020, 0x2000002020200020,
6050  0x0020002020200020, 0x2020002020200020,
6051  0x0000202020200020, 0x2000202020200020,
6052  0x0020202020200020, 0x2020202020200020,
6053  0x0000000000002020, 0x2000000000002020,
6054  0x0020000000002020, 0x2020000000002020,
6055  0x0000200000002020, 0x2000200000002020,
6056  0x0020200000002020, 0x2020200000002020,
6057  0x0000002000002020, 0x2000002000002020,
6058  0x0020002000002020, 0x2020002000002020,
6059  0x0000202000002020, 0x2000202000002020,
6060  0x0020202000002020, 0x2020202000002020,
6061  0x0000000020002020, 0x2000000020002020,
6062  0x0020000020002020, 0x2020000020002020,
6063  0x0000200020002020, 0x2000200020002020,
6064  0x0020200020002020, 0x2020200020002020,
6065  0x0000002020002020, 0x2000002020002020,
6066  0x0020002020002020, 0x2020002020002020,
6067  0x0000202020002020, 0x2000202020002020,
6068  0x0020202020002020, 0x2020202020002020,
6069  0x0000000000202020, 0x2000000000202020,
6070  0x0020000000202020, 0x2020000000202020,
6071  0x0000200000202020, 0x2000200000202020,
6072  0x0020200000202020, 0x2020200000202020,
6073  0x0000002000202020, 0x2000002000202020,
6074  0x0020002000202020, 0x2020002000202020,
6075  0x0000202000202020, 0x2000202000202020,
6076  0x0020202000202020, 0x2020202000202020,
6077  0x0000000020202020, 0x2000000020202020,
6078  0x0020000020202020, 0x2020000020202020,
6079  0x0000200020202020, 0x2000200020202020,
6080  0x0020200020202020, 0x2020200020202020,
6081  0x0000002020202020, 0x2000002020202020,
6082  0x0020002020202020, 0x2020002020202020,
6083  0x0000202020202020, 0x2000202020202020,
6084  0x0020202020202020, 0x2020202020202020,
6085  0x0000000000000000, 0x4000000000000000,
6086  0x0040000000000000, 0x4040000000000000,
6087  0x0000400000000000, 0x4000400000000000,
6088  0x0040400000000000, 0x4040400000000000,
6089  0x0000004000000000, 0x4000004000000000,
6090  0x0040004000000000, 0x4040004000000000,
6091  0x0000404000000000, 0x4000404000000000,
6092  0x0040404000000000, 0x4040404000000000,
6093  0x0000000040000000, 0x4000000040000000,
6094  0x0040000040000000, 0x4040000040000000,
6095  0x0000400040000000, 0x4000400040000000,
6096  0x0040400040000000, 0x4040400040000000,
6097  0x0000004040000000, 0x4000004040000000,
6098  0x0040004040000000, 0x4040004040000000,
6099  0x0000404040000000, 0x4000404040000000,
6100  0x0040404040000000, 0x4040404040000000,
6101  0x0000000000400000, 0x4000000000400000,
6102  0x0040000000400000, 0x4040000000400000,
6103  0x0000400000400000, 0x4000400000400000,
6104  0x0040400000400000, 0x4040400000400000,
6105  0x0000004000400000, 0x4000004000400000,
6106  0x0040004000400000, 0x4040004000400000,
6107  0x0000404000400000, 0x4000404000400000,
6108  0x0040404000400000, 0x4040404000400000,
6109  0x0000000040400000, 0x4000000040400000,
6110  0x0040000040400000, 0x4040000040400000,
6111  0x0000400040400000, 0x4000400040400000,
6112  0x0040400040400000, 0x4040400040400000,
6113  0x0000004040400000, 0x4000004040400000,
6114  0x0040004040400000, 0x4040004040400000,
6115  0x0000404040400000, 0x4000404040400000,
6116  0x0040404040400000, 0x4040404040400000,
6117  0x0000000000004000, 0x4000000000004000,
6118  0x0040000000004000, 0x4040000000004000,
6119  0x0000400000004000, 0x4000400000004000,
6120  0x0040400000004000, 0x4040400000004000,
6121  0x0000004000004000, 0x4000004000004000,
6122  0x0040004000004000, 0x4040004000004000,
6123  0x0000404000004000, 0x4000404000004000,
6124  0x0040404000004000, 0x4040404000004000,
6125  0x0000000040004000, 0x4000000040004000,
6126  0x0040000040004000, 0x4040000040004000,
6127  0x0000400040004000, 0x4000400040004000,
6128  0x0040400040004000, 0x4040400040004000,
6129  0x0000004040004000, 0x4000004040004000,
6130  0x0040004040004000, 0x4040004040004000,
6131  0x0000404040004000, 0x4000404040004000,
6132  0x0040404040004000, 0x4040404040004000,
6133  0x0000000000404000, 0x4000000000404000,
6134  0x0040000000404000, 0x4040000000404000,
6135  0x0000400000404000, 0x4000400000404000,
6136  0x0040400000404000, 0x4040400000404000,
6137  0x0000004000404000, 0x4000004000404000,
6138  0x0040004000404000, 0x4040004000404000,
6139  0x0000404000404000, 0x4000404000404000,
6140  0x0040404000404000, 0x4040404000404000,
6141  0x0000000040404000, 0x4000000040404000,
6142  0x0040000040404000, 0x4040000040404000,
6143  0x0000400040404000, 0x4000400040404000,
6144  0x0040400040404000, 0x4040400040404000,
6145  0x0000004040404000, 0x4000004040404000,
6146  0x0040004040404000, 0x4040004040404000,
6147  0x0000404040404000, 0x4000404040404000,
6148  0x0040404040404000, 0x4040404040404000,
6149  0x0000000000000040, 0x4000000000000040,
6150  0x0040000000000040, 0x4040000000000040,
6151  0x0000400000000040, 0x4000400000000040,
6152  0x0040400000000040, 0x4040400000000040,
6153  0x0000004000000040, 0x4000004000000040,
6154  0x0040004000000040, 0x4040004000000040,
6155  0x0000404000000040, 0x4000404000000040,
6156  0x0040404000000040, 0x4040404000000040,
6157  0x0000000040000040, 0x4000000040000040,
6158  0x0040000040000040, 0x4040000040000040,
6159  0x0000400040000040, 0x4000400040000040,
6160  0x0040400040000040, 0x4040400040000040,
6161  0x0000004040000040, 0x4000004040000040,
6162  0x0040004040000040, 0x4040004040000040,
6163  0x0000404040000040, 0x4000404040000040,
6164  0x0040404040000040, 0x4040404040000040,
6165  0x0000000000400040, 0x4000000000400040,
6166  0x0040000000400040, 0x4040000000400040,
6167  0x0000400000400040, 0x4000400000400040,
6168  0x0040400000400040, 0x4040400000400040,
6169  0x0000004000400040, 0x4000004000400040,
6170  0x0040004000400040, 0x4040004000400040,
6171  0x0000404000400040, 0x4000404000400040,
6172  0x0040404000400040, 0x4040404000400040,
6173  0x0000000040400040, 0x4000000040400040,
6174  0x0040000040400040, 0x4040000040400040,
6175  0x0000400040400040, 0x4000400040400040,
6176  0x0040400040400040, 0x4040400040400040,
6177  0x0000004040400040, 0x4000004040400040,
6178  0x0040004040400040, 0x4040004040400040,
6179  0x0000404040400040, 0x4000404040400040,
6180  0x0040404040400040, 0x4040404040400040,
6181  0x0000000000004040, 0x4000000000004040,
6182  0x0040000000004040, 0x4040000000004040,
6183  0x0000400000004040, 0x4000400000004040,
6184  0x0040400000004040, 0x4040400000004040,
6185  0x0000004000004040, 0x4000004000004040,
6186  0x0040004000004040, 0x4040004000004040,
6187  0x0000404000004040, 0x4000404000004040,
6188  0x0040404000004040, 0x4040404000004040,
6189  0x0000000040004040, 0x4000000040004040,
6190  0x0040000040004040, 0x4040000040004040,
6191  0x0000400040004040, 0x4000400040004040,
6192  0x0040400040004040, 0x4040400040004040,
6193  0x0000004040004040, 0x4000004040004040,
6194  0x0040004040004040, 0x4040004040004040,
6195  0x0000404040004040, 0x4000404040004040,
6196  0x0040404040004040, 0x4040404040004040,
6197  0x0000000000404040, 0x4000000000404040,
6198  0x0040000000404040, 0x4040000000404040,
6199  0x0000400000404040, 0x4000400000404040,
6200  0x0040400000404040, 0x4040400000404040,
6201  0x0000004000404040, 0x4000004000404040,
6202  0x0040004000404040, 0x4040004000404040,
6203  0x0000404000404040, 0x4000404000404040,
6204  0x0040404000404040, 0x4040404000404040,
6205  0x0000000040404040, 0x4000000040404040,
6206  0x0040000040404040, 0x4040000040404040,
6207  0x0000400040404040, 0x4000400040404040,
6208  0x0040400040404040, 0x4040400040404040,
6209  0x0000004040404040, 0x4000004040404040,
6210  0x0040004040404040, 0x4040004040404040,
6211  0x0000404040404040, 0x4000404040404040,
6212  0x0040404040404040, 0x4040404040404040,
6213  0x0000000000000000, 0x8000000000000000,
6214  0x0080000000000000, 0x8080000000000000,
6215  0x0000800000000000, 0x8000800000000000,
6216  0x0080800000000000, 0x8080800000000000,
6217  0x0000008000000000, 0x8000008000000000,
6218  0x0080008000000000, 0x8080008000000000,
6219  0x0000808000000000, 0x8000808000000000,
6220  0x0080808000000000, 0x8080808000000000,
6221  0x0000000080000000, 0x8000000080000000,
6222  0x0080000080000000, 0x8080000080000000,
6223  0x0000800080000000, 0x8000800080000000,
6224  0x0080800080000000, 0x8080800080000000,
6225  0x0000008080000000, 0x8000008080000000,
6226  0x0080008080000000, 0x8080008080000000,
6227  0x0000808080000000, 0x8000808080000000,
6228  0x0080808080000000, 0x8080808080000000,
6229  0x0000000000800000, 0x8000000000800000,
6230  0x0080000000800000, 0x8080000000800000,
6231  0x0000800000800000, 0x8000800000800000,
6232  0x0080800000800000, 0x8080800000800000,
6233  0x0000008000800000, 0x8000008000800000,
6234  0x0080008000800000, 0x8080008000800000,
6235  0x0000808000800000, 0x8000808000800000,
6236  0x0080808000800000, 0x8080808000800000,
6237  0x0000000080800000, 0x8000000080800000,
6238  0x0080000080800000, 0x8080000080800000,
6239  0x0000800080800000, 0x8000800080800000,
6240  0x0080800080800000, 0x8080800080800000,
6241  0x0000008080800000, 0x8000008080800000,
6242  0x0080008080800000, 0x8080008080800000,
6243  0x0000808080800000, 0x8000808080800000,
6244  0x0080808080800000, 0x8080808080800000,
6245  0x0000000000008000, 0x8000000000008000,
6246  0x0080000000008000, 0x8080000000008000,
6247  0x0000800000008000, 0x8000800000008000,
6248  0x0080800000008000, 0x8080800000008000,
6249  0x0000008000008000, 0x8000008000008000,
6250  0x0080008000008000, 0x8080008000008000,
6251  0x0000808000008000, 0x8000808000008000,
6252  0x0080808000008000, 0x8080808000008000,
6253  0x0000000080008000, 0x8000000080008000,
6254  0x0080000080008000, 0x8080000080008000,
6255  0x0000800080008000, 0x8000800080008000,
6256  0x0080800080008000, 0x8080800080008000,
6257  0x0000008080008000, 0x8000008080008000,
6258  0x0080008080008000, 0x8080008080008000,
6259  0x0000808080008000, 0x8000808080008000,
6260  0x0080808080008000, 0x8080808080008000,
6261  0x0000000000808000, 0x8000000000808000,
6262  0x0080000000808000, 0x8080000000808000,
6263  0x0000800000808000, 0x8000800000808000,
6264  0x0080800000808000, 0x8080800000808000,
6265  0x0000008000808000, 0x8000008000808000,
6266  0x0080008000808000, 0x8080008000808000,
6267  0x0000808000808000, 0x8000808000808000,
6268  0x0080808000808000, 0x8080808000808000,
6269  0x0000000080808000, 0x8000000080808000,
6270  0x0080000080808000, 0x8080000080808000,
6271  0x0000800080808000, 0x8000800080808000,
6272  0x0080800080808000, 0x8080800080808000,
6273  0x0000008080808000, 0x8000008080808000,
6274  0x0080008080808000, 0x8080008080808000,
6275  0x0000808080808000, 0x8000808080808000,
6276  0x0080808080808000, 0x8080808080808000,
6277  0x0000000000000080, 0x8000000000000080,
6278  0x0080000000000080, 0x8080000000000080,
6279  0x0000800000000080, 0x8000800000000080,
6280  0x0080800000000080, 0x8080800000000080,
6281  0x0000008000000080, 0x8000008000000080,
6282  0x0080008000000080, 0x8080008000000080,
6283  0x0000808000000080, 0x8000808000000080,
6284  0x0080808000000080, 0x8080808000000080,
6285  0x0000000080000080, 0x8000000080000080,
6286  0x0080000080000080, 0x8080000080000080,
6287  0x0000800080000080, 0x8000800080000080,
6288  0x0080800080000080, 0x8080800080000080,
6289  0x0000008080000080, 0x8000008080000080,
6290  0x0080008080000080, 0x8080008080000080,
6291  0x0000808080000080, 0x8000808080000080,
6292  0x0080808080000080, 0x8080808080000080,
6293  0x0000000000800080, 0x8000000000800080,
6294  0x0080000000800080, 0x8080000000800080,
6295  0x0000800000800080, 0x8000800000800080,
6296  0x0080800000800080, 0x8080800000800080,
6297  0x0000008000800080, 0x8000008000800080,
6298  0x0080008000800080, 0x8080008000800080,
6299  0x0000808000800080, 0x8000808000800080,
6300  0x0080808000800080, 0x8080808000800080,
6301  0x0000000080800080, 0x8000000080800080,
6302  0x0080000080800080, 0x8080000080800080,
6303  0x0000800080800080, 0x8000800080800080,
6304  0x0080800080800080, 0x8080800080800080,
6305  0x0000008080800080, 0x8000008080800080,
6306  0x0080008080800080, 0x8080008080800080,
6307  0x0000808080800080, 0x8000808080800080,
6308  0x0080808080800080, 0x8080808080800080,
6309  0x0000000000008080, 0x8000000000008080,
6310  0x0080000000008080, 0x8080000000008080,
6311  0x0000800000008080, 0x8000800000008080,
6312  0x0080800000008080, 0x8080800000008080,
6313  0x0000008000008080, 0x8000008000008080,
6314  0x0080008000008080, 0x8080008000008080,
6315  0x0000808000008080, 0x8000808000008080,
6316  0x0080808000008080, 0x8080808000008080,
6317  0x0000000080008080, 0x8000000080008080,
6318  0x0080000080008080, 0x8080000080008080,
6319  0x0000800080008080, 0x8000800080008080,
6320  0x0080800080008080, 0x8080800080008080,
6321  0x0000008080008080, 0x8000008080008080,
6322  0x0080008080008080, 0x8080008080008080,
6323  0x0000808080008080, 0x8000808080008080,
6324  0x0080808080008080, 0x8080808080008080,
6325  0x0000000000808080, 0x8000000000808080,
6326  0x0080000000808080, 0x8080000000808080,
6327  0x0000800000808080, 0x8000800000808080,
6328  0x0080800000808080, 0x8080800000808080,
6329  0x0000008000808080, 0x8000008000808080,
6330  0x0080008000808080, 0x8080008000808080,
6331  0x0000808000808080, 0x8000808000808080,
6332  0x0080808000808080, 0x8080808000808080,
6333  0x0000000080808080, 0x8000000080808080,
6334  0x0080000080808080, 0x8080000080808080,
6335  0x0000800080808080, 0x8000800080808080,
6336  0x0080800080808080, 0x8080800080808080,
6337  0x0000008080808080, 0x8000008080808080,
6338  0x0080008080808080, 0x8080008080808080,
6339  0x0000808080808080, 0x8000808080808080,
6340  0x0080808080808080, 0x8080808080808080
6341)
6342
6343# PC2 permutation table
6344PC2_K = (
6345  0x0000000000000000, 0x0000000000000100,
6346  0x0000000000040000, 0x0000000000040100,
6347  0x0000000000000000, 0x0000000000000100,
6348  0x0000000000040000, 0x0000000000040100,
6349  0x0000000000000040, 0x0000000000000140,
6350  0x0000000000040040, 0x0000000000040140,
6351  0x0000000000000040, 0x0000000000000140,
6352  0x0000000000040040, 0x0000000000040140,
6353  0x0000000000400000, 0x0000000000400100,
6354  0x0000000000440000, 0x0000000000440100,
6355  0x0000000000400000, 0x0000000000400100,
6356  0x0000000000440000, 0x0000000000440100,
6357  0x0000000000400040, 0x0000000000400140,
6358  0x0000000000440040, 0x0000000000440140,
6359  0x0000000000400040, 0x0000000000400140,
6360  0x0000000000440040, 0x0000000000440140,
6361  0x0000000000008000, 0x0000000000008100,
6362  0x0000000000048000, 0x0000000000048100,
6363  0x0000000000008000, 0x0000000000008100,
6364  0x0000000000048000, 0x0000000000048100,
6365  0x0000000000008040, 0x0000000000008140,
6366  0x0000000000048040, 0x0000000000048140,
6367  0x0000000000008040, 0x0000000000008140,
6368  0x0000000000048040, 0x0000000000048140,
6369  0x0000000000408000, 0x0000000000408100,
6370  0x0000000000448000, 0x0000000000448100,
6371  0x0000000000408000, 0x0000000000408100,
6372  0x0000000000448000, 0x0000000000448100,
6373  0x0000000000408040, 0x0000000000408140,
6374  0x0000000000448040, 0x0000000000448140,
6375  0x0000000000408040, 0x0000000000408140,
6376  0x0000000000448040, 0x0000000000448140,
6377  0x0000000000000008, 0x0000000000000108,
6378  0x0000000000040008, 0x0000000000040108,
6379  0x0000000000000008, 0x0000000000000108,
6380  0x0000000000040008, 0x0000000000040108,
6381  0x0000000000000048, 0x0000000000000148,
6382  0x0000000000040048, 0x0000000000040148,
6383  0x0000000000000048, 0x0000000000000148,
6384  0x0000000000040048, 0x0000000000040148,
6385  0x0000000000400008, 0x0000000000400108,
6386  0x0000000000440008, 0x0000000000440108,
6387  0x0000000000400008, 0x0000000000400108,
6388  0x0000000000440008, 0x0000000000440108,
6389  0x0000000000400048, 0x0000000000400148,
6390  0x0000000000440048, 0x0000000000440148,
6391  0x0000000000400048, 0x0000000000400148,
6392  0x0000000000440048, 0x0000000000440148,
6393  0x0000000000008008, 0x0000000000008108,
6394  0x0000000000048008, 0x0000000000048108,
6395  0x0000000000008008, 0x0000000000008108,
6396  0x0000000000048008, 0x0000000000048108,
6397  0x0000000000008048, 0x0000000000008148,
6398  0x0000000000048048, 0x0000000000048148,
6399  0x0000000000008048, 0x0000000000008148,
6400  0x0000000000048048, 0x0000000000048148,
6401  0x0000000000408008, 0x0000000000408108,
6402  0x0000000000448008, 0x0000000000448108,
6403  0x0000000000408008, 0x0000000000408108,
6404  0x0000000000448008, 0x0000000000448108,
6405  0x0000000000408048, 0x0000000000408148,
6406  0x0000000000448048, 0x0000000000448148,
6407  0x0000000000408048, 0x0000000000408148,
6408  0x0000000000448048, 0x0000000000448148,
6409  0x0000000000000400, 0x0000000000000500,
6410  0x0000000000040400, 0x0000000000040500,
6411  0x0000000000000400, 0x0000000000000500,
6412  0x0000000000040400, 0x0000000000040500,
6413  0x0000000000000440, 0x0000000000000540,
6414  0x0000000000040440, 0x0000000000040540,
6415  0x0000000000000440, 0x0000000000000540,
6416  0x0000000000040440, 0x0000000000040540,
6417  0x0000000000400400, 0x0000000000400500,
6418  0x0000000000440400, 0x0000000000440500,
6419  0x0000000000400400, 0x0000000000400500,
6420  0x0000000000440400, 0x0000000000440500,
6421  0x0000000000400440, 0x0000000000400540,
6422  0x0000000000440440, 0x0000000000440540,
6423  0x0000000000400440, 0x0000000000400540,
6424  0x0000000000440440, 0x0000000000440540,
6425  0x0000000000008400, 0x0000000000008500,
6426  0x0000000000048400, 0x0000000000048500,
6427  0x0000000000008400, 0x0000000000008500,
6428  0x0000000000048400, 0x0000000000048500,
6429  0x0000000000008440, 0x0000000000008540,
6430  0x0000000000048440, 0x0000000000048540,
6431  0x0000000000008440, 0x0000000000008540,
6432  0x0000000000048440, 0x0000000000048540,
6433  0x0000000000408400, 0x0000000000408500,
6434  0x0000000000448400, 0x0000000000448500,
6435  0x0000000000408400, 0x0000000000408500,
6436  0x0000000000448400, 0x0000000000448500,
6437  0x0000000000408440, 0x0000000000408540,
6438  0x0000000000448440, 0x0000000000448540,
6439  0x0000000000408440, 0x0000000000408540,
6440  0x0000000000448440, 0x0000000000448540,
6441  0x0000000000000408, 0x0000000000000508,
6442  0x0000000000040408, 0x0000000000040508,
6443  0x0000000000000408, 0x0000000000000508,
6444  0x0000000000040408, 0x0000000000040508,
6445  0x0000000000000448, 0x0000000000000548,
6446  0x0000000000040448, 0x0000000000040548,
6447  0x0000000000000448, 0x0000000000000548,
6448  0x0000000000040448, 0x0000000000040548,
6449  0x0000000000400408, 0x0000000000400508,
6450  0x0000000000440408, 0x0000000000440508,
6451  0x0000000000400408, 0x0000000000400508,
6452  0x0000000000440408, 0x0000000000440508,
6453  0x0000000000400448, 0x0000000000400548,
6454  0x0000000000440448, 0x0000000000440548,
6455  0x0000000000400448, 0x0000000000400548,
6456  0x0000000000440448, 0x0000000000440548,
6457  0x0000000000008408, 0x0000000000008508,
6458  0x0000000000048408, 0x0000000000048508,
6459  0x0000000000008408, 0x0000000000008508,
6460  0x0000000000048408, 0x0000000000048508,
6461  0x0000000000008448, 0x0000000000008548,
6462  0x0000000000048448, 0x0000000000048548,
6463  0x0000000000008448, 0x0000000000008548,
6464  0x0000000000048448, 0x0000000000048548,
6465  0x0000000000408408, 0x0000000000408508,
6466  0x0000000000448408, 0x0000000000448508,
6467  0x0000000000408408, 0x0000000000408508,
6468  0x0000000000448408, 0x0000000000448508,
6469  0x0000000000408448, 0x0000000000408548,
6470  0x0000000000448448, 0x0000000000448548,
6471  0x0000000000408448, 0x0000000000408548,
6472  0x0000000000448448, 0x0000000000448548,
6473  0x0000000000000000, 0x0000000000001000,
6474  0x0000000000080000, 0x0000000000081000,
6475  0x0000000000000020, 0x0000000000001020,
6476  0x0000000000080020, 0x0000000000081020,
6477  0x0000000000004000, 0x0000000000005000,
6478  0x0000000000084000, 0x0000000000085000,
6479  0x0000000000004020, 0x0000000000005020,
6480  0x0000000000084020, 0x0000000000085020,
6481  0x0000000000000800, 0x0000000000001800,
6482  0x0000000000080800, 0x0000000000081800,
6483  0x0000000000000820, 0x0000000000001820,
6484  0x0000000000080820, 0x0000000000081820,
6485  0x0000000000004800, 0x0000000000005800,
6486  0x0000000000084800, 0x0000000000085800,
6487  0x0000000000004820, 0x0000000000005820,
6488  0x0000000000084820, 0x0000000000085820,
6489  0x0000000000000000, 0x0000000000001000,
6490  0x0000000000080000, 0x0000000000081000,
6491  0x0000000000000020, 0x0000000000001020,
6492  0x0000000000080020, 0x0000000000081020,
6493  0x0000000000004000, 0x0000000000005000,
6494  0x0000000000084000, 0x0000000000085000,
6495  0x0000000000004020, 0x0000000000005020,
6496  0x0000000000084020, 0x0000000000085020,
6497  0x0000000000000800, 0x0000000000001800,
6498  0x0000000000080800, 0x0000000000081800,
6499  0x0000000000000820, 0x0000000000001820,
6500  0x0000000000080820, 0x0000000000081820,
6501  0x0000000000004800, 0x0000000000005800,
6502  0x0000000000084800, 0x0000000000085800,
6503  0x0000000000004820, 0x0000000000005820,
6504  0x0000000000084820, 0x0000000000085820,
6505  0x0000000000000010, 0x0000000000001010,
6506  0x0000000000080010, 0x0000000000081010,
6507  0x0000000000000030, 0x0000000000001030,
6508  0x0000000000080030, 0x0000000000081030,
6509  0x0000000000004010, 0x0000000000005010,
6510  0x0000000000084010, 0x0000000000085010,
6511  0x0000000000004030, 0x0000000000005030,
6512  0x0000000000084030, 0x0000000000085030,
6513  0x0000000000000810, 0x0000000000001810,
6514  0x0000000000080810, 0x0000000000081810,
6515  0x0000000000000830, 0x0000000000001830,
6516  0x0000000000080830, 0x0000000000081830,
6517  0x0000000000004810, 0x0000000000005810,
6518  0x0000000000084810, 0x0000000000085810,
6519  0x0000000000004830, 0x0000000000005830,
6520  0x0000000000084830, 0x0000000000085830,
6521  0x0000000000000010, 0x0000000000001010,
6522  0x0000000000080010, 0x0000000000081010,
6523  0x0000000000000030, 0x0000000000001030,
6524  0x0000000000080030, 0x0000000000081030,
6525  0x0000000000004010, 0x0000000000005010,
6526  0x0000000000084010, 0x0000000000085010,
6527  0x0000000000004030, 0x0000000000005030,
6528  0x0000000000084030, 0x0000000000085030,
6529  0x0000000000000810, 0x0000000000001810,
6530  0x0000000000080810, 0x0000000000081810,
6531  0x0000000000000830, 0x0000000000001830,
6532  0x0000000000080830, 0x0000000000081830,
6533  0x0000000000004810, 0x0000000000005810,
6534  0x0000000000084810, 0x0000000000085810,
6535  0x0000000000004830, 0x0000000000005830,
6536  0x0000000000084830, 0x0000000000085830,
6537  0x0000000000800000, 0x0000000000801000,
6538  0x0000000000880000, 0x0000000000881000,
6539  0x0000000000800020, 0x0000000000801020,
6540  0x0000000000880020, 0x0000000000881020,
6541  0x0000000000804000, 0x0000000000805000,
6542  0x0000000000884000, 0x0000000000885000,
6543  0x0000000000804020, 0x0000000000805020,
6544  0x0000000000884020, 0x0000000000885020,
6545  0x0000000000800800, 0x0000000000801800,
6546  0x0000000000880800, 0x0000000000881800,
6547  0x0000000000800820, 0x0000000000801820,
6548  0x0000000000880820, 0x0000000000881820,
6549  0x0000000000804800, 0x0000000000805800,
6550  0x0000000000884800, 0x0000000000885800,
6551  0x0000000000804820, 0x0000000000805820,
6552  0x0000000000884820, 0x0000000000885820,
6553  0x0000000000800000, 0x0000000000801000,
6554  0x0000000000880000, 0x0000000000881000,
6555  0x0000000000800020, 0x0000000000801020,
6556  0x0000000000880020, 0x0000000000881020,
6557  0x0000000000804000, 0x0000000000805000,
6558  0x0000000000884000, 0x0000000000885000,
6559  0x0000000000804020, 0x0000000000805020,
6560  0x0000000000884020, 0x0000000000885020,
6561  0x0000000000800800, 0x0000000000801800,
6562  0x0000000000880800, 0x0000000000881800,
6563  0x0000000000800820, 0x0000000000801820,
6564  0x0000000000880820, 0x0000000000881820,
6565  0x0000000000804800, 0x0000000000805800,
6566  0x0000000000884800, 0x0000000000885800,
6567  0x0000000000804820, 0x0000000000805820,
6568  0x0000000000884820, 0x0000000000885820,
6569  0x0000000000800010, 0x0000000000801010,
6570  0x0000000000880010, 0x0000000000881010,
6571  0x0000000000800030, 0x0000000000801030,
6572  0x0000000000880030, 0x0000000000881030,
6573  0x0000000000804010, 0x0000000000805010,
6574  0x0000000000884010, 0x0000000000885010,
6575  0x0000000000804030, 0x0000000000805030,
6576  0x0000000000884030, 0x0000000000885030,
6577  0x0000000000800810, 0x0000000000801810,
6578  0x0000000000880810, 0x0000000000881810,
6579  0x0000000000800830, 0x0000000000801830,
6580  0x0000000000880830, 0x0000000000881830,
6581  0x0000000000804810, 0x0000000000805810,
6582  0x0000000000884810, 0x0000000000885810,
6583  0x0000000000804830, 0x0000000000805830,
6584  0x0000000000884830, 0x0000000000885830,
6585  0x0000000000800010, 0x0000000000801010,
6586  0x0000000000880010, 0x0000000000881010,
6587  0x0000000000800030, 0x0000000000801030,
6588  0x0000000000880030, 0x0000000000881030,
6589  0x0000000000804010, 0x0000000000805010,
6590  0x0000000000884010, 0x0000000000885010,
6591  0x0000000000804030, 0x0000000000805030,
6592  0x0000000000884030, 0x0000000000885030,
6593  0x0000000000800810, 0x0000000000801810,
6594  0x0000000000880810, 0x0000000000881810,
6595  0x0000000000800830, 0x0000000000801830,
6596  0x0000000000880830, 0x0000000000881830,
6597  0x0000000000804810, 0x0000000000805810,
6598  0x0000000000884810, 0x0000000000885810,
6599  0x0000000000804830, 0x0000000000805830,
6600  0x0000000000884830, 0x0000000000885830,
6601  0x0000000000000000, 0x0000000000010000,
6602  0x0000000000000200, 0x0000000000010200,
6603  0x0000000000000000, 0x0000000000010000,
6604  0x0000000000000200, 0x0000000000010200,
6605  0x0000000000100000, 0x0000000000110000,
6606  0x0000000000100200, 0x0000000000110200,
6607  0x0000000000100000, 0x0000000000110000,
6608  0x0000000000100200, 0x0000000000110200,
6609  0x0000000000000004, 0x0000000000010004,
6610  0x0000000000000204, 0x0000000000010204,
6611  0x0000000000000004, 0x0000000000010004,
6612  0x0000000000000204, 0x0000000000010204,
6613  0x0000000000100004, 0x0000000000110004,
6614  0x0000000000100204, 0x0000000000110204,
6615  0x0000000000100004, 0x0000000000110004,
6616  0x0000000000100204, 0x0000000000110204,
6617  0x0000000000000000, 0x0000000000010000,
6618  0x0000000000000200, 0x0000000000010200,
6619  0x0000000000000000, 0x0000000000010000,
6620  0x0000000000000200, 0x0000000000010200,
6621  0x0000000000100000, 0x0000000000110000,
6622  0x0000000000100200, 0x0000000000110200,
6623  0x0000000000100000, 0x0000000000110000,
6624  0x0000000000100200, 0x0000000000110200,
6625  0x0000000000000004, 0x0000000000010004,
6626  0x0000000000000204, 0x0000000000010204,
6627  0x0000000000000004, 0x0000000000010004,
6628  0x0000000000000204, 0x0000000000010204,
6629  0x0000000000100004, 0x0000000000110004,
6630  0x0000000000100204, 0x0000000000110204,
6631  0x0000000000100004, 0x0000000000110004,
6632  0x0000000000100204, 0x0000000000110204,
6633  0x0000000000000080, 0x0000000000010080,
6634  0x0000000000000280, 0x0000000000010280,
6635  0x0000000000000080, 0x0000000000010080,
6636  0x0000000000000280, 0x0000000000010280,
6637  0x0000000000100080, 0x0000000000110080,
6638  0x0000000000100280, 0x0000000000110280,
6639  0x0000000000100080, 0x0000000000110080,
6640  0x0000000000100280, 0x0000000000110280,
6641  0x0000000000000084, 0x0000000000010084,
6642  0x0000000000000284, 0x0000000000010284,
6643  0x0000000000000084, 0x0000000000010084,
6644  0x0000000000000284, 0x0000000000010284,
6645  0x0000000000100084, 0x0000000000110084,
6646  0x0000000000100284, 0x0000000000110284,
6647  0x0000000000100084, 0x0000000000110084,
6648  0x0000000000100284, 0x0000000000110284,
6649  0x0000000000000080, 0x0000000000010080,
6650  0x0000000000000280, 0x0000000000010280,
6651  0x0000000000000080, 0x0000000000010080,
6652  0x0000000000000280, 0x0000000000010280,
6653  0x0000000000100080, 0x0000000000110080,
6654  0x0000000000100280, 0x0000000000110280,
6655  0x0000000000100080, 0x0000000000110080,
6656  0x0000000000100280, 0x0000000000110280,
6657  0x0000000000000084, 0x0000000000010084,
6658  0x0000000000000284, 0x0000000000010284,
6659  0x0000000000000084, 0x0000000000010084,
6660  0x0000000000000284, 0x0000000000010284,
6661  0x0000000000100084, 0x0000000000110084,
6662  0x0000000000100284, 0x0000000000110284,
6663  0x0000000000100084, 0x0000000000110084,
6664  0x0000000000100284, 0x0000000000110284,
6665  0x0000000000002000, 0x0000000000012000,
6666  0x0000000000002200, 0x0000000000012200,
6667  0x0000000000002000, 0x0000000000012000,
6668  0x0000000000002200, 0x0000000000012200,
6669  0x0000000000102000, 0x0000000000112000,
6670  0x0000000000102200, 0x0000000000112200,
6671  0x0000000000102000, 0x0000000000112000,
6672  0x0000000000102200, 0x0000000000112200,
6673  0x0000000000002004, 0x0000000000012004,
6674  0x0000000000002204, 0x0000000000012204,
6675  0x0000000000002004, 0x0000000000012004,
6676  0x0000000000002204, 0x0000000000012204,
6677  0x0000000000102004, 0x0000000000112004,
6678  0x0000000000102204, 0x0000000000112204,
6679  0x0000000000102004, 0x0000000000112004,
6680  0x0000000000102204, 0x0000000000112204,
6681  0x0000000000002000, 0x0000000000012000,
6682  0x0000000000002200, 0x0000000000012200,
6683  0x0000000000002000, 0x0000000000012000,
6684  0x0000000000002200, 0x0000000000012200,
6685  0x0000000000102000, 0x0000000000112000,
6686  0x0000000000102200, 0x0000000000112200,
6687  0x0000000000102000, 0x0000000000112000,
6688  0x0000000000102200, 0x0000000000112200,
6689  0x0000000000002004, 0x0000000000012004,
6690  0x0000000000002204, 0x0000000000012204,
6691  0x0000000000002004, 0x0000000000012004,
6692  0x0000000000002204, 0x0000000000012204,
6693  0x0000000000102004, 0x0000000000112004,
6694  0x0000000000102204, 0x0000000000112204,
6695  0x0000000000102004, 0x0000000000112004,
6696  0x0000000000102204, 0x0000000000112204,
6697  0x0000000000002080, 0x0000000000012080,
6698  0x0000000000002280, 0x0000000000012280,
6699  0x0000000000002080, 0x0000000000012080,
6700  0x0000000000002280, 0x0000000000012280,
6701  0x0000000000102080, 0x0000000000112080,
6702  0x0000000000102280, 0x0000000000112280,
6703  0x0000000000102080, 0x0000000000112080,
6704  0x0000000000102280, 0x0000000000112280,
6705  0x0000000000002084, 0x0000000000012084,
6706  0x0000000000002284, 0x0000000000012284,
6707  0x0000000000002084, 0x0000000000012084,
6708  0x0000000000002284, 0x0000000000012284,
6709  0x0000000000102084, 0x0000000000112084,
6710  0x0000000000102284, 0x0000000000112284,
6711  0x0000000000102084, 0x0000000000112084,
6712  0x0000000000102284, 0x0000000000112284,
6713  0x0000000000002080, 0x0000000000012080,
6714  0x0000000000002280, 0x0000000000012280,
6715  0x0000000000002080, 0x0000000000012080,
6716  0x0000000000002280, 0x0000000000012280,
6717  0x0000000000102080, 0x0000000000112080,
6718  0x0000000000102280, 0x0000000000112280,
6719  0x0000000000102080, 0x0000000000112080,
6720  0x0000000000102280, 0x0000000000112280,
6721  0x0000000000002084, 0x0000000000012084,
6722  0x0000000000002284, 0x0000000000012284,
6723  0x0000000000002084, 0x0000000000012084,
6724  0x0000000000002284, 0x0000000000012284,
6725  0x0000000000102084, 0x0000000000112084,
6726  0x0000000000102284, 0x0000000000112284,
6727  0x0000000000102084, 0x0000000000112084,
6728  0x0000000000102284, 0x0000000000112284,
6729  0x0000000000000000, 0x0000000000000001,
6730  0x0000000000200000, 0x0000000000200001,
6731  0x0000000000020000, 0x0000000000020001,
6732  0x0000000000220000, 0x0000000000220001,
6733  0x0000000000000002, 0x0000000000000003,
6734  0x0000000000200002, 0x0000000000200003,
6735  0x0000000000020002, 0x0000000000020003,
6736  0x0000000000220002, 0x0000000000220003,
6737  0x0000010000000000, 0x0000010000000001,
6738  0x0000010000200000, 0x0000010000200001,
6739  0x0000010000020000, 0x0000010000020001,
6740  0x0000010000220000, 0x0000010000220001,
6741  0x0000010000000002, 0x0000010000000003,
6742  0x0000010000200002, 0x0000010000200003,
6743  0x0000010000020002, 0x0000010000020003,
6744  0x0000010000220002, 0x0000010000220003,
6745  0x0000000008000000, 0x0000000008000001,
6746  0x0000000008200000, 0x0000000008200001,
6747  0x0000000008020000, 0x0000000008020001,
6748  0x0000000008220000, 0x0000000008220001,
6749  0x0000000008000002, 0x0000000008000003,
6750  0x0000000008200002, 0x0000000008200003,
6751  0x0000000008020002, 0x0000000008020003,
6752  0x0000000008220002, 0x0000000008220003,
6753  0x0000010008000000, 0x0000010008000001,
6754  0x0000010008200000, 0x0000010008200001,
6755  0x0000010008020000, 0x0000010008020001,
6756  0x0000010008220000, 0x0000010008220001,
6757  0x0000010008000002, 0x0000010008000003,
6758  0x0000010008200002, 0x0000010008200003,
6759  0x0000010008020002, 0x0000010008020003,
6760  0x0000010008220002, 0x0000010008220003,
6761  0x0000000080000000, 0x0000000080000001,
6762  0x0000000080200000, 0x0000000080200001,
6763  0x0000000080020000, 0x0000000080020001,
6764  0x0000000080220000, 0x0000000080220001,
6765  0x0000000080000002, 0x0000000080000003,
6766  0x0000000080200002, 0x0000000080200003,
6767  0x0000000080020002, 0x0000000080020003,
6768  0x0000000080220002, 0x0000000080220003,
6769  0x0000010080000000, 0x0000010080000001,
6770  0x0000010080200000, 0x0000010080200001,
6771  0x0000010080020000, 0x0000010080020001,
6772  0x0000010080220000, 0x0000010080220001,
6773  0x0000010080000002, 0x0000010080000003,
6774  0x0000010080200002, 0x0000010080200003,
6775  0x0000010080020002, 0x0000010080020003,
6776  0x0000010080220002, 0x0000010080220003,
6777  0x0000000088000000, 0x0000000088000001,
6778  0x0000000088200000, 0x0000000088200001,
6779  0x0000000088020000, 0x0000000088020001,
6780  0x0000000088220000, 0x0000000088220001,
6781  0x0000000088000002, 0x0000000088000003,
6782  0x0000000088200002, 0x0000000088200003,
6783  0x0000000088020002, 0x0000000088020003,
6784  0x0000000088220002, 0x0000000088220003,
6785  0x0000010088000000, 0x0000010088000001,
6786  0x0000010088200000, 0x0000010088200001,
6787  0x0000010088020000, 0x0000010088020001,
6788  0x0000010088220000, 0x0000010088220001,
6789  0x0000010088000002, 0x0000010088000003,
6790  0x0000010088200002, 0x0000010088200003,
6791  0x0000010088020002, 0x0000010088020003,
6792  0x0000010088220002, 0x0000010088220003,
6793  0x0000000000000000, 0x0000000000000001,
6794  0x0000000000200000, 0x0000000000200001,
6795  0x0000000000020000, 0x0000000000020001,
6796  0x0000000000220000, 0x0000000000220001,
6797  0x0000000000000002, 0x0000000000000003,
6798  0x0000000000200002, 0x0000000000200003,
6799  0x0000000000020002, 0x0000000000020003,
6800  0x0000000000220002, 0x0000000000220003,
6801  0x0000010000000000, 0x0000010000000001,
6802  0x0000010000200000, 0x0000010000200001,
6803  0x0000010000020000, 0x0000010000020001,
6804  0x0000010000220000, 0x0000010000220001,
6805  0x0000010000000002, 0x0000010000000003,
6806  0x0000010000200002, 0x0000010000200003,
6807  0x0000010000020002, 0x0000010000020003,
6808  0x0000010000220002, 0x0000010000220003,
6809  0x0000000008000000, 0x0000000008000001,
6810  0x0000000008200000, 0x0000000008200001,
6811  0x0000000008020000, 0x0000000008020001,
6812  0x0000000008220000, 0x0000000008220001,
6813  0x0000000008000002, 0x0000000008000003,
6814  0x0000000008200002, 0x0000000008200003,
6815  0x0000000008020002, 0x0000000008020003,
6816  0x0000000008220002, 0x0000000008220003,
6817  0x0000010008000000, 0x0000010008000001,
6818  0x0000010008200000, 0x0000010008200001,
6819  0x0000010008020000, 0x0000010008020001,
6820  0x0000010008220000, 0x0000010008220001,
6821  0x0000010008000002, 0x0000010008000003,
6822  0x0000010008200002, 0x0000010008200003,
6823  0x0000010008020002, 0x0000010008020003,
6824  0x0000010008220002, 0x0000010008220003,
6825  0x0000000080000000, 0x0000000080000001,
6826  0x0000000080200000, 0x0000000080200001,
6827  0x0000000080020000, 0x0000000080020001,
6828  0x0000000080220000, 0x0000000080220001,
6829  0x0000000080000002, 0x0000000080000003,
6830  0x0000000080200002, 0x0000000080200003,
6831  0x0000000080020002, 0x0000000080020003,
6832  0x0000000080220002, 0x0000000080220003,
6833  0x0000010080000000, 0x0000010080000001,
6834  0x0000010080200000, 0x0000010080200001,
6835  0x0000010080020000, 0x0000010080020001,
6836  0x0000010080220000, 0x0000010080220001,
6837  0x0000010080000002, 0x0000010080000003,
6838  0x0000010080200002, 0x0000010080200003,
6839  0x0000010080020002, 0x0000010080020003,
6840  0x0000010080220002, 0x0000010080220003,
6841  0x0000000088000000, 0x0000000088000001,
6842  0x0000000088200000, 0x0000000088200001,
6843  0x0000000088020000, 0x0000000088020001,
6844  0x0000000088220000, 0x0000000088220001,
6845  0x0000000088000002, 0x0000000088000003,
6846  0x0000000088200002, 0x0000000088200003,
6847  0x0000000088020002, 0x0000000088020003,
6848  0x0000000088220002, 0x0000000088220003,
6849  0x0000010088000000, 0x0000010088000001,
6850  0x0000010088200000, 0x0000010088200001,
6851  0x0000010088020000, 0x0000010088020001,
6852  0x0000010088220000, 0x0000010088220001,
6853  0x0000010088000002, 0x0000010088000003,
6854  0x0000010088200002, 0x0000010088200003,
6855  0x0000010088020002, 0x0000010088020003,
6856  0x0000010088220002, 0x0000010088220003,
6857  0x0000000000000000, 0x0000100000000000,
6858  0x0000000800000000, 0x0000100800000000,
6859  0x0000000000000000, 0x0000100000000000,
6860  0x0000000800000000, 0x0000100800000000,
6861  0x0000002000000000, 0x0000102000000000,
6862  0x0000002800000000, 0x0000102800000000,
6863  0x0000002000000000, 0x0000102000000000,
6864  0x0000002800000000, 0x0000102800000000,
6865  0x0000000004000000, 0x0000100004000000,
6866  0x0000000804000000, 0x0000100804000000,
6867  0x0000000004000000, 0x0000100004000000,
6868  0x0000000804000000, 0x0000100804000000,
6869  0x0000002004000000, 0x0000102004000000,
6870  0x0000002804000000, 0x0000102804000000,
6871  0x0000002004000000, 0x0000102004000000,
6872  0x0000002804000000, 0x0000102804000000,
6873  0x0000000400000000, 0x0000100400000000,
6874  0x0000000c00000000, 0x0000100c00000000,
6875  0x0000000400000000, 0x0000100400000000,
6876  0x0000000c00000000, 0x0000100c00000000,
6877  0x0000002400000000, 0x0000102400000000,
6878  0x0000002c00000000, 0x0000102c00000000,
6879  0x0000002400000000, 0x0000102400000000,
6880  0x0000002c00000000, 0x0000102c00000000,
6881  0x0000000404000000, 0x0000100404000000,
6882  0x0000000c04000000, 0x0000100c04000000,
6883  0x0000000404000000, 0x0000100404000000,
6884  0x0000000c04000000, 0x0000100c04000000,
6885  0x0000002404000000, 0x0000102404000000,
6886  0x0000002c04000000, 0x0000102c04000000,
6887  0x0000002404000000, 0x0000102404000000,
6888  0x0000002c04000000, 0x0000102c04000000,
6889  0x0000000000000000, 0x0000100000000000,
6890  0x0000000800000000, 0x0000100800000000,
6891  0x0000000000000000, 0x0000100000000000,
6892  0x0000000800000000, 0x0000100800000000,
6893  0x0000002000000000, 0x0000102000000000,
6894  0x0000002800000000, 0x0000102800000000,
6895  0x0000002000000000, 0x0000102000000000,
6896  0x0000002800000000, 0x0000102800000000,
6897  0x0000000004000000, 0x0000100004000000,
6898  0x0000000804000000, 0x0000100804000000,
6899  0x0000000004000000, 0x0000100004000000,
6900  0x0000000804000000, 0x0000100804000000,
6901  0x0000002004000000, 0x0000102004000000,
6902  0x0000002804000000, 0x0000102804000000,
6903  0x0000002004000000, 0x0000102004000000,
6904  0x0000002804000000, 0x0000102804000000,
6905  0x0000000400000000, 0x0000100400000000,
6906  0x0000000c00000000, 0x0000100c00000000,
6907  0x0000000400000000, 0x0000100400000000,
6908  0x0000000c00000000, 0x0000100c00000000,
6909  0x0000002400000000, 0x0000102400000000,
6910  0x0000002c00000000, 0x0000102c00000000,
6911  0x0000002400000000, 0x0000102400000000,
6912  0x0000002c00000000, 0x0000102c00000000,
6913  0x0000000404000000, 0x0000100404000000,
6914  0x0000000c04000000, 0x0000100c04000000,
6915  0x0000000404000000, 0x0000100404000000,
6916  0x0000000c04000000, 0x0000100c04000000,
6917  0x0000002404000000, 0x0000102404000000,
6918  0x0000002c04000000, 0x0000102c04000000,
6919  0x0000002404000000, 0x0000102404000000,
6920  0x0000002c04000000, 0x0000102c04000000,
6921  0x0000400000000000, 0x0000500000000000,
6922  0x0000400800000000, 0x0000500800000000,
6923  0x0000400000000000, 0x0000500000000000,
6924  0x0000400800000000, 0x0000500800000000,
6925  0x0000402000000000, 0x0000502000000000,
6926  0x0000402800000000, 0x0000502800000000,
6927  0x0000402000000000, 0x0000502000000000,
6928  0x0000402800000000, 0x0000502800000000,
6929  0x0000400004000000, 0x0000500004000000,
6930  0x0000400804000000, 0x0000500804000000,
6931  0x0000400004000000, 0x0000500004000000,
6932  0x0000400804000000, 0x0000500804000000,
6933  0x0000402004000000, 0x0000502004000000,
6934  0x0000402804000000, 0x0000502804000000,
6935  0x0000402004000000, 0x0000502004000000,
6936  0x0000402804000000, 0x0000502804000000,
6937  0x0000400400000000, 0x0000500400000000,
6938  0x0000400c00000000, 0x0000500c00000000,
6939  0x0000400400000000, 0x0000500400000000,
6940  0x0000400c00000000, 0x0000500c00000000,
6941  0x0000402400000000, 0x0000502400000000,
6942  0x0000402c00000000, 0x0000502c00000000,
6943  0x0000402400000000, 0x0000502400000000,
6944  0x0000402c00000000, 0x0000502c00000000,
6945  0x0000400404000000, 0x0000500404000000,
6946  0x0000400c04000000, 0x0000500c04000000,
6947  0x0000400404000000, 0x0000500404000000,
6948  0x0000400c04000000, 0x0000500c04000000,
6949  0x0000402404000000, 0x0000502404000000,
6950  0x0000402c04000000, 0x0000502c04000000,
6951  0x0000402404000000, 0x0000502404000000,
6952  0x0000402c04000000, 0x0000502c04000000,
6953  0x0000400000000000, 0x0000500000000000,
6954  0x0000400800000000, 0x0000500800000000,
6955  0x0000400000000000, 0x0000500000000000,
6956  0x0000400800000000, 0x0000500800000000,
6957  0x0000402000000000, 0x0000502000000000,
6958  0x0000402800000000, 0x0000502800000000,
6959  0x0000402000000000, 0x0000502000000000,
6960  0x0000402800000000, 0x0000502800000000,
6961  0x0000400004000000, 0x0000500004000000,
6962  0x0000400804000000, 0x0000500804000000,
6963  0x0000400004000000, 0x0000500004000000,
6964  0x0000400804000000, 0x0000500804000000,
6965  0x0000402004000000, 0x0000502004000000,
6966  0x0000402804000000, 0x0000502804000000,
6967  0x0000402004000000, 0x0000502004000000,
6968  0x0000402804000000, 0x0000502804000000,
6969  0x0000400400000000, 0x0000500400000000,
6970  0x0000400c00000000, 0x0000500c00000000,
6971  0x0000400400000000, 0x0000500400000000,
6972  0x0000400c00000000, 0x0000500c00000000,
6973  0x0000402400000000, 0x0000502400000000,
6974  0x0000402c00000000, 0x0000502c00000000,
6975  0x0000402400000000, 0x0000502400000000,
6976  0x0000402c00000000, 0x0000502c00000000,
6977  0x0000400404000000, 0x0000500404000000,
6978  0x0000400c04000000, 0x0000500c04000000,
6979  0x0000400404000000, 0x0000500404000000,
6980  0x0000400c04000000, 0x0000500c04000000,
6981  0x0000402404000000, 0x0000502404000000,
6982  0x0000402c04000000, 0x0000502c04000000,
6983  0x0000402404000000, 0x0000502404000000,
6984  0x0000402c04000000, 0x0000502c04000000,
6985  0x0000000000000000, 0x0000000020000000,
6986  0x0000008000000000, 0x0000008020000000,
6987  0x0000800000000000, 0x0000800020000000,
6988  0x0000808000000000, 0x0000808020000000,
6989  0x0000000002000000, 0x0000000022000000,
6990  0x0000008002000000, 0x0000008022000000,
6991  0x0000800002000000, 0x0000800022000000,
6992  0x0000808002000000, 0x0000808022000000,
6993  0x0000000200000000, 0x0000000220000000,
6994  0x0000008200000000, 0x0000008220000000,
6995  0x0000800200000000, 0x0000800220000000,
6996  0x0000808200000000, 0x0000808220000000,
6997  0x0000000202000000, 0x0000000222000000,
6998  0x0000008202000000, 0x0000008222000000,
6999  0x0000800202000000, 0x0000800222000000,
7000  0x0000808202000000, 0x0000808222000000,
7001  0x0000200000000000, 0x0000200020000000,
7002  0x0000208000000000, 0x0000208020000000,
7003  0x0000a00000000000, 0x0000a00020000000,
7004  0x0000a08000000000, 0x0000a08020000000,
7005  0x0000200002000000, 0x0000200022000000,
7006  0x0000208002000000, 0x0000208022000000,
7007  0x0000a00002000000, 0x0000a00022000000,
7008  0x0000a08002000000, 0x0000a08022000000,
7009  0x0000200200000000, 0x0000200220000000,
7010  0x0000208200000000, 0x0000208220000000,
7011  0x0000a00200000000, 0x0000a00220000000,
7012  0x0000a08200000000, 0x0000a08220000000,
7013  0x0000200202000000, 0x0000200222000000,
7014  0x0000208202000000, 0x0000208222000000,
7015  0x0000a00202000000, 0x0000a00222000000,
7016  0x0000a08202000000, 0x0000a08222000000,
7017  0x0000001000000000, 0x0000001020000000,
7018  0x0000009000000000, 0x0000009020000000,
7019  0x0000801000000000, 0x0000801020000000,
7020  0x0000809000000000, 0x0000809020000000,
7021  0x0000001002000000, 0x0000001022000000,
7022  0x0000009002000000, 0x0000009022000000,
7023  0x0000801002000000, 0x0000801022000000,
7024  0x0000809002000000, 0x0000809022000000,
7025  0x0000001200000000, 0x0000001220000000,
7026  0x0000009200000000, 0x0000009220000000,
7027  0x0000801200000000, 0x0000801220000000,
7028  0x0000809200000000, 0x0000809220000000,
7029  0x0000001202000000, 0x0000001222000000,
7030  0x0000009202000000, 0x0000009222000000,
7031  0x0000801202000000, 0x0000801222000000,
7032  0x0000809202000000, 0x0000809222000000,
7033  0x0000201000000000, 0x0000201020000000,
7034  0x0000209000000000, 0x0000209020000000,
7035  0x0000a01000000000, 0x0000a01020000000,
7036  0x0000a09000000000, 0x0000a09020000000,
7037  0x0000201002000000, 0x0000201022000000,
7038  0x0000209002000000, 0x0000209022000000,
7039  0x0000a01002000000, 0x0000a01022000000,
7040  0x0000a09002000000, 0x0000a09022000000,
7041  0x0000201200000000, 0x0000201220000000,
7042  0x0000209200000000, 0x0000209220000000,
7043  0x0000a01200000000, 0x0000a01220000000,
7044  0x0000a09200000000, 0x0000a09220000000,
7045  0x0000201202000000, 0x0000201222000000,
7046  0x0000209202000000, 0x0000209222000000,
7047  0x0000a01202000000, 0x0000a01222000000,
7048  0x0000a09202000000, 0x0000a09222000000,
7049  0x0000000000000000, 0x0000000020000000,
7050  0x0000008000000000, 0x0000008020000000,
7051  0x0000800000000000, 0x0000800020000000,
7052  0x0000808000000000, 0x0000808020000000,
7053  0x0000000002000000, 0x0000000022000000,
7054  0x0000008002000000, 0x0000008022000000,
7055  0x0000800002000000, 0x0000800022000000,
7056  0x0000808002000000, 0x0000808022000000,
7057  0x0000000200000000, 0x0000000220000000,
7058  0x0000008200000000, 0x0000008220000000,
7059  0x0000800200000000, 0x0000800220000000,
7060  0x0000808200000000, 0x0000808220000000,
7061  0x0000000202000000, 0x0000000222000000,
7062  0x0000008202000000, 0x0000008222000000,
7063  0x0000800202000000, 0x0000800222000000,
7064  0x0000808202000000, 0x0000808222000000,
7065  0x0000200000000000, 0x0000200020000000,
7066  0x0000208000000000, 0x0000208020000000,
7067  0x0000a00000000000, 0x0000a00020000000,
7068  0x0000a08000000000, 0x0000a08020000000,
7069  0x0000200002000000, 0x0000200022000000,
7070  0x0000208002000000, 0x0000208022000000,
7071  0x0000a00002000000, 0x0000a00022000000,
7072  0x0000a08002000000, 0x0000a08022000000,
7073  0x0000200200000000, 0x0000200220000000,
7074  0x0000208200000000, 0x0000208220000000,
7075  0x0000a00200000000, 0x0000a00220000000,
7076  0x0000a08200000000, 0x0000a08220000000,
7077  0x0000200202000000, 0x0000200222000000,
7078  0x0000208202000000, 0x0000208222000000,
7079  0x0000a00202000000, 0x0000a00222000000,
7080  0x0000a08202000000, 0x0000a08222000000,
7081  0x0000001000000000, 0x0000001020000000,
7082  0x0000009000000000, 0x0000009020000000,
7083  0x0000801000000000, 0x0000801020000000,
7084  0x0000809000000000, 0x0000809020000000,
7085  0x0000001002000000, 0x0000001022000000,
7086  0x0000009002000000, 0x0000009022000000,
7087  0x0000801002000000, 0x0000801022000000,
7088  0x0000809002000000, 0x0000809022000000,
7089  0x0000001200000000, 0x0000001220000000,
7090  0x0000009200000000, 0x0000009220000000,
7091  0x0000801200000000, 0x0000801220000000,
7092  0x0000809200000000, 0x0000809220000000,
7093  0x0000001202000000, 0x0000001222000000,
7094  0x0000009202000000, 0x0000009222000000,
7095  0x0000801202000000, 0x0000801222000000,
7096  0x0000809202000000, 0x0000809222000000,
7097  0x0000201000000000, 0x0000201020000000,
7098  0x0000209000000000, 0x0000209020000000,
7099  0x0000a01000000000, 0x0000a01020000000,
7100  0x0000a09000000000, 0x0000a09020000000,
7101  0x0000201002000000, 0x0000201022000000,
7102  0x0000209002000000, 0x0000209022000000,
7103  0x0000a01002000000, 0x0000a01022000000,
7104  0x0000a09002000000, 0x0000a09022000000,
7105  0x0000201200000000, 0x0000201220000000,
7106  0x0000209200000000, 0x0000209220000000,
7107  0x0000a01200000000, 0x0000a01220000000,
7108  0x0000a09200000000, 0x0000a09220000000,
7109  0x0000201202000000, 0x0000201222000000,
7110  0x0000209202000000, 0x0000209222000000,
7111  0x0000a01202000000, 0x0000a01222000000,
7112  0x0000a09202000000, 0x0000a09222000000,
7113  0x0000000000000000, 0x0000000040000000,
7114  0x0000000010000000, 0x0000000050000000,
7115  0x0000004000000000, 0x0000004040000000,
7116  0x0000004010000000, 0x0000004050000000,
7117  0x0000040000000000, 0x0000040040000000,
7118  0x0000040010000000, 0x0000040050000000,
7119  0x0000044000000000, 0x0000044040000000,
7120  0x0000044010000000, 0x0000044050000000,
7121  0x0000000100000000, 0x0000000140000000,
7122  0x0000000110000000, 0x0000000150000000,
7123  0x0000004100000000, 0x0000004140000000,
7124  0x0000004110000000, 0x0000004150000000,
7125  0x0000040100000000, 0x0000040140000000,
7126  0x0000040110000000, 0x0000040150000000,
7127  0x0000044100000000, 0x0000044140000000,
7128  0x0000044110000000, 0x0000044150000000,
7129  0x0000020000000000, 0x0000020040000000,
7130  0x0000020010000000, 0x0000020050000000,
7131  0x0000024000000000, 0x0000024040000000,
7132  0x0000024010000000, 0x0000024050000000,
7133  0x0000060000000000, 0x0000060040000000,
7134  0x0000060010000000, 0x0000060050000000,
7135  0x0000064000000000, 0x0000064040000000,
7136  0x0000064010000000, 0x0000064050000000,
7137  0x0000020100000000, 0x0000020140000000,
7138  0x0000020110000000, 0x0000020150000000,
7139  0x0000024100000000, 0x0000024140000000,
7140  0x0000024110000000, 0x0000024150000000,
7141  0x0000060100000000, 0x0000060140000000,
7142  0x0000060110000000, 0x0000060150000000,
7143  0x0000064100000000, 0x0000064140000000,
7144  0x0000064110000000, 0x0000064150000000,
7145  0x0000000001000000, 0x0000000041000000,
7146  0x0000000011000000, 0x0000000051000000,
7147  0x0000004001000000, 0x0000004041000000,
7148  0x0000004011000000, 0x0000004051000000,
7149  0x0000040001000000, 0x0000040041000000,
7150  0x0000040011000000, 0x0000040051000000,
7151  0x0000044001000000, 0x0000044041000000,
7152  0x0000044011000000, 0x0000044051000000,
7153  0x0000000101000000, 0x0000000141000000,
7154  0x0000000111000000, 0x0000000151000000,
7155  0x0000004101000000, 0x0000004141000000,
7156  0x0000004111000000, 0x0000004151000000,
7157  0x0000040101000000, 0x0000040141000000,
7158  0x0000040111000000, 0x0000040151000000,
7159  0x0000044101000000, 0x0000044141000000,
7160  0x0000044111000000, 0x0000044151000000,
7161  0x0000020001000000, 0x0000020041000000,
7162  0x0000020011000000, 0x0000020051000000,
7163  0x0000024001000000, 0x0000024041000000,
7164  0x0000024011000000, 0x0000024051000000,
7165  0x0000060001000000, 0x0000060041000000,
7166  0x0000060011000000, 0x0000060051000000,
7167  0x0000064001000000, 0x0000064041000000,
7168  0x0000064011000000, 0x0000064051000000,
7169  0x0000020101000000, 0x0000020141000000,
7170  0x0000020111000000, 0x0000020151000000,
7171  0x0000024101000000, 0x0000024141000000,
7172  0x0000024111000000, 0x0000024151000000,
7173  0x0000060101000000, 0x0000060141000000,
7174  0x0000060111000000, 0x0000060151000000,
7175  0x0000064101000000, 0x0000064141000000,
7176  0x0000064111000000, 0x0000064151000000,
7177  0x0000080000000000, 0x0000080040000000,
7178  0x0000080010000000, 0x0000080050000000,
7179  0x0000084000000000, 0x0000084040000000,
7180  0x0000084010000000, 0x0000084050000000,
7181  0x00000c0000000000, 0x00000c0040000000,
7182  0x00000c0010000000, 0x00000c0050000000,
7183  0x00000c4000000000, 0x00000c4040000000,
7184  0x00000c4010000000, 0x00000c4050000000,
7185  0x0000080100000000, 0x0000080140000000,
7186  0x0000080110000000, 0x0000080150000000,
7187  0x0000084100000000, 0x0000084140000000,
7188  0x0000084110000000, 0x0000084150000000,
7189  0x00000c0100000000, 0x00000c0140000000,
7190  0x00000c0110000000, 0x00000c0150000000,
7191  0x00000c4100000000, 0x00000c4140000000,
7192  0x00000c4110000000, 0x00000c4150000000,
7193  0x00000a0000000000, 0x00000a0040000000,
7194  0x00000a0010000000, 0x00000a0050000000,
7195  0x00000a4000000000, 0x00000a4040000000,
7196  0x00000a4010000000, 0x00000a4050000000,
7197  0x00000e0000000000, 0x00000e0040000000,
7198  0x00000e0010000000, 0x00000e0050000000,
7199  0x00000e4000000000, 0x00000e4040000000,
7200  0x00000e4010000000, 0x00000e4050000000,
7201  0x00000a0100000000, 0x00000a0140000000,
7202  0x00000a0110000000, 0x00000a0150000000,
7203  0x00000a4100000000, 0x00000a4140000000,
7204  0x00000a4110000000, 0x00000a4150000000,
7205  0x00000e0100000000, 0x00000e0140000000,
7206  0x00000e0110000000, 0x00000e0150000000,
7207  0x00000e4100000000, 0x00000e4140000000,
7208  0x00000e4110000000, 0x00000e4150000000,
7209  0x0000080001000000, 0x0000080041000000,
7210  0x0000080011000000, 0x0000080051000000,
7211  0x0000084001000000, 0x0000084041000000,
7212  0x0000084011000000, 0x0000084051000000,
7213  0x00000c0001000000, 0x00000c0041000000,
7214  0x00000c0011000000, 0x00000c0051000000,
7215  0x00000c4001000000, 0x00000c4041000000,
7216  0x00000c4011000000, 0x00000c4051000000,
7217  0x0000080101000000, 0x0000080141000000,
7218  0x0000080111000000, 0x0000080151000000,
7219  0x0000084101000000, 0x0000084141000000,
7220  0x0000084111000000, 0x0000084151000000,
7221  0x00000c0101000000, 0x00000c0141000000,
7222  0x00000c0111000000, 0x00000c0151000000,
7223  0x00000c4101000000, 0x00000c4141000000,
7224  0x00000c4111000000, 0x00000c4151000000,
7225  0x00000a0001000000, 0x00000a0041000000,
7226  0x00000a0011000000, 0x00000a0051000000,
7227  0x00000a4001000000, 0x00000a4041000000,
7228  0x00000a4011000000, 0x00000a4051000000,
7229  0x00000e0001000000, 0x00000e0041000000,
7230  0x00000e0011000000, 0x00000e0051000000,
7231  0x00000e4001000000, 0x00000e4041000000,
7232  0x00000e4011000000, 0x00000e4051000000,
7233  0x00000a0101000000, 0x00000a0141000000,
7234  0x00000a0111000000, 0x00000a0151000000,
7235  0x00000a4101000000, 0x00000a4141000000,
7236  0x00000a4111000000, 0x00000a4151000000,
7237  0x00000e0101000000, 0x00000e0141000000,
7238  0x00000e0111000000, 0x00000e0151000000,
7239  0x00000e4101000000, 0x00000e4141000000,
7240  0x00000e4111000000, 0x00000e4151000000
7241)
7242
7243# Inverse PC2 permutation table
7244N_PC2_K = (
7245  0x0000000000000000, 0x0000000001000000,
7246  0x0000000008000000, 0x0000000009000000,
7247  0x0000000000100000, 0x0000000001100000,
7248  0x0000000008100000, 0x0000000009100000,
7249  0x0000000000000040, 0x0000000001000040,
7250  0x0000000008000040, 0x0000000009000040,
7251  0x0000000000100040, 0x0000000001100040,
7252  0x0000000008100040, 0x0000000009100040,
7253  0x0000000000004000, 0x0000000001004000,
7254  0x0000000008004000, 0x0000000009004000,
7255  0x0000000000104000, 0x0000000001104000,
7256  0x0000000008104000, 0x0000000009104000,
7257  0x0000000000004040, 0x0000000001004040,
7258  0x0000000008004040, 0x0000000009004040,
7259  0x0000000000104040, 0x0000000001104040,
7260  0x0000000008104040, 0x0000000009104040,
7261  0x0000000000000400, 0x0000000001000400,
7262  0x0000000008000400, 0x0000000009000400,
7263  0x0000000000100400, 0x0000000001100400,
7264  0x0000000008100400, 0x0000000009100400,
7265  0x0000000000000440, 0x0000000001000440,
7266  0x0000000008000440, 0x0000000009000440,
7267  0x0000000000100440, 0x0000000001100440,
7268  0x0000000008100440, 0x0000000009100440,
7269  0x0000000000004400, 0x0000000001004400,
7270  0x0000000008004400, 0x0000000009004400,
7271  0x0000000000104400, 0x0000000001104400,
7272  0x0000000008104400, 0x0000000009104400,
7273  0x0000000000004440, 0x0000000001004440,
7274  0x0000000008004440, 0x0000000009004440,
7275  0x0000000000104440, 0x0000000001104440,
7276  0x0000000008104440, 0x0000000009104440,
7277  0x0000000000000008, 0x0000000001000008,
7278  0x0000000008000008, 0x0000000009000008,
7279  0x0000000000100008, 0x0000000001100008,
7280  0x0000000008100008, 0x0000000009100008,
7281  0x0000000000000048, 0x0000000001000048,
7282  0x0000000008000048, 0x0000000009000048,
7283  0x0000000000100048, 0x0000000001100048,
7284  0x0000000008100048, 0x0000000009100048,
7285  0x0000000000004008, 0x0000000001004008,
7286  0x0000000008004008, 0x0000000009004008,
7287  0x0000000000104008, 0x0000000001104008,
7288  0x0000000008104008, 0x0000000009104008,
7289  0x0000000000004048, 0x0000000001004048,
7290  0x0000000008004048, 0x0000000009004048,
7291  0x0000000000104048, 0x0000000001104048,
7292  0x0000000008104048, 0x0000000009104048,
7293  0x0000000000000408, 0x0000000001000408,
7294  0x0000000008000408, 0x0000000009000408,
7295  0x0000000000100408, 0x0000000001100408,
7296  0x0000000008100408, 0x0000000009100408,
7297  0x0000000000000448, 0x0000000001000448,
7298  0x0000000008000448, 0x0000000009000448,
7299  0x0000000000100448, 0x0000000001100448,
7300  0x0000000008100448, 0x0000000009100448,
7301  0x0000000000004408, 0x0000000001004408,
7302  0x0000000008004408, 0x0000000009004408,
7303  0x0000000000104408, 0x0000000001104408,
7304  0x0000000008104408, 0x0000000009104408,
7305  0x0000000000004448, 0x0000000001004448,
7306  0x0000000008004448, 0x0000000009004448,
7307  0x0000000000104448, 0x0000000001104448,
7308  0x0000000008104448, 0x0000000009104448,
7309  0x0000000000400000, 0x0000000001400000,
7310  0x0000000008400000, 0x0000000009400000,
7311  0x0000000000500000, 0x0000000001500000,
7312  0x0000000008500000, 0x0000000009500000,
7313  0x0000000000400040, 0x0000000001400040,
7314  0x0000000008400040, 0x0000000009400040,
7315  0x0000000000500040, 0x0000000001500040,
7316  0x0000000008500040, 0x0000000009500040,
7317  0x0000000000404000, 0x0000000001404000,
7318  0x0000000008404000, 0x0000000009404000,
7319  0x0000000000504000, 0x0000000001504000,
7320  0x0000000008504000, 0x0000000009504000,
7321  0x0000000000404040, 0x0000000001404040,
7322  0x0000000008404040, 0x0000000009404040,
7323  0x0000000000504040, 0x0000000001504040,
7324  0x0000000008504040, 0x0000000009504040,
7325  0x0000000000400400, 0x0000000001400400,
7326  0x0000000008400400, 0x0000000009400400,
7327  0x0000000000500400, 0x0000000001500400,
7328  0x0000000008500400, 0x0000000009500400,
7329  0x0000000000400440, 0x0000000001400440,
7330  0x0000000008400440, 0x0000000009400440,
7331  0x0000000000500440, 0x0000000001500440,
7332  0x0000000008500440, 0x0000000009500440,
7333  0x0000000000404400, 0x0000000001404400,
7334  0x0000000008404400, 0x0000000009404400,
7335  0x0000000000504400, 0x0000000001504400,
7336  0x0000000008504400, 0x0000000009504400,
7337  0x0000000000404440, 0x0000000001404440,
7338  0x0000000008404440, 0x0000000009404440,
7339  0x0000000000504440, 0x0000000001504440,
7340  0x0000000008504440, 0x0000000009504440,
7341  0x0000000000400008, 0x0000000001400008,
7342  0x0000000008400008, 0x0000000009400008,
7343  0x0000000000500008, 0x0000000001500008,
7344  0x0000000008500008, 0x0000000009500008,
7345  0x0000000000400048, 0x0000000001400048,
7346  0x0000000008400048, 0x0000000009400048,
7347  0x0000000000500048, 0x0000000001500048,
7348  0x0000000008500048, 0x0000000009500048,
7349  0x0000000000404008, 0x0000000001404008,
7350  0x0000000008404008, 0x0000000009404008,
7351  0x0000000000504008, 0x0000000001504008,
7352  0x0000000008504008, 0x0000000009504008,
7353  0x0000000000404048, 0x0000000001404048,
7354  0x0000000008404048, 0x0000000009404048,
7355  0x0000000000504048, 0x0000000001504048,
7356  0x0000000008504048, 0x0000000009504048,
7357  0x0000000000400408, 0x0000000001400408,
7358  0x0000000008400408, 0x0000000009400408,
7359  0x0000000000500408, 0x0000000001500408,
7360  0x0000000008500408, 0x0000000009500408,
7361  0x0000000000400448, 0x0000000001400448,
7362  0x0000000008400448, 0x0000000009400448,
7363  0x0000000000500448, 0x0000000001500448,
7364  0x0000000008500448, 0x0000000009500448,
7365  0x0000000000404408, 0x0000000001404408,
7366  0x0000000008404408, 0x0000000009404408,
7367  0x0000000000504408, 0x0000000001504408,
7368  0x0000000008504408, 0x0000000009504408,
7369  0x0000000000404448, 0x0000000001404448,
7370  0x0000000008404448, 0x0000000009404448,
7371  0x0000000000504448, 0x0000000001504448,
7372  0x0000000008504448, 0x0000000009504448,
7373  0x0000000000000000, 0x0000000000000001,
7374  0x0000000000020000, 0x0000000000020001,
7375  0x0000000000000080, 0x0000000000000081,
7376  0x0000000000020080, 0x0000000000020081,
7377  0x0000000000001000, 0x0000000000001001,
7378  0x0000000000021000, 0x0000000000021001,
7379  0x0000000000001080, 0x0000000000001081,
7380  0x0000000000021080, 0x0000000000021081,
7381  0x0000000000000100, 0x0000000000000101,
7382  0x0000000000020100, 0x0000000000020101,
7383  0x0000000000000180, 0x0000000000000181,
7384  0x0000000000020180, 0x0000000000020181,
7385  0x0000000000001100, 0x0000000000001101,
7386  0x0000000000021100, 0x0000000000021101,
7387  0x0000000000001180, 0x0000000000001181,
7388  0x0000000000021180, 0x0000000000021181,
7389  0x0000000000800000, 0x0000000000800001,
7390  0x0000000000820000, 0x0000000000820001,
7391  0x0000000000800080, 0x0000000000800081,
7392  0x0000000000820080, 0x0000000000820081,
7393  0x0000000000801000, 0x0000000000801001,
7394  0x0000000000821000, 0x0000000000821001,
7395  0x0000000000801080, 0x0000000000801081,
7396  0x0000000000821080, 0x0000000000821081,
7397  0x0000000000800100, 0x0000000000800101,
7398  0x0000000000820100, 0x0000000000820101,
7399  0x0000000000800180, 0x0000000000800181,
7400  0x0000000000820180, 0x0000000000820181,
7401  0x0000000000801100, 0x0000000000801101,
7402  0x0000000000821100, 0x0000000000821101,
7403  0x0000000000801180, 0x0000000000801181,
7404  0x0000000000821180, 0x0000000000821181,
7405  0x0000000000000800, 0x0000000000000801,
7406  0x0000000000020800, 0x0000000000020801,
7407  0x0000000000000880, 0x0000000000000881,
7408  0x0000000000020880, 0x0000000000020881,
7409  0x0000000000001800, 0x0000000000001801,
7410  0x0000000000021800, 0x0000000000021801,
7411  0x0000000000001880, 0x0000000000001881,
7412  0x0000000000021880, 0x0000000000021881,
7413  0x0000000000000900, 0x0000000000000901,
7414  0x0000000000020900, 0x0000000000020901,
7415  0x0000000000000980, 0x0000000000000981,
7416  0x0000000000020980, 0x0000000000020981,
7417  0x0000000000001900, 0x0000000000001901,
7418  0x0000000000021900, 0x0000000000021901,
7419  0x0000000000001980, 0x0000000000001981,
7420  0x0000000000021980, 0x0000000000021981,
7421  0x0000000000800800, 0x0000000000800801,
7422  0x0000000000820800, 0x0000000000820801,
7423  0x0000000000800880, 0x0000000000800881,
7424  0x0000000000820880, 0x0000000000820881,
7425  0x0000000000801800, 0x0000000000801801,
7426  0x0000000000821800, 0x0000000000821801,
7427  0x0000000000801880, 0x0000000000801881,
7428  0x0000000000821880, 0x0000000000821881,
7429  0x0000000000800900, 0x0000000000800901,
7430  0x0000000000820900, 0x0000000000820901,
7431  0x0000000000800980, 0x0000000000800981,
7432  0x0000000000820980, 0x0000000000820981,
7433  0x0000000000801900, 0x0000000000801901,
7434  0x0000000000821900, 0x0000000000821901,
7435  0x0000000000801980, 0x0000000000801981,
7436  0x0000000000821980, 0x0000000000821981,
7437  0x0000000000000020, 0x0000000000000021,
7438  0x0000000000020020, 0x0000000000020021,
7439  0x00000000000000a0, 0x00000000000000a1,
7440  0x00000000000200a0, 0x00000000000200a1,
7441  0x0000000000001020, 0x0000000000001021,
7442  0x0000000000021020, 0x0000000000021021,
7443  0x00000000000010a0, 0x00000000000010a1,
7444  0x00000000000210a0, 0x00000000000210a1,
7445  0x0000000000000120, 0x0000000000000121,
7446  0x0000000000020120, 0x0000000000020121,
7447  0x00000000000001a0, 0x00000000000001a1,
7448  0x00000000000201a0, 0x00000000000201a1,
7449  0x0000000000001120, 0x0000000000001121,
7450  0x0000000000021120, 0x0000000000021121,
7451  0x00000000000011a0, 0x00000000000011a1,
7452  0x00000000000211a0, 0x00000000000211a1,
7453  0x0000000000800020, 0x0000000000800021,
7454  0x0000000000820020, 0x0000000000820021,
7455  0x00000000008000a0, 0x00000000008000a1,
7456  0x00000000008200a0, 0x00000000008200a1,
7457  0x0000000000801020, 0x0000000000801021,
7458  0x0000000000821020, 0x0000000000821021,
7459  0x00000000008010a0, 0x00000000008010a1,
7460  0x00000000008210a0, 0x00000000008210a1,
7461  0x0000000000800120, 0x0000000000800121,
7462  0x0000000000820120, 0x0000000000820121,
7463  0x00000000008001a0, 0x00000000008001a1,
7464  0x00000000008201a0, 0x00000000008201a1,
7465  0x0000000000801120, 0x0000000000801121,
7466  0x0000000000821120, 0x0000000000821121,
7467  0x00000000008011a0, 0x00000000008011a1,
7468  0x00000000008211a0, 0x00000000008211a1,
7469  0x0000000000000820, 0x0000000000000821,
7470  0x0000000000020820, 0x0000000000020821,
7471  0x00000000000008a0, 0x00000000000008a1,
7472  0x00000000000208a0, 0x00000000000208a1,
7473  0x0000000000001820, 0x0000000000001821,
7474  0x0000000000021820, 0x0000000000021821,
7475  0x00000000000018a0, 0x00000000000018a1,
7476  0x00000000000218a0, 0x00000000000218a1,
7477  0x0000000000000920, 0x0000000000000921,
7478  0x0000000000020920, 0x0000000000020921,
7479  0x00000000000009a0, 0x00000000000009a1,
7480  0x00000000000209a0, 0x00000000000209a1,
7481  0x0000000000001920, 0x0000000000001921,
7482  0x0000000000021920, 0x0000000000021921,
7483  0x00000000000019a0, 0x00000000000019a1,
7484  0x00000000000219a0, 0x00000000000219a1,
7485  0x0000000000800820, 0x0000000000800821,
7486  0x0000000000820820, 0x0000000000820821,
7487  0x00000000008008a0, 0x00000000008008a1,
7488  0x00000000008208a0, 0x00000000008208a1,
7489  0x0000000000801820, 0x0000000000801821,
7490  0x0000000000821820, 0x0000000000821821,
7491  0x00000000008018a0, 0x00000000008018a1,
7492  0x00000000008218a0, 0x00000000008218a1,
7493  0x0000000000800920, 0x0000000000800921,
7494  0x0000000000820920, 0x0000000000820921,
7495  0x00000000008009a0, 0x00000000008009a1,
7496  0x00000000008209a0, 0x00000000008209a1,
7497  0x0000000000801920, 0x0000000000801921,
7498  0x0000000000821920, 0x0000000000821921,
7499  0x00000000008019a0, 0x00000000008019a1,
7500  0x00000000008219a0, 0x00000000008219a1,
7501  0x0000000000000000, 0x0000000000010000,
7502  0x0000000004000000, 0x0000000004010000,
7503  0x0000000000000002, 0x0000000000010002,
7504  0x0000000004000002, 0x0000000004010002,
7505  0x0000000000000200, 0x0000000000010200,
7506  0x0000000004000200, 0x0000000004010200,
7507  0x0000000000000202, 0x0000000000010202,
7508  0x0000000004000202, 0x0000000004010202,
7509  0x0000000000080000, 0x0000000000090000,
7510  0x0000000004080000, 0x0000000004090000,
7511  0x0000000000080002, 0x0000000000090002,
7512  0x0000000004080002, 0x0000000004090002,
7513  0x0000000000080200, 0x0000000000090200,
7514  0x0000000004080200, 0x0000000004090200,
7515  0x0000000000080202, 0x0000000000090202,
7516  0x0000000004080202, 0x0000000004090202,
7517  0x0000000002000000, 0x0000000002010000,
7518  0x0000000006000000, 0x0000000006010000,
7519  0x0000000002000002, 0x0000000002010002,
7520  0x0000000006000002, 0x0000000006010002,
7521  0x0000000002000200, 0x0000000002010200,
7522  0x0000000006000200, 0x0000000006010200,
7523  0x0000000002000202, 0x0000000002010202,
7524  0x0000000006000202, 0x0000000006010202,
7525  0x0000000002080000, 0x0000000002090000,
7526  0x0000000006080000, 0x0000000006090000,
7527  0x0000000002080002, 0x0000000002090002,
7528  0x0000000006080002, 0x0000000006090002,
7529  0x0000000002080200, 0x0000000002090200,
7530  0x0000000006080200, 0x0000000006090200,
7531  0x0000000002080202, 0x0000000002090202,
7532  0x0000000006080202, 0x0000000006090202,
7533  0x0000000000000010, 0x0000000000010010,
7534  0x0000000004000010, 0x0000000004010010,
7535  0x0000000000000012, 0x0000000000010012,
7536  0x0000000004000012, 0x0000000004010012,
7537  0x0000000000000210, 0x0000000000010210,
7538  0x0000000004000210, 0x0000000004010210,
7539  0x0000000000000212, 0x0000000000010212,
7540  0x0000000004000212, 0x0000000004010212,
7541  0x0000000000080010, 0x0000000000090010,
7542  0x0000000004080010, 0x0000000004090010,
7543  0x0000000000080012, 0x0000000000090012,
7544  0x0000000004080012, 0x0000000004090012,
7545  0x0000000000080210, 0x0000000000090210,
7546  0x0000000004080210, 0x0000000004090210,
7547  0x0000000000080212, 0x0000000000090212,
7548  0x0000000004080212, 0x0000000004090212,
7549  0x0000000002000010, 0x0000000002010010,
7550  0x0000000006000010, 0x0000000006010010,
7551  0x0000000002000012, 0x0000000002010012,
7552  0x0000000006000012, 0x0000000006010012,
7553  0x0000000002000210, 0x0000000002010210,
7554  0x0000000006000210, 0x0000000006010210,
7555  0x0000000002000212, 0x0000000002010212,
7556  0x0000000006000212, 0x0000000006010212,
7557  0x0000000002080010, 0x0000000002090010,
7558  0x0000000006080010, 0x0000000006090010,
7559  0x0000000002080012, 0x0000000002090012,
7560  0x0000000006080012, 0x0000000006090012,
7561  0x0000000002080210, 0x0000000002090210,
7562  0x0000000006080210, 0x0000000006090210,
7563  0x0000000002080212, 0x0000000002090212,
7564  0x0000000006080212, 0x0000000006090212,
7565  0x0000000000008000, 0x0000000000018000,
7566  0x0000000004008000, 0x0000000004018000,
7567  0x0000000000008002, 0x0000000000018002,
7568  0x0000000004008002, 0x0000000004018002,
7569  0x0000000000008200, 0x0000000000018200,
7570  0x0000000004008200, 0x0000000004018200,
7571  0x0000000000008202, 0x0000000000018202,
7572  0x0000000004008202, 0x0000000004018202,
7573  0x0000000000088000, 0x0000000000098000,
7574  0x0000000004088000, 0x0000000004098000,
7575  0x0000000000088002, 0x0000000000098002,
7576  0x0000000004088002, 0x0000000004098002,
7577  0x0000000000088200, 0x0000000000098200,
7578  0x0000000004088200, 0x0000000004098200,
7579  0x0000000000088202, 0x0000000000098202,
7580  0x0000000004088202, 0x0000000004098202,
7581  0x0000000002008000, 0x0000000002018000,
7582  0x0000000006008000, 0x0000000006018000,
7583  0x0000000002008002, 0x0000000002018002,
7584  0x0000000006008002, 0x0000000006018002,
7585  0x0000000002008200, 0x0000000002018200,
7586  0x0000000006008200, 0x0000000006018200,
7587  0x0000000002008202, 0x0000000002018202,
7588  0x0000000006008202, 0x0000000006018202,
7589  0x0000000002088000, 0x0000000002098000,
7590  0x0000000006088000, 0x0000000006098000,
7591  0x0000000002088002, 0x0000000002098002,
7592  0x0000000006088002, 0x0000000006098002,
7593  0x0000000002088200, 0x0000000002098200,
7594  0x0000000006088200, 0x0000000006098200,
7595  0x0000000002088202, 0x0000000002098202,
7596  0x0000000006088202, 0x0000000006098202,
7597  0x0000000000008010, 0x0000000000018010,
7598  0x0000000004008010, 0x0000000004018010,
7599  0x0000000000008012, 0x0000000000018012,
7600  0x0000000004008012, 0x0000000004018012,
7601  0x0000000000008210, 0x0000000000018210,
7602  0x0000000004008210, 0x0000000004018210,
7603  0x0000000000008212, 0x0000000000018212,
7604  0x0000000004008212, 0x0000000004018212,
7605  0x0000000000088010, 0x0000000000098010,
7606  0x0000000004088010, 0x0000000004098010,
7607  0x0000000000088012, 0x0000000000098012,
7608  0x0000000004088012, 0x0000000004098012,
7609  0x0000000000088210, 0x0000000000098210,
7610  0x0000000004088210, 0x0000000004098210,
7611  0x0000000000088212, 0x0000000000098212,
7612  0x0000000004088212, 0x0000000004098212,
7613  0x0000000002008010, 0x0000000002018010,
7614  0x0000000006008010, 0x0000000006018010,
7615  0x0000000002008012, 0x0000000002018012,
7616  0x0000000006008012, 0x0000000006018012,
7617  0x0000000002008210, 0x0000000002018210,
7618  0x0000000006008210, 0x0000000006018210,
7619  0x0000000002008212, 0x0000000002018212,
7620  0x0000000006008212, 0x0000000006018212,
7621  0x0000000002088010, 0x0000000002098010,
7622  0x0000000006088010, 0x0000000006098010,
7623  0x0000000002088012, 0x0000000002098012,
7624  0x0000000006088012, 0x0000000006098012,
7625  0x0000000002088210, 0x0000000002098210,
7626  0x0000000006088210, 0x0000000006098210,
7627  0x0000000002088212, 0x0000000002098212,
7628  0x0000000006088212, 0x0000000006098212,
7629  0x0000000000000000, 0x0040000000000000,
7630  0x0000080000000000, 0x0040080000000000,
7631  0x0000001000000000, 0x0040001000000000,
7632  0x0000081000000000, 0x0040081000000000,
7633  0x0000000020000000, 0x0040000020000000,
7634  0x0000080020000000, 0x0040080020000000,
7635  0x0000001020000000, 0x0040001020000000,
7636  0x0000081020000000, 0x0040081020000000,
7637  0x0002000000000000, 0x0042000000000000,
7638  0x0002080000000000, 0x0042080000000000,
7639  0x0002001000000000, 0x0042001000000000,
7640  0x0002081000000000, 0x0042081000000000,
7641  0x0002000020000000, 0x0042000020000000,
7642  0x0002080020000000, 0x0042080020000000,
7643  0x0002001020000000, 0x0042001020000000,
7644  0x0002081020000000, 0x0042081020000000,
7645  0x0000010000000000, 0x0040010000000000,
7646  0x0000090000000000, 0x0040090000000000,
7647  0x0000011000000000, 0x0040011000000000,
7648  0x0000091000000000, 0x0040091000000000,
7649  0x0000010020000000, 0x0040010020000000,
7650  0x0000090020000000, 0x0040090020000000,
7651  0x0000011020000000, 0x0040011020000000,
7652  0x0000091020000000, 0x0040091020000000,
7653  0x0002010000000000, 0x0042010000000000,
7654  0x0002090000000000, 0x0042090000000000,
7655  0x0002011000000000, 0x0042011000000000,
7656  0x0002091000000000, 0x0042091000000000,
7657  0x0002010020000000, 0x0042010020000000,
7658  0x0002090020000000, 0x0042090020000000,
7659  0x0002011020000000, 0x0042011020000000,
7660  0x0002091020000000, 0x0042091020000000,
7661  0x0001000000000000, 0x0041000000000000,
7662  0x0001080000000000, 0x0041080000000000,
7663  0x0001001000000000, 0x0041001000000000,
7664  0x0001081000000000, 0x0041081000000000,
7665  0x0001000020000000, 0x0041000020000000,
7666  0x0001080020000000, 0x0041080020000000,
7667  0x0001001020000000, 0x0041001020000000,
7668  0x0001081020000000, 0x0041081020000000,
7669  0x0003000000000000, 0x0043000000000000,
7670  0x0003080000000000, 0x0043080000000000,
7671  0x0003001000000000, 0x0043001000000000,
7672  0x0003081000000000, 0x0043081000000000,
7673  0x0003000020000000, 0x0043000020000000,
7674  0x0003080020000000, 0x0043080020000000,
7675  0x0003001020000000, 0x0043001020000000,
7676  0x0003081020000000, 0x0043081020000000,
7677  0x0001010000000000, 0x0041010000000000,
7678  0x0001090000000000, 0x0041090000000000,
7679  0x0001011000000000, 0x0041011000000000,
7680  0x0001091000000000, 0x0041091000000000,
7681  0x0001010020000000, 0x0041010020000000,
7682  0x0001090020000000, 0x0041090020000000,
7683  0x0001011020000000, 0x0041011020000000,
7684  0x0001091020000000, 0x0041091020000000,
7685  0x0003010000000000, 0x0043010000000000,
7686  0x0003090000000000, 0x0043090000000000,
7687  0x0003011000000000, 0x0043011000000000,
7688  0x0003091000000000, 0x0043091000000000,
7689  0x0003010020000000, 0x0043010020000000,
7690  0x0003090020000000, 0x0043090020000000,
7691  0x0003011020000000, 0x0043011020000000,
7692  0x0003091020000000, 0x0043091020000000,
7693  0x0000000040000000, 0x0040000040000000,
7694  0x0000080040000000, 0x0040080040000000,
7695  0x0000001040000000, 0x0040001040000000,
7696  0x0000081040000000, 0x0040081040000000,
7697  0x0000000060000000, 0x0040000060000000,
7698  0x0000080060000000, 0x0040080060000000,
7699  0x0000001060000000, 0x0040001060000000,
7700  0x0000081060000000, 0x0040081060000000,
7701  0x0002000040000000, 0x0042000040000000,
7702  0x0002080040000000, 0x0042080040000000,
7703  0x0002001040000000, 0x0042001040000000,
7704  0x0002081040000000, 0x0042081040000000,
7705  0x0002000060000000, 0x0042000060000000,
7706  0x0002080060000000, 0x0042080060000000,
7707  0x0002001060000000, 0x0042001060000000,
7708  0x0002081060000000, 0x0042081060000000,
7709  0x0000010040000000, 0x0040010040000000,
7710  0x0000090040000000, 0x0040090040000000,
7711  0x0000011040000000, 0x0040011040000000,
7712  0x0000091040000000, 0x0040091040000000,
7713  0x0000010060000000, 0x0040010060000000,
7714  0x0000090060000000, 0x0040090060000000,
7715  0x0000011060000000, 0x0040011060000000,
7716  0x0000091060000000, 0x0040091060000000,
7717  0x0002010040000000, 0x0042010040000000,
7718  0x0002090040000000, 0x0042090040000000,
7719  0x0002011040000000, 0x0042011040000000,
7720  0x0002091040000000, 0x0042091040000000,
7721  0x0002010060000000, 0x0042010060000000,
7722  0x0002090060000000, 0x0042090060000000,
7723  0x0002011060000000, 0x0042011060000000,
7724  0x0002091060000000, 0x0042091060000000,
7725  0x0001000040000000, 0x0041000040000000,
7726  0x0001080040000000, 0x0041080040000000,
7727  0x0001001040000000, 0x0041001040000000,
7728  0x0001081040000000, 0x0041081040000000,
7729  0x0001000060000000, 0x0041000060000000,
7730  0x0001080060000000, 0x0041080060000000,
7731  0x0001001060000000, 0x0041001060000000,
7732  0x0001081060000000, 0x0041081060000000,
7733  0x0003000040000000, 0x0043000040000000,
7734  0x0003080040000000, 0x0043080040000000,
7735  0x0003001040000000, 0x0043001040000000,
7736  0x0003081040000000, 0x0043081040000000,
7737  0x0003000060000000, 0x0043000060000000,
7738  0x0003080060000000, 0x0043080060000000,
7739  0x0003001060000000, 0x0043001060000000,
7740  0x0003081060000000, 0x0043081060000000,
7741  0x0001010040000000, 0x0041010040000000,
7742  0x0001090040000000, 0x0041090040000000,
7743  0x0001011040000000, 0x0041011040000000,
7744  0x0001091040000000, 0x0041091040000000,
7745  0x0001010060000000, 0x0041010060000000,
7746  0x0001090060000000, 0x0041090060000000,
7747  0x0001011060000000, 0x0041011060000000,
7748  0x0001091060000000, 0x0041091060000000,
7749  0x0003010040000000, 0x0043010040000000,
7750  0x0003090040000000, 0x0043090040000000,
7751  0x0003011040000000, 0x0043011040000000,
7752  0x0003091040000000, 0x0043091040000000,
7753  0x0003010060000000, 0x0043010060000000,
7754  0x0003090060000000, 0x0043090060000000,
7755  0x0003011060000000, 0x0043011060000000,
7756  0x0003091060000000, 0x0043091060000000,
7757  0x0000000000000000, 0x0010000000000000,
7758  0x0000100000000000, 0x0010100000000000,
7759  0x0000002000000000, 0x0010002000000000,
7760  0x0000102000000000, 0x0010102000000000,
7761  0x0000000200000000, 0x0010000200000000,
7762  0x0000100200000000, 0x0010100200000000,
7763  0x0000002200000000, 0x0010002200000000,
7764  0x0000102200000000, 0x0010102200000000,
7765  0x0000400000000000, 0x0010400000000000,
7766  0x0000500000000000, 0x0010500000000000,
7767  0x0000402000000000, 0x0010402000000000,
7768  0x0000502000000000, 0x0010502000000000,
7769  0x0000400200000000, 0x0010400200000000,
7770  0x0000500200000000, 0x0010500200000000,
7771  0x0000402200000000, 0x0010402200000000,
7772  0x0000502200000000, 0x0010502200000000,
7773  0x0000000800000000, 0x0010000800000000,
7774  0x0000100800000000, 0x0010100800000000,
7775  0x0000002800000000, 0x0010002800000000,
7776  0x0000102800000000, 0x0010102800000000,
7777  0x0000000a00000000, 0x0010000a00000000,
7778  0x0000100a00000000, 0x0010100a00000000,
7779  0x0000002a00000000, 0x0010002a00000000,
7780  0x0000102a00000000, 0x0010102a00000000,
7781  0x0000400800000000, 0x0010400800000000,
7782  0x0000500800000000, 0x0010500800000000,
7783  0x0000402800000000, 0x0010402800000000,
7784  0x0000502800000000, 0x0010502800000000,
7785  0x0000400a00000000, 0x0010400a00000000,
7786  0x0000500a00000000, 0x0010500a00000000,
7787  0x0000402a00000000, 0x0010402a00000000,
7788  0x0000502a00000000, 0x0010502a00000000,
7789  0x0004000000000000, 0x0014000000000000,
7790  0x0004100000000000, 0x0014100000000000,
7791  0x0004002000000000, 0x0014002000000000,
7792  0x0004102000000000, 0x0014102000000000,
7793  0x0004000200000000, 0x0014000200000000,
7794  0x0004100200000000, 0x0014100200000000,
7795  0x0004002200000000, 0x0014002200000000,
7796  0x0004102200000000, 0x0014102200000000,
7797  0x0004400000000000, 0x0014400000000000,
7798  0x0004500000000000, 0x0014500000000000,
7799  0x0004402000000000, 0x0014402000000000,
7800  0x0004502000000000, 0x0014502000000000,
7801  0x0004400200000000, 0x0014400200000000,
7802  0x0004500200000000, 0x0014500200000000,
7803  0x0004402200000000, 0x0014402200000000,
7804  0x0004502200000000, 0x0014502200000000,
7805  0x0004000800000000, 0x0014000800000000,
7806  0x0004100800000000, 0x0014100800000000,
7807  0x0004002800000000, 0x0014002800000000,
7808  0x0004102800000000, 0x0014102800000000,
7809  0x0004000a00000000, 0x0014000a00000000,
7810  0x0004100a00000000, 0x0014100a00000000,
7811  0x0004002a00000000, 0x0014002a00000000,
7812  0x0004102a00000000, 0x0014102a00000000,
7813  0x0004400800000000, 0x0014400800000000,
7814  0x0004500800000000, 0x0014500800000000,
7815  0x0004402800000000, 0x0014402800000000,
7816  0x0004502800000000, 0x0014502800000000,
7817  0x0004400a00000000, 0x0014400a00000000,
7818  0x0004500a00000000, 0x0014500a00000000,
7819  0x0004402a00000000, 0x0014402a00000000,
7820  0x0004502a00000000, 0x0014502a00000000,
7821  0x0000020000000000, 0x0010020000000000,
7822  0x0000120000000000, 0x0010120000000000,
7823  0x0000022000000000, 0x0010022000000000,
7824  0x0000122000000000, 0x0010122000000000,
7825  0x0000020200000000, 0x0010020200000000,
7826  0x0000120200000000, 0x0010120200000000,
7827  0x0000022200000000, 0x0010022200000000,
7828  0x0000122200000000, 0x0010122200000000,
7829  0x0000420000000000, 0x0010420000000000,
7830  0x0000520000000000, 0x0010520000000000,
7831  0x0000422000000000, 0x0010422000000000,
7832  0x0000522000000000, 0x0010522000000000,
7833  0x0000420200000000, 0x0010420200000000,
7834  0x0000520200000000, 0x0010520200000000,
7835  0x0000422200000000, 0x0010422200000000,
7836  0x0000522200000000, 0x0010522200000000,
7837  0x0000020800000000, 0x0010020800000000,
7838  0x0000120800000000, 0x0010120800000000,
7839  0x0000022800000000, 0x0010022800000000,
7840  0x0000122800000000, 0x0010122800000000,
7841  0x0000020a00000000, 0x0010020a00000000,
7842  0x0000120a00000000, 0x0010120a00000000,
7843  0x0000022a00000000, 0x0010022a00000000,
7844  0x0000122a00000000, 0x0010122a00000000,
7845  0x0000420800000000, 0x0010420800000000,
7846  0x0000520800000000, 0x0010520800000000,
7847  0x0000422800000000, 0x0010422800000000,
7848  0x0000522800000000, 0x0010522800000000,
7849  0x0000420a00000000, 0x0010420a00000000,
7850  0x0000520a00000000, 0x0010520a00000000,
7851  0x0000422a00000000, 0x0010422a00000000,
7852  0x0000522a00000000, 0x0010522a00000000,
7853  0x0004020000000000, 0x0014020000000000,
7854  0x0004120000000000, 0x0014120000000000,
7855  0x0004022000000000, 0x0014022000000000,
7856  0x0004122000000000, 0x0014122000000000,
7857  0x0004020200000000, 0x0014020200000000,
7858  0x0004120200000000, 0x0014120200000000,
7859  0x0004022200000000, 0x0014022200000000,
7860  0x0004122200000000, 0x0014122200000000,
7861  0x0004420000000000, 0x0014420000000000,
7862  0x0004520000000000, 0x0014520000000000,
7863  0x0004422000000000, 0x0014422000000000,
7864  0x0004522000000000, 0x0014522000000000,
7865  0x0004420200000000, 0x0014420200000000,
7866  0x0004520200000000, 0x0014520200000000,
7867  0x0004422200000000, 0x0014422200000000,
7868  0x0004522200000000, 0x0014522200000000,
7869  0x0004020800000000, 0x0014020800000000,
7870  0x0004120800000000, 0x0014120800000000,
7871  0x0004022800000000, 0x0014022800000000,
7872  0x0004122800000000, 0x0014122800000000,
7873  0x0004020a00000000, 0x0014020a00000000,
7874  0x0004120a00000000, 0x0014120a00000000,
7875  0x0004022a00000000, 0x0014022a00000000,
7876  0x0004122a00000000, 0x0014122a00000000,
7877  0x0004420800000000, 0x0014420800000000,
7878  0x0004520800000000, 0x0014520800000000,
7879  0x0004422800000000, 0x0014422800000000,
7880  0x0004522800000000, 0x0014522800000000,
7881  0x0004420a00000000, 0x0014420a00000000,
7882  0x0004520a00000000, 0x0014520a00000000,
7883  0x0004422a00000000, 0x0014422a00000000,
7884  0x0004522a00000000, 0x0014522a00000000,
7885  0x0000000000000000, 0x0000000010000000,
7886  0x0020000000000000, 0x0020000010000000,
7887  0x0008000000000000, 0x0008000010000000,
7888  0x0028000000000000, 0x0028000010000000,
7889  0x0080000000000000, 0x0080000010000000,
7890  0x00a0000000000000, 0x00a0000010000000,
7891  0x0088000000000000, 0x0088000010000000,
7892  0x00a8000000000000, 0x00a8000010000000,
7893  0x0000000100000000, 0x0000000110000000,
7894  0x0020000100000000, 0x0020000110000000,
7895  0x0008000100000000, 0x0008000110000000,
7896  0x0028000100000000, 0x0028000110000000,
7897  0x0080000100000000, 0x0080000110000000,
7898  0x00a0000100000000, 0x00a0000110000000,
7899  0x0088000100000000, 0x0088000110000000,
7900  0x00a8000100000000, 0x00a8000110000000,
7901  0x0000200000000000, 0x0000200010000000,
7902  0x0020200000000000, 0x0020200010000000,
7903  0x0008200000000000, 0x0008200010000000,
7904  0x0028200000000000, 0x0028200010000000,
7905  0x0080200000000000, 0x0080200010000000,
7906  0x00a0200000000000, 0x00a0200010000000,
7907  0x0088200000000000, 0x0088200010000000,
7908  0x00a8200000000000, 0x00a8200010000000,
7909  0x0000200100000000, 0x0000200110000000,
7910  0x0020200100000000, 0x0020200110000000,
7911  0x0008200100000000, 0x0008200110000000,
7912  0x0028200100000000, 0x0028200110000000,
7913  0x0080200100000000, 0x0080200110000000,
7914  0x00a0200100000000, 0x00a0200110000000,
7915  0x0088200100000000, 0x0088200110000000,
7916  0x00a8200100000000, 0x00a8200110000000,
7917  0x0000008000000000, 0x0000008010000000,
7918  0x0020008000000000, 0x0020008010000000,
7919  0x0008008000000000, 0x0008008010000000,
7920  0x0028008000000000, 0x0028008010000000,
7921  0x0080008000000000, 0x0080008010000000,
7922  0x00a0008000000000, 0x00a0008010000000,
7923  0x0088008000000000, 0x0088008010000000,
7924  0x00a8008000000000, 0x00a8008010000000,
7925  0x0000008100000000, 0x0000008110000000,
7926  0x0020008100000000, 0x0020008110000000,
7927  0x0008008100000000, 0x0008008110000000,
7928  0x0028008100000000, 0x0028008110000000,
7929  0x0080008100000000, 0x0080008110000000,
7930  0x00a0008100000000, 0x00a0008110000000,
7931  0x0088008100000000, 0x0088008110000000,
7932  0x00a8008100000000, 0x00a8008110000000,
7933  0x0000208000000000, 0x0000208010000000,
7934  0x0020208000000000, 0x0020208010000000,
7935  0x0008208000000000, 0x0008208010000000,
7936  0x0028208000000000, 0x0028208010000000,
7937  0x0080208000000000, 0x0080208010000000,
7938  0x00a0208000000000, 0x00a0208010000000,
7939  0x0088208000000000, 0x0088208010000000,
7940  0x00a8208000000000, 0x00a8208010000000,
7941  0x0000208100000000, 0x0000208110000000,
7942  0x0020208100000000, 0x0020208110000000,
7943  0x0008208100000000, 0x0008208110000000,
7944  0x0028208100000000, 0x0028208110000000,
7945  0x0080208100000000, 0x0080208110000000,
7946  0x00a0208100000000, 0x00a0208110000000,
7947  0x0088208100000000, 0x0088208110000000,
7948  0x00a8208100000000, 0x00a8208110000000,
7949  0x0000040000000000, 0x0000040010000000,
7950  0x0020040000000000, 0x0020040010000000,
7951  0x0008040000000000, 0x0008040010000000,
7952  0x0028040000000000, 0x0028040010000000,
7953  0x0080040000000000, 0x0080040010000000,
7954  0x00a0040000000000, 0x00a0040010000000,
7955  0x0088040000000000, 0x0088040010000000,
7956  0x00a8040000000000, 0x00a8040010000000,
7957  0x0000040100000000, 0x0000040110000000,
7958  0x0020040100000000, 0x0020040110000000,
7959  0x0008040100000000, 0x0008040110000000,
7960  0x0028040100000000, 0x0028040110000000,
7961  0x0080040100000000, 0x0080040110000000,
7962  0x00a0040100000000, 0x00a0040110000000,
7963  0x0088040100000000, 0x0088040110000000,
7964  0x00a8040100000000, 0x00a8040110000000,
7965  0x0000240000000000, 0x0000240010000000,
7966  0x0020240000000000, 0x0020240010000000,
7967  0x0008240000000000, 0x0008240010000000,
7968  0x0028240000000000, 0x0028240010000000,
7969  0x0080240000000000, 0x0080240010000000,
7970  0x00a0240000000000, 0x00a0240010000000,
7971  0x0088240000000000, 0x0088240010000000,
7972  0x00a8240000000000, 0x00a8240010000000,
7973  0x0000240100000000, 0x0000240110000000,
7974  0x0020240100000000, 0x0020240110000000,
7975  0x0008240100000000, 0x0008240110000000,
7976  0x0028240100000000, 0x0028240110000000,
7977  0x0080240100000000, 0x0080240110000000,
7978  0x00a0240100000000, 0x00a0240110000000,
7979  0x0088240100000000, 0x0088240110000000,
7980  0x00a8240100000000, 0x00a8240110000000,
7981  0x0000048000000000, 0x0000048010000000,
7982  0x0020048000000000, 0x0020048010000000,
7983  0x0008048000000000, 0x0008048010000000,
7984  0x0028048000000000, 0x0028048010000000,
7985  0x0080048000000000, 0x0080048010000000,
7986  0x00a0048000000000, 0x00a0048010000000,
7987  0x0088048000000000, 0x0088048010000000,
7988  0x00a8048000000000, 0x00a8048010000000,
7989  0x0000048100000000, 0x0000048110000000,
7990  0x0020048100000000, 0x0020048110000000,
7991  0x0008048100000000, 0x0008048110000000,
7992  0x0028048100000000, 0x0028048110000000,
7993  0x0080048100000000, 0x0080048110000000,
7994  0x00a0048100000000, 0x00a0048110000000,
7995  0x0088048100000000, 0x0088048110000000,
7996  0x00a8048100000000, 0x00a8048110000000,
7997  0x0000248000000000, 0x0000248010000000,
7998  0x0020248000000000, 0x0020248010000000,
7999  0x0008248000000000, 0x0008248010000000,
8000  0x0028248000000000, 0x0028248010000000,
8001  0x0080248000000000, 0x0080248010000000,
8002  0x00a0248000000000, 0x00a0248010000000,
8003  0x0088248000000000, 0x0088248010000000,
8004  0x00a8248000000000, 0x00a8248010000000,
8005  0x0000248100000000, 0x0000248110000000,
8006  0x0020248100000000, 0x0020248110000000,
8007  0x0008248100000000, 0x0008248110000000,
8008  0x0028248100000000, 0x0028248110000000,
8009  0x0080248100000000, 0x0080248110000000,
8010  0x00a0248100000000, 0x00a0248110000000,
8011  0x0088248100000000, 0x0088248110000000,
8012  0x00a8248100000000, 0x00a8248110000000
8013)
8014
8015# Substitution boxes
8016SBOX_K = (
8017  (
8018   14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,
8019   3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,
8020   4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,
8021   15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13)
8022  ,
8023  (
8024   15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,
8025   9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,
8026   0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,
8027   5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9)
8028  ,
8029  (
8030   10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,
8031   1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,
8032   13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,
8033   11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12)
8034  ,
8035  (
8036   7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,
8037   1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,
8038   10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,
8039   15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14)
8040  ,
8041  (
8042   2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,
8043   8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,
8044   4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,
8045   15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3)
8046  ,
8047  (
8048   12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,
8049   0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,
8050   9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,
8051   7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13)
8052  ,
8053  (
8054   4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,
8055   3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,
8056   1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,
8057   10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12)
8058  ,
8059  (
8060   13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,
8061   10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,
8062   7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,
8063   0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11)
8064)
8065
8066# Number of left rotations per key schedule round (0: 1 rotation, 1: 2 rotations)
8067left_shifts = (
8068  0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0
8069)
8070
8071# Test vectors: 64-bits secret keys
8072keys = (
8073  0xdc515cff944a58ec, 0x41f21efba9e3e146,
8074  0x231be9e8cde7438d, 0xc233d79fc4c9079a,
8075  0xba31e45830a3d95a, 0xa8585ae9845ea8d4,
8076  0x769b9eb424548611, 0xf521bd3d8ddcf087,
8077  0xc241f8e1adfc2367, 0xb9ea4adcd36b7796,
8078  0x42ec7cb0d43b06fb, 0x89ec1b187fdba45c,
8079  0x40fb26fadeaac33a, 0xf005c13cb77cc794,
8080  0x8c89e9f9af5c26bb, 0x57b135ebe4f150b3,
8081  0x84e9eaa1823a0ae5, 0x31480247476496bd,
8082  0x471cee7bc564fdc5, 0xb15e234bd3792f63,
8083  0xca11709e110959dc, 0x5e1b2110a8af703b,
8084  0xd648d447c315015c, 0x24ba579b307da5f5,
8085  0x8f7fbd235af87029, 0x55b52acae74ed3e8,
8086  0xca795c4dea3d1a34, 0xc5fa4bcb286cfd05,
8087  0x91aa591a6a55aaa2, 0x173b0904b75c29d3,
8088  0xace2fcf0e3e40a9e, 0x4afdb5822e4eb5a9,
8089  0x858a1a29c6541348, 0xf10eae1847a8f044,
8090  0x574c9dd7b62dc29b, 0xf8c422339daf82cd,
8091  0x67ad64d4e7766e47, 0x8c4ad3c42e308af6,
8092  0x85fbecb248072304, 0x5e20a8baab86acc3,
8093  0xaed96867cc33fbb7, 0x2c1467d35dd95a34,
8094  0x811027a8f8f6b105, 0xacbc85446e78a2fa,
8095  0x57d0cd1a79da9e69, 0x1b51cf25abb36b48,
8096  0xb2fb3a3195991690, 0xf49b46bc8de9c3e5,
8097  0x5be9bbe22c5e8153, 0x6cd07e85f5fad054,
8098  0x71664a82d364af98, 0xf2652870725a288a,
8099  0x7044e2de947cdfa5, 0xe5d36051bdadefac,
8100  0xbd177fe4b88576f1, 0x7b7c97c0467c32bb,
8101  0xdfdada619c0b6063, 0x66b40b69172ffe3a,
8102  0x4393bfacb2076f1f, 0x6f2dd38dc0efbb4f,
8103  0xe13513c110c722e4, 0x69ed61967f12e7ec,
8104  0x45e5d50ad7f8589d, 0x3896a7c1d6f4091f
8105)
8106
8107# Test vectors: 64-bits plain texts
8108pts = (
8109  0x456723c698694873, 0x1f297ccd58bad7ab,
8110  0x007c62c2085427f8, 0x0f76255af92e7263,
8111  0xfb665d32500dd7b7, 0x6125895db105a317,
8112  0xbdab8cb2d0cde0c6, 0xc40e1d82f8748641,
8113  0x1a70dde9c83ed4a1, 0x823e5f01c67e2a97,
8114  0xd78fa438585c4e2a, 0x9a32ccaf8d3c8f54,
8115  0xf902481a78febb43, 0x85fba529edd13fe6,
8116  0x65750fd815bea861, 0xb6a83c99b60f4095,
8117  0x7e055def0bf7bf00, 0x8fca700b4acb7fd0,
8118  0x121f5d233f1e9ea8, 0x2b147b733e5a82c5,
8119  0x813bdf70ee640624, 0xe0aa5bd4d9ac11f2,
8120  0x7e33e7cd0ee3c550, 0x4fbb016f84220119,
8121  0x370b1ee1ac1a011c, 0x18f834a4821b7713,
8122  0x1298f6329938e8e0, 0x5dbc6e5f1b4e8277,
8123  0x6aacd486fe21fa2b, 0x8dbeec7021b5e373,
8124  0xff36509412b3c9af, 0x6b4fff328d153149,
8125  0x8a082c70afd41bb2, 0x069ae80af6bc1dd5,
8126  0xfeac5a5bb9f3ab8e, 0x9d094342f3e5e806,
8127  0x4ea34d849e7fd42d, 0x4cdede328c1c3dec,
8128  0x2e20e8233685856c, 0x2ff43bec0b0b28b9,
8129  0xf63e4a0580f15dec, 0x4699585039a3d2e3,
8130  0x4ff7945edfa0d5f2, 0x63940401d9bec1b4,
8131  0xcf49ef6900e67e23, 0x256ab37e714c517e,
8132  0x63848b53413ae494, 0x3e326f57d844eaee,
8133  0x36258ecf42088df5, 0x6f609daad2d28ab2,
8134  0x09d83735b4e8bcd4, 0xb9d9aba89a87ae75,
8135  0xb73fb462b6801329, 0x8089674e6a57ed59,
8136  0x97867295ac8008ec, 0x2b8c530c25661df1,
8137  0x4c22fcfc45e4bc66, 0x41af06624dbc2783,
8138  0x7dffc3af07273b16, 0x12b8d76d8d118e34,
8139  0xd08906d477b6b063, 0x1a245e834a6780d8,
8140  0x25458639230268d8, 0xac776509e6d11ba5
8141)
8142
8143# Test vectors: 64-bits cipher texts
8144cts = (
8145  0xb844c7af695959be, 0x86d7d9a023e0ce3a,
8146  0x56b9b8abea00f1bb, 0x0ab443abbf60a0d1,
8147  0xe82a6ceebfa4c58a, 0xf1b94fbca594768a,
8148  0xc2691df1bc083120, 0x0c1af3e8dea81d06,
8149  0xc5195c5f59385f14, 0x2f6a331dbb621987,
8150  0xbb77be4c6051dc64, 0x6d0d8a67cf13a281,
8151  0xd3bc722edd13c148, 0xf09532958156df8e,
8152  0x09ab38274e770fe6, 0x2e3aae9ed10e61ad,
8153  0x9c64c69db1e52252, 0x64a65d2c28cd3c5e,
8154  0xdc648ca9e49c0ad8, 0x75ece8090d2c2033,
8155  0xe72763d0a912580c, 0xae89b2411f665434,
8156  0x4c8fd9cf8400e517, 0x144a07f0708492b8,
8157  0x6cb63189594f019f, 0x6fe9aa6bc5707699,
8158  0x3a6af11af8237ff4, 0x68d2e753e75d2e28,
8159  0xf9bfc51d5648c987, 0xf3cc0ea23779e335,
8160  0xc715faf14bb00c2d, 0x5fd59d5ccc4335b8,
8161  0x24bb8d40c23e386a, 0x5a3b9af76055f808,
8162  0xd7a8bfceb10bbd7d, 0x59dca2eba49a6cfa,
8163  0x9b74833eeb6d208e, 0xd96d816443fb7a25,
8164  0xf136709b4e6dc7f5, 0xa212136fb0cfc154,
8165  0xe6524c1bc1b3b2e6, 0x22be3b10a32416b9,
8166  0x2e057d39efb4f17f, 0xbb3c49cdc74daa59,
8167  0x55144d3b88613650, 0x3d819bba7f73a0d8,
8168  0xaa230a4f68794f6b, 0x34ec95d793201e87,
8169  0xf13d289d40b27da6, 0x9cc3c6c5bbd3a0fd,
8170  0xd201eb6e852b27c5, 0xf2c5fda37e191296,
8171  0x5b610cd018fba813, 0x77d69e80a4a17011,
8172  0x603afc79daaa0932, 0xb10fdc2e3c4e8aea,
8173  0x374ad0248680de8a, 0x2bd66c604409c679,
8174  0x2f514a4fe984a739, 0x1f9f8d5655f0800b,
8175  0x12aa594bbf33c73a, 0x779ca596645910a6,
8176  0x0cba75a71b56dba3, 0x13c43294bdee2658
8177)
8178
8179def permute(val, table, name):
8180    '''Permutate val with permutation table named name, internal, do not use.'''
8181
8182    res = 0
8183    tmp = val
8184    b = len(table) // 256
8185    assert (tmp >> 8*b) == 0, '\nInvalid input value for {name} permutation: 0x{value:016x}'.format(name=name, value=val)
8186    for i in range(b):
8187        idx = i*256 + (tmp & 0xff)
8188        res |= table[idx]
8189        tmp >>= 8
8190    return res
8191
8192def ip(val):
8193    """
8194Initial permutation (64 to 64 bits). Same as n_fp().
8195
8196Args:
8197    val (long): 64 bits input
8198
8199Returns:
8200    The permutated input as a 64 bits integer
8201
8202"""
8203    return permute(val, IP_K, "IP")
8204
8205def n_ip(val):
8206    """
8207Inverse of initial permutation (64 to 64 bits). Same as fp().
8208
8209Args:
8210    val (long): 64 bits input
8211
8212Returns:
8213    The permutated input as a 64 bits integer
8214
8215"""
8216    return permute(val, N_IP_K, "N_IP")
8217
8218def fp(val):
8219    """
8220Final permutation (64 to 64 bits). Inverse of initial permutation, same as n_ip().
8221
8222Args:
8223    val (long): 64 bits input
8224
8225Returns:
8226    The permutated input as a 64 bits integer
8227
8228"""
8229    return permute(val, N_IP_K, "FP")
8230
8231def n_fp(val):
8232    """
8233Inverse of final permutation (64 to 64 bits). Same as ip().
8234
8235Args:
8236    val (long): 64 bits input
8237
8238Returns:
8239    The permutated input as a 64 bits integer
8240
8241"""
8242    return permute(val, IP_K, "N_FP")
8243
8244def e(val):
8245    """
8246E expansion - permutation (32 to 48 bits).
8247
8248Args:
8249    val (long): 32 bits input
8250
8251Returns:
8252    The expanded and permutated input as a 48 bits integer
8253
8254"""
8255    return permute(val, E_K, "E")
8256
8257def n_e(val):
8258    """
8259Inverse of E expansion - permutation (48 to 32 bits).
8260
8261Duplicated bits must have the same value. If they do not, an error is raised.
8262
8263Args:
8264    val (long): 48 bits input
8265
8266Returns:
8267    The permutated and selected input as a 32 bits integer
8268"""
8269    tmp = (val << 2) | (val >> 46)
8270    assert (tmp & 0x0c30c30c30c3) == ((tmp >> 2) & 0x0c30c30c30c3), '\nInvalid input value for N_E permutation: 0x{value:016x}'.format(value=val);
8271    return permute(val, N_E_K, "N_E")
8272
8273def p(val):
8274    """
8275P permutation (32 to 32 bits).
8276
8277Args:
8278    val (long): 32 bits input
8279
8280Returns:
8281    The permutated input as a 32 bits integer
8282
8283"""
8284    return permute(val, P_K, "P")
8285
8286def n_p(val):
8287    """
8288Inverse of P permutation (32 to 32 bits).
8289
8290Args:
8291    val (long): 32 bits input
8292
8293Returns:
8294    The permutated input as a 32 bits integer
8295
8296"""
8297    return permute(val, N_P_K, "N_P")
8298
8299def hamming_weight(v):
8300    """
8301Hamming weight.
8302
8303Args:
8304    val: N-bits input
8305
8306Returns:
8307    The Hamming weight of the input (number of 1's)
8308
8309"""
8310    v = v - ((v>>1) & 0x5555555555555555)
8311    v = (v & 0x3333333333333333) + ((v>>2) & 0x3333333333333333)
8312    return (((v + (v>>4) & 0xF0F0F0F0F0F0F0F) * 0x101010101010101) >> 56) & 0xFF
8313
8314def pc1(val):
8315    """
8316PC1 permutation - selection (64 to 56 bits). No parity check.
8317
8318Args:
8319    val (long): 64 bits input
8320
8321Returns:
8322    The permutated and selected input as a 56 bits integer
8323
8324"""
8325    return permute(val, PC1_K, "PC1")
8326
8327def set_parity_bits(val):
8328    """
8329Computes the 8 parity bits of a 64 bits word.
8330
8331Parity bits are the rightmost bit of each byte. Once computed, the number of
8332set bits of each byte is odd, as specified in the DES standard.
8333
8334Args:
8335    val (long): 64 bits input
8336
8337Returns:
8338    The input with odd parity bits, as a 64 bits integer
8339
8340"""
8341    res = 0
8342    mask1 = 0xfe
8343    mask2 = 0x1
8344    for i in range(8):
8345        tmp = val & mask1
8346        if hamming_weight(tmp) % 2 == 0:
8347            tmp |= mask2
8348        res |= tmp
8349        mask1 <<= 8
8350        mask2 <<= 8
8351    return res
8352
8353def n_pc1(val):
8354    """
8355Inverse of PC1 permutation - selection (56 to 64 bits).
8356
8357Parity bits are computed.
8358
8359Args:
8360    val (long): 56 bits input
8361
8362Returns:
8363    The permutated and expanded input as a 64 bits integer
8364
8365"""
8366    res = permute(val, N_PC1_K, "N_PC1")
8367    return set_parity_bits(res)
8368
8369def pc2(val):
8370    """
8371PC2 permutation - selection (56 to 48 bits). No parity check.
8372
8373Args:
8374    val (long): 56 bits input
8375
8376Returns:
8377    The permutated and selected input as a 48 bits integer
8378
8379"""
8380    return permute(val, PC2_K, "PC2")
8381
8382def n_pc2(val):
8383    """
8384Inverse of PC2 permutation - selection (48 to 56 bits). Missing
8385bits are set to 0.
8386
8387Args:
8388    val (long): 48 bits input
8389
8390Returns:
8391    The permutated and expanded input as a 56 bits integer
8392
8393"""
8394    return permute(val, N_PC2_K, "N_PC2")
8395
8396def sbox(sbox, val):
8397    """"
8398Single SBox computation (6 to 4 bits).
8399
8400Args:
8401    sbox (int): SBox number, from 1 to 8
8402    val (long): 6 bits input
8403
8404Returns:
8405    The 4 bits output of SBox number `sbox` corresponding to the
8406    6 bits input, as a 4 bits integer
8407
8408"""
8409    assert (sbox >= 1 and sbox <= 8), '\nInvalid sbox number: {value:d}'.format(value=sbox)
8410    assert (val <= 0x3f), '\nInvalid sbox input value: 0x{value:016x}'.format(value=val)
8411    return SBOX_K[sbox - 1][val]
8412
8413def sboxes(val):
8414    """
8415All SBoxes computation (48 to 32 bits).
8416
8417Args:
8418    val (long): 48 bits input
8419
8420Returns:
8421    The 32 bits output of all SBoxes corresponding to the 48 bits
8422    input, as a 32 bits integer
8423
8424"""
8425    assert (val >> 48) == 0, '\nInvalid sboxes input value: 0x{value:016x}'.format(value=val)
8426    res = 0
8427    for i in range(1, 9):
8428        res = (res << 4) | sbox(i, (val >> ((8 - i) * 6)) & 0x3f)
8429    return res
8430
8431def right_half(val):
8432    """
8433Returns the 32 bits right half of a 64 bits word.
8434
8435Args:
8436    val (long): 64 bits input
8437
8438Returns:
8439    The 32 bits right half of a 64 bits word, as a 32 bits integer
8440
8441"""
8442    return val & 0xffffffff
8443
8444def left_half(val):
8445    """
8446Returns the 32 bits left half of a 64 bits word.
8447
8448Args:
8449    val (long): 64 bits input
8450
8451Returns:
8452    The 32 bits left half of a 64 bits word, as a 32 bits integer
8453
8454"""
8455    return val >> 32
8456
8457def ls(val):
8458    """
8459Applies the **left shift** rotation of the standard (56 to 56 bits).
8460
8461Args:
8462    val (long): 56 bits input
8463
8464Returns:
8465    The rotated input, as a 56 bits integer
8466
8467"""
8468    assert (val >> 56) == 0, '\nInvalid left shift input value: 0x{value:016x}'.format(value=val)
8469    c = val & 0xfffffff0000000
8470    d = val & 0xfffffff
8471    c = ((c << 1) | (c >> 27)) & 0xfffffff0000000
8472    d = ((d << 1) | (d >> 27)) & 0xfffffff
8473    return c | d
8474
8475def rs(val):
8476    """
8477Applies the **right shift** rotation of the standard (56 to 56 bits).
8478
8479Args:
8480    val (long): 56 bits input
8481
8482Returns:
8483    The rotated input, as a 56 bits integer
8484
8485"""
8486    assert (val >> 56) == 0, '\nInvalid right shift input value: 0x{value:016x}'.format(value=val)
8487    c = val & 0xfffffff0000000
8488    d = val & 0xfffffff
8489    c = ((c >> 1) | (c << 27)) & 0xfffffff0000000
8490    d = ((d >> 1) | (d << 27)) & 0xfffffff
8491    return c | d
8492
8493def f(rk, val):
8494    """
8495The F function of the standard (48+32 bits to 32 bits).
8496
8497Args:
8498    rk (long): 48 bits round key
8499    val (long): 32 bits data input
8500
8501Returns:
8502    The transformed input as a 32 bits integer
8503
8504"""
8505    assert (val >> 32) == 0, '\nInvalid R input value for F function: 0x{value:016x}'.format(value=val)
8506    assert (rk >> 48) == 0, '\nInvalid RK input value for F function: 0x{value:016x}'.format(value=rk)
8507    return p (sboxes (e (val) ^ rk))
8508
8509def key_schedule(val):
8510    """
8511Computes the whole key schedule from a 64 bits secret key and
8512stores the sixteen 48 bits round keys in a list.
8513
8514Args:
8515    val (long): 64 bits key
8516
8517Returns:
8518    The sixteen 48 bits round keys in a list
8519
8520"""
8521    ks = [0 for i in range(16)]
8522    cd = pc1(val)
8523    for i in range(16):
8524        cd = ls(cd)
8525        if (left_shifts[i] == 1):
8526            cd = ls(cd)
8527        ks[i] = pc2(cd)
8528    return ks
8529
8530def enc(ks, val):
8531    """
8532Enciphers a 64 bits plaintext with a pre-computed key schedule.
8533
8534Args:
8535    ks (List[long]): The pre-computed key schedule
8536    val (long): The 64 bits plaintext
8537
8538Returns:
8539    The enciphered plaintext as a 64 bits integer
8540
8541"""
8542    lr = ip(val)
8543    r = right_half(lr)
8544    l = left_half(lr)
8545    for i in range(16):
8546        tmp = r
8547        r = l ^ f(ks[i], r)
8548        l = tmp
8549    return fp ((r << 32) | l)
8550
8551def dec(ks, val):
8552    """
8553Deciphers a 64 bits ciphertext with a pre-computed key schedule.
8554
8555Args:
8556    ks (List[long]): The pre-computed key schedule
8557    val (long): The 64 bits ciphertext
8558
8559Returns:
8560    The deciphered ciphertext as a 64 bits integer
8561
8562"""
8563    lr = ip(val)
8564    r = right_half(lr)
8565    l = left_half(lr)
8566    for i in range(15, -1, -1):
8567        tmp = r
8568        r = l ^ f(ks[i], r)
8569        l = tmp
8570    return fp((r << 32) | l)
8571
8572def check():
8573    """
8574A functional verification of the DES implementation. Runs a
8575number of encipherments with enc() and the corresponding
8576decipherments with dec() and checks the results against
8577pre-computed plaintexts, ciphertexts and secret keys.
8578
8579Returns:
8580    `True` on success, `False` on errors
8581
8582"""
8583    ok = 1
8584    for i in range(NUM_TEST_VECTORS):
8585        ks = key_schedule(keys[i])
8586        tmp = enc(ks, pts[i])
8587        if tmp != cts[i]:
8588            print('encryption {i:2d}\nk=0x{k:016x} p=0x{p:016x} o=0x{o:016x} act=0x{act:016x}\n'.format(i=i+1, k=keys[i], p=pts[i], o=cts[i], act=tmp), file=sys.stderr)
8589            ok = 0
8590        tmp = dec(ks, cts[i])
8591        if tmp != pts[i]:
8592            print('decryption {i:2d}\nk=0x{k:016x} c=0x{c:016x} o=0x{o:016x} act=0x{act:016x}\n'.format(i=i+1, k=keys[i], c=cts[i], o=pts[i], act=tmp), file=sys.stderr)
8593            ok = 0
8594    return ok
8595
8596# vim: set tabstop=8 softtabstop=4 shiftwidth=4 expandtab textwidth=0:
NUM_TEST_VECTORS = 64
IP_K = (0, 549755813888, 128, 549755814016, 140737488355328, 141287244169216, 140737488355456, 141287244169344, 32768, 549755846656, 32896, 549755846784, 140737488388096, 141287244201984, 140737488388224, 141287244202112, 36028797018963968, 36029346774777856, 36028797018964096, 36029346774777984, 36169534507319296, 36170084263133184, 36169534507319424, 36170084263133312, 36028797018996736, 36029346774810624, 36028797018996864, 36029346774810752, 36169534507352064, 36170084263165952, 36169534507352192, 36170084263166080, 8388608, 549764202496, 8388736, 549764202624, 140737496743936, 141287252557824, 140737496744064, 141287252557952, 8421376, 549764235264, 8421504, 549764235392, 140737496776704, 141287252590592, 140737496776832, 141287252590720, 36028797027352576, 36029346783166464, 36028797027352704, 36029346783166592, 36169534515707904, 36170084271521792, 36169534515708032, 36170084271521920, 36028797027385344, 36029346783199232, 36028797027385472, 36029346783199360, 36169534515740672, 36170084271554560, 36169534515740800, 36170084271554688, 9223372036854775808, 9223372586610589696, 9223372036854775936, 9223372586610589824, 9223512774343131136, 9223513324098945024, 9223512774343131264, 9223513324098945152, 9223372036854808576, 9223372586610622464, 9223372036854808704, 9223372586610622592, 9223512774343163904, 9223513324098977792, 9223512774343164032, 9223513324098977920, 9259400833873739776, 9259401383629553664, 9259400833873739904, 9259401383629553792, 9259541571362095104, 9259542121117908992, 9259541571362095232, 9259542121117909120, 9259400833873772544, 9259401383629586432, 9259400833873772672, 9259401383629586560, 9259541571362127872, 9259542121117941760, 9259541571362128000, 9259542121117941888, 9223372036863164416, 9223372586618978304, 9223372036863164544, 9223372586618978432, 9223512774351519744, 9223513324107333632, 9223512774351519872, 9223513324107333760, 9223372036863197184, 9223372586619011072, 9223372036863197312, 9223372586619011200, 9223512774351552512, 9223513324107366400, 9223512774351552640, 9223513324107366528, 9259400833882128384, 9259401383637942272, 9259400833882128512, 9259401383637942400, 9259541571370483712, 9259542121126297600, 9259541571370483840, 9259542121126297728, 9259400833882161152, 9259401383637975040, 9259400833882161280, 9259401383637975168, 9259541571370516480, 9259542121126330368, 9259541571370516608, 9259542121126330496, 2147483648, 551903297536, 2147483776, 551903297664, 140739635838976, 141289391652864, 140739635839104, 141289391652992, 2147516416, 551903330304, 2147516544, 551903330432, 140739635871744, 141289391685632, 140739635871872, 141289391685760, 36028799166447616, 36029348922261504, 36028799166447744, 36029348922261632, 36169536654802944, 36170086410616832, 36169536654803072, 36170086410616960, 36028799166480384, 36029348922294272, 36028799166480512, 36029348922294400, 36169536654835712, 36170086410649600, 36169536654835840, 36170086410649728, 2155872256, 551911686144, 2155872384, 551911686272, 140739644227584, 141289400041472, 140739644227712, 141289400041600, 2155905024, 551911718912, 2155905152, 551911719040, 140739644260352, 141289400074240, 140739644260480, 141289400074368, 36028799174836224, 36029348930650112, 36028799174836352, 36029348930650240, 36169536663191552, 36170086419005440, 36169536663191680, 36170086419005568, 36028799174868992, 36029348930682880, 36028799174869120, 36029348930683008, 36169536663224320, 36170086419038208, 36169536663224448, 36170086419038336, 9223372039002259456, 9223372588758073344, 9223372039002259584, 9223372588758073472, 9223512776490614784, 9223513326246428672, 9223512776490614912, 9223513326246428800, 9223372039002292224, 9223372588758106112, 9223372039002292352, 9223372588758106240, 9223512776490647552, 9223513326246461440, 9223512776490647680, 9223513326246461568, 9259400836021223424, 9259401385777037312, 9259400836021223552, 9259401385777037440, 9259541573509578752, 9259542123265392640, 9259541573509578880, 9259542123265392768, 9259400836021256192, 9259401385777070080, 9259400836021256320, 9259401385777070208, 9259541573509611520, 9259542123265425408, 9259541573509611648, 9259542123265425536, 9223372039010648064, 9223372588766461952, 9223372039010648192, 9223372588766462080, 9223512776499003392, 9223513326254817280, 9223512776499003520, 9223513326254817408, 9223372039010680832, 9223372588766494720, 9223372039010680960, 9223372588766494848, 9223512776499036160, 9223513326254850048, 9223512776499036288, 9223513326254850176, 9259400836029612032, 9259401385785425920, 9259400836029612160, 9259401385785426048, 9259541573517967360, 9259542123273781248, 9259541573517967488, 9259542123273781376, 9259400836029644800, 9259401385785458688, 9259400836029644928, 9259401385785458816, 9259541573518000128, 9259542123273814016, 9259541573518000256, 9259542123273814144, 0, 274877906944, 64, 274877907008, 70368744177664, 70643622084608, 70368744177728, 70643622084672, 16384, 274877923328, 16448, 274877923392, 70368744194048, 70643622100992, 70368744194112, 70643622101056, 18014398509481984, 18014673387388928, 18014398509482048, 18014673387388992, 18084767253659648, 18085042131566592, 18084767253659712, 18085042131566656, 18014398509498368, 18014673387405312, 18014398509498432, 18014673387405376, 18084767253676032, 18085042131582976, 18084767253676096, 18085042131583040, 4194304, 274882101248, 4194368, 274882101312, 70368748371968, 70643626278912, 70368748372032, 70643626278976, 4210688, 274882117632, 4210752, 274882117696, 70368748388352, 70643626295296, 70368748388416, 70643626295360, 18014398513676288, 18014673391583232, 18014398513676352, 18014673391583296, 18084767257853952, 18085042135760896, 18084767257854016, 18085042135760960, 18014398513692672, 18014673391599616, 18014398513692736, 18014673391599680, 18084767257870336, 18085042135777280, 18084767257870400, 18085042135777344, 4611686018427387904, 4611686293305294848, 4611686018427387968, 4611686293305294912, 4611756387171565568, 4611756662049472512, 4611756387171565632, 4611756662049472576, 4611686018427404288, 4611686293305311232, 4611686018427404352, 4611686293305311296, 4611756387171581952, 4611756662049488896, 4611756387171582016, 4611756662049488960, 4629700416936869888, 4629700691814776832, 4629700416936869952, 4629700691814776896, 4629770785681047552, 4629771060558954496, 4629770785681047616, 4629771060558954560, 4629700416936886272, 4629700691814793216, 4629700416936886336, 4629700691814793280, 4629770785681063936, 4629771060558970880, 4629770785681064000, 4629771060558970944, 4611686018431582208, 4611686293309489152, 4611686018431582272, 4611686293309489216, 4611756387175759872, 4611756662053666816, 4611756387175759936, 4611756662053666880, 4611686018431598592, 4611686293309505536, 4611686018431598656, 4611686293309505600, 4611756387175776256, 4611756662053683200, 4611756387175776320, 4611756662053683264, 4629700416941064192, 4629700691818971136, 4629700416941064256, 4629700691818971200, 4629770785685241856, 4629771060563148800, 4629770785685241920, 4629771060563148864, 4629700416941080576, 4629700691818987520, 4629700416941080640, 4629700691818987584, 4629770785685258240, 4629771060563165184, 4629770785685258304, 4629771060563165248, 1073741824, 275951648768, 1073741888, 275951648832, 70369817919488, 70644695826432, 70369817919552, 70644695826496, 1073758208, 275951665152, 1073758272, 275951665216, 70369817935872, 70644695842816, 70369817935936, 70644695842880, 18014399583223808, 18014674461130752, 18014399583223872, 18014674461130816, 18084768327401472, 18085043205308416, 18084768327401536, 18085043205308480, 18014399583240192, 18014674461147136, 18014399583240256, 18014674461147200, 18084768327417856, 18085043205324800, 18084768327417920, 18085043205324864, 1077936128, 275955843072, 1077936192, 275955843136, 70369822113792, 70644700020736, 70369822113856, 70644700020800, 1077952512, 275955859456, 1077952576, 275955859520, 70369822130176, 70644700037120, 70369822130240, 70644700037184, 18014399587418112, 18014674465325056, 18014399587418176, 18014674465325120, 18084768331595776, 18085043209502720, 18084768331595840, 18085043209502784, 18014399587434496, 18014674465341440, 18014399587434560, 18014674465341504, 18084768331612160, 18085043209519104, 18084768331612224, 18085043209519168, 4611686019501129728, 4611686294379036672, 4611686019501129792, 4611686294379036736, 4611756388245307392, 4611756663123214336, 4611756388245307456, 4611756663123214400, 4611686019501146112, 4611686294379053056, 4611686019501146176, 4611686294379053120, 4611756388245323776, 4611756663123230720, 4611756388245323840, 4611756663123230784, 4629700418010611712, 4629700692888518656, 4629700418010611776, 4629700692888518720, 4629770786754789376, 4629771061632696320, 4629770786754789440, 4629771061632696384, 4629700418010628096, 4629700692888535040, 4629700418010628160, 4629700692888535104, 4629770786754805760, 4629771061632712704, 4629770786754805824, 4629771061632712768, 4611686019505324032, 4611686294383230976, 4611686019505324096, 4611686294383231040, 4611756388249501696, 4611756663127408640, 4611756388249501760, 4611756663127408704, 4611686019505340416, 4611686294383247360, 4611686019505340480, 4611686294383247424, 4611756388249518080, 4611756663127425024, 4611756388249518144, 4611756663127425088, 4629700418014806016, 4629700692892712960, 4629700418014806080, 4629700692892713024, 4629770786758983680, 4629771061636890624, 4629770786758983744, 4629771061636890688, 4629700418014822400, 4629700692892729344, 4629700418014822464, 4629700692892729408, 4629770786759000064, 4629771061636907008, 4629770786759000128, 4629771061636907072, 0, 137438953472, 32, 137438953504, 35184372088832, 35321811042304, 35184372088864, 35321811042336, 8192, 137438961664, 8224, 137438961696, 35184372097024, 35321811050496, 35184372097056, 35321811050528, 9007199254740992, 9007336693694464, 9007199254741024, 9007336693694496, 9042383626829824, 9042521065783296, 9042383626829856, 9042521065783328, 9007199254749184, 9007336693702656, 9007199254749216, 9007336693702688, 9042383626838016, 9042521065791488, 9042383626838048, 9042521065791520, 2097152, 137441050624, 2097184, 137441050656, 35184374185984, 35321813139456, 35184374186016, 35321813139488, 2105344, 137441058816, 2105376, 137441058848, 35184374194176, 35321813147648, 35184374194208, 35321813147680, 9007199256838144, 9007336695791616, 9007199256838176, 9007336695791648, 9042383628926976, 9042521067880448, 9042383628927008, 9042521067880480, 9007199256846336, 9007336695799808, 9007199256846368, 9007336695799840, 9042383628935168, 9042521067888640, 9042383628935200, 9042521067888672, 2305843009213693952, 2305843146652647424, 2305843009213693984, 2305843146652647456, 2305878193585782784, 2305878331024736256, 2305878193585782816, 2305878331024736288, 2305843009213702144, 2305843146652655616, 2305843009213702176, 2305843146652655648, 2305878193585790976, 2305878331024744448, 2305878193585791008, 2305878331024744480, 2314850208468434944, 2314850345907388416, 2314850208468434976, 2314850345907388448, 2314885392840523776, 2314885530279477248, 2314885392840523808, 2314885530279477280, 2314850208468443136, 2314850345907396608, 2314850208468443168, 2314850345907396640, 2314885392840531968, 2314885530279485440, 2314885392840532000, 2314885530279485472, 2305843009215791104, 2305843146654744576, 2305843009215791136, 2305843146654744608, 2305878193587879936, 2305878331026833408, 2305878193587879968, 2305878331026833440, 2305843009215799296, 2305843146654752768, 2305843009215799328, 2305843146654752800, 2305878193587888128, 2305878331026841600, 2305878193587888160, 2305878331026841632, 2314850208470532096, 2314850345909485568, 2314850208470532128, 2314850345909485600, 2314885392842620928, 2314885530281574400, 2314885392842620960, 2314885530281574432, 2314850208470540288, 2314850345909493760, 2314850208470540320, 2314850345909493792, 2314885392842629120, 2314885530281582592, 2314885392842629152, 2314885530281582624, 536870912, 137975824384, 536870944, 137975824416, 35184908959744, 35322347913216, 35184908959776, 35322347913248, 536879104, 137975832576, 536879136, 137975832608, 35184908967936, 35322347921408, 35184908967968, 35322347921440, 9007199791611904, 9007337230565376, 9007199791611936, 9007337230565408, 9042384163700736, 9042521602654208, 9042384163700768, 9042521602654240, 9007199791620096, 9007337230573568, 9007199791620128, 9007337230573600, 9042384163708928, 9042521602662400, 9042384163708960, 9042521602662432, 538968064, 137977921536, 538968096, 137977921568, 35184911056896, 35322350010368, 35184911056928, 35322350010400, 538976256, 137977929728, 538976288, 137977929760, 35184911065088, 35322350018560, 35184911065120, 35322350018592, 9007199793709056, 9007337232662528, 9007199793709088, 9007337232662560, 9042384165797888, 9042521604751360, 9042384165797920, 9042521604751392, 9007199793717248, 9007337232670720, 9007199793717280, 9007337232670752, 9042384165806080, 9042521604759552, 9042384165806112, 9042521604759584, 2305843009750564864, 2305843147189518336, 2305843009750564896, 2305843147189518368, 2305878194122653696, 2305878331561607168, 2305878194122653728, 2305878331561607200, 2305843009750573056, 2305843147189526528, 2305843009750573088, 2305843147189526560, 2305878194122661888, 2305878331561615360, 2305878194122661920, 2305878331561615392, 2314850209005305856, 2314850346444259328, 2314850209005305888, 2314850346444259360, 2314885393377394688, 2314885530816348160, 2314885393377394720, 2314885530816348192, 2314850209005314048, 2314850346444267520, 2314850209005314080, 2314850346444267552, 2314885393377402880, 2314885530816356352, 2314885393377402912, 2314885530816356384, 2305843009752662016, 2305843147191615488, 2305843009752662048, 2305843147191615520, 2305878194124750848, 2305878331563704320, 2305878194124750880, 2305878331563704352, 2305843009752670208, 2305843147191623680, 2305843009752670240, 2305843147191623712, 2305878194124759040, 2305878331563712512, 2305878194124759072, 2305878331563712544, 2314850209007403008, 2314850346446356480, 2314850209007403040, 2314850346446356512, 2314885393379491840, 2314885530818445312, 2314885393379491872, 2314885530818445344, 2314850209007411200, 2314850346446364672, 2314850209007411232, 2314850346446364704, 2314885393379500032, 2314885530818453504, 2314885393379500064, 2314885530818453536, 0, 68719476736, 16, 68719476752, 17592186044416, 17660905521152, 17592186044432, 17660905521168, 4096, 68719480832, 4112, 68719480848, 17592186048512, 17660905525248, 17592186048528, 17660905525264, 4503599627370496, 4503668346847232, 4503599627370512, 4503668346847248, 4521191813414912, 4521260532891648, 4521191813414928, 4521260532891664, 4503599627374592, 4503668346851328, 4503599627374608, 4503668346851344, 4521191813419008, 4521260532895744, 4521191813419024, 4521260532895760, 1048576, 68720525312, 1048592, 68720525328, 17592187092992, 17660906569728, 17592187093008, 17660906569744, 1052672, 68720529408, 1052688, 68720529424, 17592187097088, 17660906573824, 17592187097104, 17660906573840, 4503599628419072, 4503668347895808, 4503599628419088, 4503668347895824, 4521191814463488, 4521260533940224, 4521191814463504, 4521260533940240, 4503599628423168, 4503668347899904, 4503599628423184, 4503668347899920, 4521191814467584, 4521260533944320, 4521191814467600, 4521260533944336, 1152921504606846976, 1152921573326323712, 1152921504606846992, 1152921573326323728, 1152939096792891392, 1152939165512368128, 1152939096792891408, 1152939165512368144, 1152921504606851072, 1152921573326327808, 1152921504606851088, 1152921573326327824, 1152939096792895488, 1152939165512372224, 1152939096792895504, 1152939165512372240, 1157425104234217472, 1157425172953694208, 1157425104234217488, 1157425172953694224, 1157442696420261888, 1157442765139738624, 1157442696420261904, 1157442765139738640, 1157425104234221568, 1157425172953698304, 1157425104234221584, 1157425172953698320, 1157442696420265984, 1157442765139742720, 1157442696420266000, 1157442765139742736, 1152921504607895552, 1152921573327372288, 1152921504607895568, 1152921573327372304, 1152939096793939968, 1152939165513416704, 1152939096793939984, 1152939165513416720, 1152921504607899648, 1152921573327376384, 1152921504607899664, 1152921573327376400, 1152939096793944064, 1152939165513420800, 1152939096793944080, 1152939165513420816, 1157425104235266048, 1157425172954742784, 1157425104235266064, 1157425172954742800, 1157442696421310464, 1157442765140787200, 1157442696421310480, 1157442765140787216, 1157425104235270144, 1157425172954746880, 1157425104235270160, 1157425172954746896, 1157442696421314560, 1157442765140791296, 1157442696421314576, 1157442765140791312, 268435456, 68987912192, 268435472, 68987912208, 17592454479872, 17661173956608, 17592454479888, 17661173956624, 268439552, 68987916288, 268439568, 68987916304, 17592454483968, 17661173960704, 17592454483984, 17661173960720, 4503599895805952, 4503668615282688, 4503599895805968, 4503668615282704, 4521192081850368, 4521260801327104, 4521192081850384, 4521260801327120, 4503599895810048, 4503668615286784, 4503599895810064, 4503668615286800, 4521192081854464, 4521260801331200, 4521192081854480, 4521260801331216, 269484032, 68988960768, 269484048, 68988960784, 17592455528448, 17661175005184, 17592455528464, 17661175005200, 269488128, 68988964864, 269488144, 68988964880, 17592455532544, 17661175009280, 17592455532560, 17661175009296, 4503599896854528, 4503668616331264, 4503599896854544, 4503668616331280, 4521192082898944, 4521260802375680, 4521192082898960, 4521260802375696, 4503599896858624, 4503668616335360, 4503599896858640, 4503668616335376, 4521192082903040, 4521260802379776, 4521192082903056, 4521260802379792, 1152921504875282432, 1152921573594759168, 1152921504875282448, 1152921573594759184, 1152939097061326848, 1152939165780803584, 1152939097061326864, 1152939165780803600, 1152921504875286528, 1152921573594763264, 1152921504875286544, 1152921573594763280, 1152939097061330944, 1152939165780807680, 1152939097061330960, 1152939165780807696, 1157425104502652928, 1157425173222129664, 1157425104502652944, 1157425173222129680, 1157442696688697344, 1157442765408174080, 1157442696688697360, 1157442765408174096, 1157425104502657024, 1157425173222133760, 1157425104502657040, 1157425173222133776, 1157442696688701440, 1157442765408178176, 1157442696688701456, 1157442765408178192, 1152921504876331008, 1152921573595807744, 1152921504876331024, 1152921573595807760, 1152939097062375424, 1152939165781852160, 1152939097062375440, 1152939165781852176, 1152921504876335104, 1152921573595811840, 1152921504876335120, 1152921573595811856, 1152939097062379520, 1152939165781856256, 1152939097062379536, 1152939165781856272, 1157425104503701504, 1157425173223178240, 1157425104503701520, 1157425173223178256, 1157442696689745920, 1157442765409222656, 1157442696689745936, 1157442765409222672, 1157425104503705600, 1157425173223182336, 1157425104503705616, 1157425173223182352, 1157442696689750016, 1157442765409226752, 1157442696689750032, 1157442765409226768, 0, 34359738368, 8, 34359738376, 8796093022208, 8830452760576, 8796093022216, 8830452760584, 2048, 34359740416, 2056, 34359740424, 8796093024256, 8830452762624, 8796093024264, 8830452762632, 2251799813685248, 2251834173423616, 2251799813685256, 2251834173423624, 2260595906707456, 2260630266445824, 2260595906707464, 2260630266445832, 2251799813687296, 2251834173425664, 2251799813687304, 2251834173425672, 2260595906709504, 2260630266447872, 2260595906709512, 2260630266447880, 524288, 34360262656, 524296, 34360262664, 8796093546496, 8830453284864, 8796093546504, 8830453284872, 526336, 34360264704, 526344, 34360264712, 8796093548544, 8830453286912, 8796093548552, 8830453286920, 2251799814209536, 2251834173947904, 2251799814209544, 2251834173947912, 2260595907231744, 2260630266970112, 2260595907231752, 2260630266970120, 2251799814211584, 2251834173949952, 2251799814211592, 2251834173949960, 2260595907233792, 2260630266972160, 2260595907233800, 2260630266972168, 576460752303423488, 576460786663161856, 576460752303423496, 576460786663161864, 576469548396445696, 576469582756184064, 576469548396445704, 576469582756184072, 576460752303425536, 576460786663163904, 576460752303425544, 576460786663163912, 576469548396447744, 576469582756186112, 576469548396447752, 576469582756186120, 578712552117108736, 578712586476847104, 578712552117108744, 578712586476847112, 578721348210130944, 578721382569869312, 578721348210130952, 578721382569869320, 578712552117110784, 578712586476849152, 578712552117110792, 578712586476849160, 578721348210132992, 578721382569871360, 578721348210133000, 578721382569871368, 576460752303947776, 576460786663686144, 576460752303947784, 576460786663686152, 576469548396969984, 576469582756708352, 576469548396969992, 576469582756708360, 576460752303949824, 576460786663688192, 576460752303949832, 576460786663688200, 576469548396972032, 576469582756710400, 576469548396972040, 576469582756710408, 578712552117633024, 578712586477371392, 578712552117633032, 578712586477371400, 578721348210655232, 578721382570393600, 578721348210655240, 578721382570393608, 578712552117635072, 578712586477373440, 578712552117635080, 578712586477373448, 578721348210657280, 578721382570395648, 578721348210657288, 578721382570395656, 134217728, 34493956096, 134217736, 34493956104, 8796227239936, 8830586978304, 8796227239944, 8830586978312, 134219776, 34493958144, 134219784, 34493958152, 8796227241984, 8830586980352, 8796227241992, 8830586980360, 2251799947902976, 2251834307641344, 2251799947902984, 2251834307641352, 2260596040925184, 2260630400663552, 2260596040925192, 2260630400663560, 2251799947905024, 2251834307643392, 2251799947905032, 2251834307643400, 2260596040927232, 2260630400665600, 2260596040927240, 2260630400665608, 134742016, 34494480384, 134742024, 34494480392, 8796227764224, 8830587502592, 8796227764232, 8830587502600, 134744064, 34494482432, 134744072, 34494482440, 8796227766272, 8830587504640, 8796227766280, 8830587504648, 2251799948427264, 2251834308165632, 2251799948427272, 2251834308165640, 2260596041449472, 2260630401187840, 2260596041449480, 2260630401187848, 2251799948429312, 2251834308167680, 2251799948429320, 2251834308167688, 2260596041451520, 2260630401189888, 2260596041451528, 2260630401189896, 576460752437641216, 576460786797379584, 576460752437641224, 576460786797379592, 576469548530663424, 576469582890401792, 576469548530663432, 576469582890401800, 576460752437643264, 576460786797381632, 576460752437643272, 576460786797381640, 576469548530665472, 576469582890403840, 576469548530665480, 576469582890403848, 578712552251326464, 578712586611064832, 578712552251326472, 578712586611064840, 578721348344348672, 578721382704087040, 578721348344348680, 578721382704087048, 578712552251328512, 578712586611066880, 578712552251328520, 578712586611066888, 578721348344350720, 578721382704089088, 578721348344350728, 578721382704089096, 576460752438165504, 576460786797903872, 576460752438165512, 576460786797903880, 576469548531187712, 576469582890926080, 576469548531187720, 576469582890926088, 576460752438167552, 576460786797905920, 576460752438167560, 576460786797905928, 576469548531189760, 576469582890928128, 576469548531189768, 576469582890928136, 578712552251850752, 578712586611589120, 578712552251850760, 578712586611589128, 578721348344872960, 578721382704611328, 578721348344872968, 578721382704611336, 578712552251852800, 578712586611591168, 578712552251852808, 578712586611591176, 578721348344875008, 578721382704613376, 578721348344875016, 578721382704613384, 0, 17179869184, 4, 17179869188, 4398046511104, 4415226380288, 4398046511108, 4415226380292, 1024, 17179870208, 1028, 17179870212, 4398046512128, 4415226381312, 4398046512132, 4415226381316, 1125899906842624, 1125917086711808, 1125899906842628, 1125917086711812, 1130297953353728, 1130315133222912, 1130297953353732, 1130315133222916, 1125899906843648, 1125917086712832, 1125899906843652, 1125917086712836, 1130297953354752, 1130315133223936, 1130297953354756, 1130315133223940, 262144, 17180131328, 262148, 17180131332, 4398046773248, 4415226642432, 4398046773252, 4415226642436, 263168, 17180132352, 263172, 17180132356, 4398046774272, 4415226643456, 4398046774276, 4415226643460, 1125899907104768, 1125917086973952, 1125899907104772, 1125917086973956, 1130297953615872, 1130315133485056, 1130297953615876, 1130315133485060, 1125899907105792, 1125917086974976, 1125899907105796, 1125917086974980, 1130297953616896, 1130315133486080, 1130297953616900, 1130315133486084, 288230376151711744, 288230393331580928, 288230376151711748, 288230393331580932, 288234774198222848, 288234791378092032, 288234774198222852, 288234791378092036, 288230376151712768, 288230393331581952, 288230376151712772, 288230393331581956, 288234774198223872, 288234791378093056, 288234774198223876, 288234791378093060, 289356276058554368, 289356293238423552, 289356276058554372, 289356293238423556, 289360674105065472, 289360691284934656, 289360674105065476, 289360691284934660, 289356276058555392, 289356293238424576, 289356276058555396, 289356293238424580, 289360674105066496, 289360691284935680, 289360674105066500, 289360691284935684, 288230376151973888, 288230393331843072, 288230376151973892, 288230393331843076, 288234774198484992, 288234791378354176, 288234774198484996, 288234791378354180, 288230376151974912, 288230393331844096, 288230376151974916, 288230393331844100, 288234774198486016, 288234791378355200, 288234774198486020, 288234791378355204, 289356276058816512, 289356293238685696, 289356276058816516, 289356293238685700, 289360674105327616, 289360691285196800, 289360674105327620, 289360691285196804, 289356276058817536, 289356293238686720, 289356276058817540, 289356293238686724, 289360674105328640, 289360691285197824, 289360674105328644, 289360691285197828, 67108864, 17246978048, 67108868, 17246978052, 4398113619968, 4415293489152, 4398113619972, 4415293489156, 67109888, 17246979072, 67109892, 17246979076, 4398113620992, 4415293490176, 4398113620996, 4415293490180, 1125899973951488, 1125917153820672, 1125899973951492, 1125917153820676, 1130298020462592, 1130315200331776, 1130298020462596, 1130315200331780, 1125899973952512, 1125917153821696, 1125899973952516, 1125917153821700, 1130298020463616, 1130315200332800, 1130298020463620, 1130315200332804, 67371008, 17247240192, 67371012, 17247240196, 4398113882112, 4415293751296, 4398113882116, 4415293751300, 67372032, 17247241216, 67372036, 17247241220, 4398113883136, 4415293752320, 4398113883140, 4415293752324, 1125899974213632, 1125917154082816, 1125899974213636, 1125917154082820, 1130298020724736, 1130315200593920, 1130298020724740, 1130315200593924, 1125899974214656, 1125917154083840, 1125899974214660, 1125917154083844, 1130298020725760, 1130315200594944, 1130298020725764, 1130315200594948, 288230376218820608, 288230393398689792, 288230376218820612, 288230393398689796, 288234774265331712, 288234791445200896, 288234774265331716, 288234791445200900, 288230376218821632, 288230393398690816, 288230376218821636, 288230393398690820, 288234774265332736, 288234791445201920, 288234774265332740, 288234791445201924, 289356276125663232, 289356293305532416, 289356276125663236, 289356293305532420, 289360674172174336, 289360691352043520, 289360674172174340, 289360691352043524, 289356276125664256, 289356293305533440, 289356276125664260, 289356293305533444, 289360674172175360, 289360691352044544, 289360674172175364, 289360691352044548, 288230376219082752, 288230393398951936, 288230376219082756, 288230393398951940, 288234774265593856, 288234791445463040, 288234774265593860, 288234791445463044, 288230376219083776, 288230393398952960, 288230376219083780, 288230393398952964, 288234774265594880, 288234791445464064, 288234774265594884, 288234791445464068, 289356276125925376, 289356293305794560, 289356276125925380, 289356293305794564, 289360674172436480, 289360691352305664, 289360674172436484, 289360691352305668, 289356276125926400, 289356293305795584, 289356276125926404, 289356293305795588, 289360674172437504, 289360691352306688, 289360674172437508, 289360691352306692, 0, 8589934592, 2, 8589934594, 2199023255552, 2207613190144, 2199023255554, 2207613190146, 512, 8589935104, 514, 8589935106, 2199023256064, 2207613190656, 2199023256066, 2207613190658, 562949953421312, 562958543355904, 562949953421314, 562958543355906, 565148976676864, 565157566611456, 565148976676866, 565157566611458, 562949953421824, 562958543356416, 562949953421826, 562958543356418, 565148976677376, 565157566611968, 565148976677378, 565157566611970, 131072, 8590065664, 131074, 8590065666, 2199023386624, 2207613321216, 2199023386626, 2207613321218, 131584, 8590066176, 131586, 8590066178, 2199023387136, 2207613321728, 2199023387138, 2207613321730, 562949953552384, 562958543486976, 562949953552386, 562958543486978, 565148976807936, 565157566742528, 565148976807938, 565157566742530, 562949953552896, 562958543487488, 562949953552898, 562958543487490, 565148976808448, 565157566743040, 565148976808450, 565157566743042, 144115188075855872, 144115196665790464, 144115188075855874, 144115196665790466, 144117387099111424, 144117395689046016, 144117387099111426, 144117395689046018, 144115188075856384, 144115196665790976, 144115188075856386, 144115196665790978, 144117387099111936, 144117395689046528, 144117387099111938, 144117395689046530, 144678138029277184, 144678146619211776, 144678138029277186, 144678146619211778, 144680337052532736, 144680345642467328, 144680337052532738, 144680345642467330, 144678138029277696, 144678146619212288, 144678138029277698, 144678146619212290, 144680337052533248, 144680345642467840, 144680337052533250, 144680345642467842, 144115188075986944, 144115196665921536, 144115188075986946, 144115196665921538, 144117387099242496, 144117395689177088, 144117387099242498, 144117395689177090, 144115188075987456, 144115196665922048, 144115188075987458, 144115196665922050, 144117387099243008, 144117395689177600, 144117387099243010, 144117395689177602, 144678138029408256, 144678146619342848, 144678138029408258, 144678146619342850, 144680337052663808, 144680345642598400, 144680337052663810, 144680345642598402, 144678138029408768, 144678146619343360, 144678138029408770, 144678146619343362, 144680337052664320, 144680345642598912, 144680337052664322, 144680345642598914, 33554432, 8623489024, 33554434, 8623489026, 2199056809984, 2207646744576, 2199056809986, 2207646744578, 33554944, 8623489536, 33554946, 8623489538, 2199056810496, 2207646745088, 2199056810498, 2207646745090, 562949986975744, 562958576910336, 562949986975746, 562958576910338, 565149010231296, 565157600165888, 565149010231298, 565157600165890, 562949986976256, 562958576910848, 562949986976258, 562958576910850, 565149010231808, 565157600166400, 565149010231810, 565157600166402, 33685504, 8623620096, 33685506, 8623620098, 2199056941056, 2207646875648, 2199056941058, 2207646875650, 33686016, 8623620608, 33686018, 8623620610, 2199056941568, 2207646876160, 2199056941570, 2207646876162, 562949987106816, 562958577041408, 562949987106818, 562958577041410, 565149010362368, 565157600296960, 565149010362370, 565157600296962, 562949987107328, 562958577041920, 562949987107330, 562958577041922, 565149010362880, 565157600297472, 565149010362882, 565157600297474, 144115188109410304, 144115196699344896, 144115188109410306, 144115196699344898, 144117387132665856, 144117395722600448, 144117387132665858, 144117395722600450, 144115188109410816, 144115196699345408, 144115188109410818, 144115196699345410, 144117387132666368, 144117395722600960, 144117387132666370, 144117395722600962, 144678138062831616, 144678146652766208, 144678138062831618, 144678146652766210, 144680337086087168, 144680345676021760, 144680337086087170, 144680345676021762, 144678138062832128, 144678146652766720, 144678138062832130, 144678146652766722, 144680337086087680, 144680345676022272, 144680337086087682, 144680345676022274, 144115188109541376, 144115196699475968, 144115188109541378, 144115196699475970, 144117387132796928, 144117395722731520, 144117387132796930, 144117395722731522, 144115188109541888, 144115196699476480, 144115188109541890, 144115196699476482, 144117387132797440, 144117395722732032, 144117387132797442, 144117395722732034, 144678138062962688, 144678146652897280, 144678138062962690, 144678146652897282, 144680337086218240, 144680345676152832, 144680337086218242, 144680345676152834, 144678138062963200, 144678146652897792, 144678138062963202, 144678146652897794, 144680337086218752, 144680345676153344, 144680337086218754, 144680345676153346, 0, 4294967296, 1, 4294967297, 1099511627776, 1103806595072, 1099511627777, 1103806595073, 256, 4294967552, 257, 4294967553, 1099511628032, 1103806595328, 1099511628033, 1103806595329, 281474976710656, 281479271677952, 281474976710657, 281479271677953, 282574488338432, 282578783305728, 282574488338433, 282578783305729, 281474976710912, 281479271678208, 281474976710913, 281479271678209, 282574488338688, 282578783305984, 282574488338689, 282578783305985, 65536, 4295032832, 65537, 4295032833, 1099511693312, 1103806660608, 1099511693313, 1103806660609, 65792, 4295033088, 65793, 4295033089, 1099511693568, 1103806660864, 1099511693569, 1103806660865, 281474976776192, 281479271743488, 281474976776193, 281479271743489, 282574488403968, 282578783371264, 282574488403969, 282578783371265, 281474976776448, 281479271743744, 281474976776449, 281479271743745, 282574488404224, 282578783371520, 282574488404225, 282578783371521, 72057594037927936, 72057598332895232, 72057594037927937, 72057598332895233, 72058693549555712, 72058697844523008, 72058693549555713, 72058697844523009, 72057594037928192, 72057598332895488, 72057594037928193, 72057598332895489, 72058693549555968, 72058697844523264, 72058693549555969, 72058697844523265, 72339069014638592, 72339073309605888, 72339069014638593, 72339073309605889, 72340168526266368, 72340172821233664, 72340168526266369, 72340172821233665, 72339069014638848, 72339073309606144, 72339069014638849, 72339073309606145, 72340168526266624, 72340172821233920, 72340168526266625, 72340172821233921, 72057594037993472, 72057598332960768, 72057594037993473, 72057598332960769, 72058693549621248, 72058697844588544, 72058693549621249, 72058697844588545, 72057594037993728, 72057598332961024, 72057594037993729, 72057598332961025, 72058693549621504, 72058697844588800, 72058693549621505, 72058697844588801, 72339069014704128, 72339073309671424, 72339069014704129, 72339073309671425, 72340168526331904, 72340172821299200, 72340168526331905, 72340172821299201, 72339069014704384, 72339073309671680, 72339069014704385, 72339073309671681, 72340168526332160, 72340172821299456, 72340168526332161, 72340172821299457, 16777216, 4311744512, 16777217, 4311744513, 1099528404992, 1103823372288, 1099528404993, 1103823372289, 16777472, 4311744768, 16777473, 4311744769, 1099528405248, 1103823372544, 1099528405249, 1103823372545, 281474993487872, 281479288455168, 281474993487873, 281479288455169, 282574505115648, 282578800082944, 282574505115649, 282578800082945, 281474993488128, 281479288455424, 281474993488129, 281479288455425, 282574505115904, 282578800083200, 282574505115905, 282578800083201, 16842752, 4311810048, 16842753, 4311810049, 1099528470528, 1103823437824, 1099528470529, 1103823437825, 16843008, 4311810304, 16843009, 4311810305, 1099528470784, 1103823438080, 1099528470785, 1103823438081, 281474993553408, 281479288520704, 281474993553409, 281479288520705, 282574505181184, 282578800148480, 282574505181185, 282578800148481, 281474993553664, 281479288520960, 281474993553665, 281479288520961, 282574505181440, 282578800148736, 282574505181441, 282578800148737, 72057594054705152, 72057598349672448, 72057594054705153, 72057598349672449, 72058693566332928, 72058697861300224, 72058693566332929, 72058697861300225, 72057594054705408, 72057598349672704, 72057594054705409, 72057598349672705, 72058693566333184, 72058697861300480, 72058693566333185, 72058697861300481, 72339069031415808, 72339073326383104, 72339069031415809, 72339073326383105, 72340168543043584, 72340172838010880, 72340168543043585, 72340172838010881, 72339069031416064, 72339073326383360, 72339069031416065, 72339073326383361, 72340168543043840, 72340172838011136, 72340168543043841, 72340172838011137, 72057594054770688, 72057598349737984, 72057594054770689, 72057598349737985, 72058693566398464, 72058697861365760, 72058693566398465, 72058697861365761, 72057594054770944, 72057598349738240, 72057594054770945, 72057598349738241, 72058693566398720, 72058697861366016, 72058693566398721, 72058697861366017, 72339069031481344, 72339073326448640, 72339069031481345, 72339073326448641, 72340168543109120, 72340172838076416, 72340168543109121, 72340172838076417, 72339069031481600, 72339073326448896, 72339069031481601, 72339073326448897, 72340168543109376, 72340172838076672, 72340168543109377, 72340172838076673)
N_IP_K = (0, 144115188075855872, 562949953421312, 144678138029277184, 2199023255552, 144117387099111424, 565148976676864, 144680337052532736, 8589934592, 144115196665790464, 562958543355904, 144678146619211776, 2207613190144, 144117395689046016, 565157566611456, 144680345642467328, 33554432, 144115188109410304, 562949986975744, 144678138062831616, 2199056809984, 144117387132665856, 565149010231296, 144680337086087168, 8623489024, 144115196699344896, 562958576910336, 144678146652766208, 2207646744576, 144117395722600448, 565157600165888, 144680345676021760, 131072, 144115188075986944, 562949953552384, 144678138029408256, 2199023386624, 144117387099242496, 565148976807936, 144680337052663808, 8590065664, 144115196665921536, 562958543486976, 144678146619342848, 2207613321216, 144117395689177088, 565157566742528, 144680345642598400, 33685504, 144115188109541376, 562949987106816, 144678138062962688, 2199056941056, 144117387132796928, 565149010362368, 144680337086218240, 8623620096, 144115196699475968, 562958577041408, 144678146652897280, 2207646875648, 144117395722731520, 565157600296960, 144680345676152832, 512, 144115188075856384, 562949953421824, 144678138029277696, 2199023256064, 144117387099111936, 565148976677376, 144680337052533248, 8589935104, 144115196665790976, 562958543356416, 144678146619212288, 2207613190656, 144117395689046528, 565157566611968, 144680345642467840, 33554944, 144115188109410816, 562949986976256, 144678138062832128, 2199056810496, 144117387132666368, 565149010231808, 144680337086087680, 8623489536, 144115196699345408, 562958576910848, 144678146652766720, 2207646745088, 144117395722600960, 565157600166400, 144680345676022272, 131584, 144115188075987456, 562949953552896, 144678138029408768, 2199023387136, 144117387099243008, 565148976808448, 144680337052664320, 8590066176, 144115196665922048, 562958543487488, 144678146619343360, 2207613321728, 144117395689177600, 565157566743040, 144680345642598912, 33686016, 144115188109541888, 562949987107328, 144678138062963200, 2199056941568, 144117387132797440, 565149010362880, 144680337086218752, 8623620608, 144115196699476480, 562958577041920, 144678146652897792, 2207646876160, 144117395722732032, 565157600297472, 144680345676153344, 2, 144115188075855874, 562949953421314, 144678138029277186, 2199023255554, 144117387099111426, 565148976676866, 144680337052532738, 8589934594, 144115196665790466, 562958543355906, 144678146619211778, 2207613190146, 144117395689046018, 565157566611458, 144680345642467330, 33554434, 144115188109410306, 562949986975746, 144678138062831618, 2199056809986, 144117387132665858, 565149010231298, 144680337086087170, 8623489026, 144115196699344898, 562958576910338, 144678146652766210, 2207646744578, 144117395722600450, 565157600165890, 144680345676021762, 131074, 144115188075986946, 562949953552386, 144678138029408258, 2199023386626, 144117387099242498, 565148976807938, 144680337052663810, 8590065666, 144115196665921538, 562958543486978, 144678146619342850, 2207613321218, 144117395689177090, 565157566742530, 144680345642598402, 33685506, 144115188109541378, 562949987106818, 144678138062962690, 2199056941058, 144117387132796930, 565149010362370, 144680337086218242, 8623620098, 144115196699475970, 562958577041410, 144678146652897282, 2207646875650, 144117395722731522, 565157600296962, 144680345676152834, 514, 144115188075856386, 562949953421826, 144678138029277698, 2199023256066, 144117387099111938, 565148976677378, 144680337052533250, 8589935106, 144115196665790978, 562958543356418, 144678146619212290, 2207613190658, 144117395689046530, 565157566611970, 144680345642467842, 33554946, 144115188109410818, 562949986976258, 144678138062832130, 2199056810498, 144117387132666370, 565149010231810, 144680337086087682, 8623489538, 144115196699345410, 562958576910850, 144678146652766722, 2207646745090, 144117395722600962, 565157600166402, 144680345676022274, 131586, 144115188075987458, 562949953552898, 144678138029408770, 2199023387138, 144117387099243010, 565148976808450, 144680337052664322, 8590066178, 144115196665922050, 562958543487490, 144678146619343362, 2207613321730, 144117395689177602, 565157566743042, 144680345642598914, 33686018, 144115188109541890, 562949987107330, 144678138062963202, 2199056941570, 144117387132797442, 565149010362882, 144680337086218754, 8623620610, 144115196699476482, 562958577041922, 144678146652897794, 2207646876162, 144117395722732034, 565157600297474, 144680345676153346, 0, 576460752303423488, 2251799813685248, 578712552117108736, 8796093022208, 576469548396445696, 2260595906707456, 578721348210130944, 34359738368, 576460786663161856, 2251834173423616, 578712586476847104, 8830452760576, 576469582756184064, 2260630266445824, 578721382569869312, 134217728, 576460752437641216, 2251799947902976, 578712552251326464, 8796227239936, 576469548530663424, 2260596040925184, 578721348344348672, 34493956096, 576460786797379584, 2251834307641344, 578712586611064832, 8830586978304, 576469582890401792, 2260630400663552, 578721382704087040, 524288, 576460752303947776, 2251799814209536, 578712552117633024, 8796093546496, 576469548396969984, 2260595907231744, 578721348210655232, 34360262656, 576460786663686144, 2251834173947904, 578712586477371392, 8830453284864, 576469582756708352, 2260630266970112, 578721382570393600, 134742016, 576460752438165504, 2251799948427264, 578712552251850752, 8796227764224, 576469548531187712, 2260596041449472, 578721348344872960, 34494480384, 576460786797903872, 2251834308165632, 578712586611589120, 8830587502592, 576469582890926080, 2260630401187840, 578721382704611328, 2048, 576460752303425536, 2251799813687296, 578712552117110784, 8796093024256, 576469548396447744, 2260595906709504, 578721348210132992, 34359740416, 576460786663163904, 2251834173425664, 578712586476849152, 8830452762624, 576469582756186112, 2260630266447872, 578721382569871360, 134219776, 576460752437643264, 2251799947905024, 578712552251328512, 8796227241984, 576469548530665472, 2260596040927232, 578721348344350720, 34493958144, 576460786797381632, 2251834307643392, 578712586611066880, 8830586980352, 576469582890403840, 2260630400665600, 578721382704089088, 526336, 576460752303949824, 2251799814211584, 578712552117635072, 8796093548544, 576469548396972032, 2260595907233792, 578721348210657280, 34360264704, 576460786663688192, 2251834173949952, 578712586477373440, 8830453286912, 576469582756710400, 2260630266972160, 578721382570395648, 134744064, 576460752438167552, 2251799948429312, 578712552251852800, 8796227766272, 576469548531189760, 2260596041451520, 578721348344875008, 34494482432, 576460786797905920, 2251834308167680, 578712586611591168, 8830587504640, 576469582890928128, 2260630401189888, 578721382704613376, 8, 576460752303423496, 2251799813685256, 578712552117108744, 8796093022216, 576469548396445704, 2260595906707464, 578721348210130952, 34359738376, 576460786663161864, 2251834173423624, 578712586476847112, 8830452760584, 576469582756184072, 2260630266445832, 578721382569869320, 134217736, 576460752437641224, 2251799947902984, 578712552251326472, 8796227239944, 576469548530663432, 2260596040925192, 578721348344348680, 34493956104, 576460786797379592, 2251834307641352, 578712586611064840, 8830586978312, 576469582890401800, 2260630400663560, 578721382704087048, 524296, 576460752303947784, 2251799814209544, 578712552117633032, 8796093546504, 576469548396969992, 2260595907231752, 578721348210655240, 34360262664, 576460786663686152, 2251834173947912, 578712586477371400, 8830453284872, 576469582756708360, 2260630266970120, 578721382570393608, 134742024, 576460752438165512, 2251799948427272, 578712552251850760, 8796227764232, 576469548531187720, 2260596041449480, 578721348344872968, 34494480392, 576460786797903880, 2251834308165640, 578712586611589128, 8830587502600, 576469582890926088, 2260630401187848, 578721382704611336, 2056, 576460752303425544, 2251799813687304, 578712552117110792, 8796093024264, 576469548396447752, 2260595906709512, 578721348210133000, 34359740424, 576460786663163912, 2251834173425672, 578712586476849160, 8830452762632, 576469582756186120, 2260630266447880, 578721382569871368, 134219784, 576460752437643272, 2251799947905032, 578712552251328520, 8796227241992, 576469548530665480, 2260596040927240, 578721348344350728, 34493958152, 576460786797381640, 2251834307643400, 578712586611066888, 8830586980360, 576469582890403848, 2260630400665608, 578721382704089096, 526344, 576460752303949832, 2251799814211592, 578712552117635080, 8796093548552, 576469548396972040, 2260595907233800, 578721348210657288, 34360264712, 576460786663688200, 2251834173949960, 578712586477373448, 8830453286920, 576469582756710408, 2260630266972168, 578721382570395656, 134744072, 576460752438167560, 2251799948429320, 578712552251852808, 8796227766280, 576469548531189768, 2260596041451528, 578721348344875016, 34494482440, 576460786797905928, 2251834308167688, 578712586611591176, 8830587504648, 576469582890928136, 2260630401189896, 578721382704613384, 0, 2305843009213693952, 9007199254740992, 2314850208468434944, 35184372088832, 2305878193585782784, 9042383626829824, 2314885392840523776, 137438953472, 2305843146652647424, 9007336693694464, 2314850345907388416, 35321811042304, 2305878331024736256, 9042521065783296, 2314885530279477248, 536870912, 2305843009750564864, 9007199791611904, 2314850209005305856, 35184908959744, 2305878194122653696, 9042384163700736, 2314885393377394688, 137975824384, 2305843147189518336, 9007337230565376, 2314850346444259328, 35322347913216, 2305878331561607168, 9042521602654208, 2314885530816348160, 2097152, 2305843009215791104, 9007199256838144, 2314850208470532096, 35184374185984, 2305878193587879936, 9042383628926976, 2314885392842620928, 137441050624, 2305843146654744576, 9007336695791616, 2314850345909485568, 35321813139456, 2305878331026833408, 9042521067880448, 2314885530281574400, 538968064, 2305843009752662016, 9007199793709056, 2314850209007403008, 35184911056896, 2305878194124750848, 9042384165797888, 2314885393379491840, 137977921536, 2305843147191615488, 9007337232662528, 2314850346446356480, 35322350010368, 2305878331563704320, 9042521604751360, 2314885530818445312, 8192, 2305843009213702144, 9007199254749184, 2314850208468443136, 35184372097024, 2305878193585790976, 9042383626838016, 2314885392840531968, 137438961664, 2305843146652655616, 9007336693702656, 2314850345907396608, 35321811050496, 2305878331024744448, 9042521065791488, 2314885530279485440, 536879104, 2305843009750573056, 9007199791620096, 2314850209005314048, 35184908967936, 2305878194122661888, 9042384163708928, 2314885393377402880, 137975832576, 2305843147189526528, 9007337230573568, 2314850346444267520, 35322347921408, 2305878331561615360, 9042521602662400, 2314885530816356352, 2105344, 2305843009215799296, 9007199256846336, 2314850208470540288, 35184374194176, 2305878193587888128, 9042383628935168, 2314885392842629120, 137441058816, 2305843146654752768, 9007336695799808, 2314850345909493760, 35321813147648, 2305878331026841600, 9042521067888640, 2314885530281582592, 538976256, 2305843009752670208, 9007199793717248, 2314850209007411200, 35184911065088, 2305878194124759040, 9042384165806080, 2314885393379500032, 137977929728, 2305843147191623680, 9007337232670720, 2314850346446364672, 35322350018560, 2305878331563712512, 9042521604759552, 2314885530818453504, 32, 2305843009213693984, 9007199254741024, 2314850208468434976, 35184372088864, 2305878193585782816, 9042383626829856, 2314885392840523808, 137438953504, 2305843146652647456, 9007336693694496, 2314850345907388448, 35321811042336, 2305878331024736288, 9042521065783328, 2314885530279477280, 536870944, 2305843009750564896, 9007199791611936, 2314850209005305888, 35184908959776, 2305878194122653728, 9042384163700768, 2314885393377394720, 137975824416, 2305843147189518368, 9007337230565408, 2314850346444259360, 35322347913248, 2305878331561607200, 9042521602654240, 2314885530816348192, 2097184, 2305843009215791136, 9007199256838176, 2314850208470532128, 35184374186016, 2305878193587879968, 9042383628927008, 2314885392842620960, 137441050656, 2305843146654744608, 9007336695791648, 2314850345909485600, 35321813139488, 2305878331026833440, 9042521067880480, 2314885530281574432, 538968096, 2305843009752662048, 9007199793709088, 2314850209007403040, 35184911056928, 2305878194124750880, 9042384165797920, 2314885393379491872, 137977921568, 2305843147191615520, 9007337232662560, 2314850346446356512, 35322350010400, 2305878331563704352, 9042521604751392, 2314885530818445344, 8224, 2305843009213702176, 9007199254749216, 2314850208468443168, 35184372097056, 2305878193585791008, 9042383626838048, 2314885392840532000, 137438961696, 2305843146652655648, 9007336693702688, 2314850345907396640, 35321811050528, 2305878331024744480, 9042521065791520, 2314885530279485472, 536879136, 2305843009750573088, 9007199791620128, 2314850209005314080, 35184908967968, 2305878194122661920, 9042384163708960, 2314885393377402912, 137975832608, 2305843147189526560, 9007337230573600, 2314850346444267552, 35322347921440, 2305878331561615392, 9042521602662432, 2314885530816356384, 2105376, 2305843009215799328, 9007199256846368, 2314850208470540320, 35184374194208, 2305878193587888160, 9042383628935200, 2314885392842629152, 137441058848, 2305843146654752800, 9007336695799840, 2314850345909493792, 35321813147680, 2305878331026841632, 9042521067888672, 2314885530281582624, 538976288, 2305843009752670240, 9007199793717280, 2314850209007411232, 35184911065120, 2305878194124759072, 9042384165806112, 2314885393379500064, 137977929760, 2305843147191623712, 9007337232670752, 2314850346446364704, 35322350018592, 2305878331563712544, 9042521604759584, 2314885530818453536, 0, 9223372036854775808, 36028797018963968, 9259400833873739776, 140737488355328, 9223512774343131136, 36169534507319296, 9259541571362095104, 549755813888, 9223372586610589696, 36029346774777856, 9259401383629553664, 141287244169216, 9223513324098945024, 36170084263133184, 9259542121117908992, 2147483648, 9223372039002259456, 36028799166447616, 9259400836021223424, 140739635838976, 9223512776490614784, 36169536654802944, 9259541573509578752, 551903297536, 9223372588758073344, 36029348922261504, 9259401385777037312, 141289391652864, 9223513326246428672, 36170086410616832, 9259542123265392640, 8388608, 9223372036863164416, 36028797027352576, 9259400833882128384, 140737496743936, 9223512774351519744, 36169534515707904, 9259541571370483712, 549764202496, 9223372586618978304, 36029346783166464, 9259401383637942272, 141287252557824, 9223513324107333632, 36170084271521792, 9259542121126297600, 2155872256, 9223372039010648064, 36028799174836224, 9259400836029612032, 140739644227584, 9223512776499003392, 36169536663191552, 9259541573517967360, 551911686144, 9223372588766461952, 36029348930650112, 9259401385785425920, 141289400041472, 9223513326254817280, 36170086419005440, 9259542123273781248, 32768, 9223372036854808576, 36028797018996736, 9259400833873772544, 140737488388096, 9223512774343163904, 36169534507352064, 9259541571362127872, 549755846656, 9223372586610622464, 36029346774810624, 9259401383629586432, 141287244201984, 9223513324098977792, 36170084263165952, 9259542121117941760, 2147516416, 9223372039002292224, 36028799166480384, 9259400836021256192, 140739635871744, 9223512776490647552, 36169536654835712, 9259541573509611520, 551903330304, 9223372588758106112, 36029348922294272, 9259401385777070080, 141289391685632, 9223513326246461440, 36170086410649600, 9259542123265425408, 8421376, 9223372036863197184, 36028797027385344, 9259400833882161152, 140737496776704, 9223512774351552512, 36169534515740672, 9259541571370516480, 549764235264, 9223372586619011072, 36029346783199232, 9259401383637975040, 141287252590592, 9223513324107366400, 36170084271554560, 9259542121126330368, 2155905024, 9223372039010680832, 36028799174868992, 9259400836029644800, 140739644260352, 9223512776499036160, 36169536663224320, 9259541573518000128, 551911718912, 9223372588766494720, 36029348930682880, 9259401385785458688, 141289400074240, 9223513326254850048, 36170086419038208, 9259542123273814016, 128, 9223372036854775936, 36028797018964096, 9259400833873739904, 140737488355456, 9223512774343131264, 36169534507319424, 9259541571362095232, 549755814016, 9223372586610589824, 36029346774777984, 9259401383629553792, 141287244169344, 9223513324098945152, 36170084263133312, 9259542121117909120, 2147483776, 9223372039002259584, 36028799166447744, 9259400836021223552, 140739635839104, 9223512776490614912, 36169536654803072, 9259541573509578880, 551903297664, 9223372588758073472, 36029348922261632, 9259401385777037440, 141289391652992, 9223513326246428800, 36170086410616960, 9259542123265392768, 8388736, 9223372036863164544, 36028797027352704, 9259400833882128512, 140737496744064, 9223512774351519872, 36169534515708032, 9259541571370483840, 549764202624, 9223372586618978432, 36029346783166592, 9259401383637942400, 141287252557952, 9223513324107333760, 36170084271521920, 9259542121126297728, 2155872384, 9223372039010648192, 36028799174836352, 9259400836029612160, 140739644227712, 9223512776499003520, 36169536663191680, 9259541573517967488, 551911686272, 9223372588766462080, 36029348930650240, 9259401385785426048, 141289400041600, 9223513326254817408, 36170086419005568, 9259542123273781376, 32896, 9223372036854808704, 36028797018996864, 9259400833873772672, 140737488388224, 9223512774343164032, 36169534507352192, 9259541571362128000, 549755846784, 9223372586610622592, 36029346774810752, 9259401383629586560, 141287244202112, 9223513324098977920, 36170084263166080, 9259542121117941888, 2147516544, 9223372039002292352, 36028799166480512, 9259400836021256320, 140739635871872, 9223512776490647680, 36169536654835840, 9259541573509611648, 551903330432, 9223372588758106240, 36029348922294400, 9259401385777070208, 141289391685760, 9223513326246461568, 36170086410649728, 9259542123265425536, 8421504, 9223372036863197312, 36028797027385472, 9259400833882161280, 140737496776832, 9223512774351552640, 36169534515740800, 9259541571370516608, 549764235392, 9223372586619011200, 36029346783199360, 9259401383637975168, 141287252590720, 9223513324107366528, 36170084271554688, 9259542121126330496, 2155905152, 9223372039010680960, 36028799174869120, 9259400836029644928, 140739644260480, 9223512776499036288, 36169536663224448, 9259541573518000256, 551911719040, 9223372588766494848, 36029348930683008, 9259401385785458816, 141289400074368, 9223513326254850176, 36170086419038336, 9259542123273814144, 0, 72057594037927936, 281474976710656, 72339069014638592, 1099511627776, 72058693549555712, 282574488338432, 72340168526266368, 4294967296, 72057598332895232, 281479271677952, 72339073309605888, 1103806595072, 72058697844523008, 282578783305728, 72340172821233664, 16777216, 72057594054705152, 281474993487872, 72339069031415808, 1099528404992, 72058693566332928, 282574505115648, 72340168543043584, 4311744512, 72057598349672448, 281479288455168, 72339073326383104, 1103823372288, 72058697861300224, 282578800082944, 72340172838010880, 65536, 72057594037993472, 281474976776192, 72339069014704128, 1099511693312, 72058693549621248, 282574488403968, 72340168526331904, 4295032832, 72057598332960768, 281479271743488, 72339073309671424, 1103806660608, 72058697844588544, 282578783371264, 72340172821299200, 16842752, 72057594054770688, 281474993553408, 72339069031481344, 1099528470528, 72058693566398464, 282574505181184, 72340168543109120, 4311810048, 72057598349737984, 281479288520704, 72339073326448640, 1103823437824, 72058697861365760, 282578800148480, 72340172838076416, 256, 72057594037928192, 281474976710912, 72339069014638848, 1099511628032, 72058693549555968, 282574488338688, 72340168526266624, 4294967552, 72057598332895488, 281479271678208, 72339073309606144, 1103806595328, 72058697844523264, 282578783305984, 72340172821233920, 16777472, 72057594054705408, 281474993488128, 72339069031416064, 1099528405248, 72058693566333184, 282574505115904, 72340168543043840, 4311744768, 72057598349672704, 281479288455424, 72339073326383360, 1103823372544, 72058697861300480, 282578800083200, 72340172838011136, 65792, 72057594037993728, 281474976776448, 72339069014704384, 1099511693568, 72058693549621504, 282574488404224, 72340168526332160, 4295033088, 72057598332961024, 281479271743744, 72339073309671680, 1103806660864, 72058697844588800, 282578783371520, 72340172821299456, 16843008, 72057594054770944, 281474993553664, 72339069031481600, 1099528470784, 72058693566398720, 282574505181440, 72340168543109376, 4311810304, 72057598349738240, 281479288520960, 72339073326448896, 1103823438080, 72058697861366016, 282578800148736, 72340172838076672, 1, 72057594037927937, 281474976710657, 72339069014638593, 1099511627777, 72058693549555713, 282574488338433, 72340168526266369, 4294967297, 72057598332895233, 281479271677953, 72339073309605889, 1103806595073, 72058697844523009, 282578783305729, 72340172821233665, 16777217, 72057594054705153, 281474993487873, 72339069031415809, 1099528404993, 72058693566332929, 282574505115649, 72340168543043585, 4311744513, 72057598349672449, 281479288455169, 72339073326383105, 1103823372289, 72058697861300225, 282578800082945, 72340172838010881, 65537, 72057594037993473, 281474976776193, 72339069014704129, 1099511693313, 72058693549621249, 282574488403969, 72340168526331905, 4295032833, 72057598332960769, 281479271743489, 72339073309671425, 1103806660609, 72058697844588545, 282578783371265, 72340172821299201, 16842753, 72057594054770689, 281474993553409, 72339069031481345, 1099528470529, 72058693566398465, 282574505181185, 72340168543109121, 4311810049, 72057598349737985, 281479288520705, 72339073326448641, 1103823437825, 72058697861365761, 282578800148481, 72340172838076417, 257, 72057594037928193, 281474976710913, 72339069014638849, 1099511628033, 72058693549555969, 282574488338689, 72340168526266625, 4294967553, 72057598332895489, 281479271678209, 72339073309606145, 1103806595329, 72058697844523265, 282578783305985, 72340172821233921, 16777473, 72057594054705409, 281474993488129, 72339069031416065, 1099528405249, 72058693566333185, 282574505115905, 72340168543043841, 4311744769, 72057598349672705, 281479288455425, 72339073326383361, 1103823372545, 72058697861300481, 282578800083201, 72340172838011137, 65793, 72057594037993729, 281474976776449, 72339069014704385, 1099511693569, 72058693549621505, 282574488404225, 72340168526332161, 4295033089, 72057598332961025, 281479271743745, 72339073309671681, 1103806660865, 72058697844588801, 282578783371521, 72340172821299457, 16843009, 72057594054770945, 281474993553665, 72339069031481601, 1099528470785, 72058693566398721, 282574505181441, 72340168543109377, 4311810305, 72057598349738241, 281479288520961, 72339073326448897, 1103823438081, 72058697861366017, 282578800148737, 72340172838076673, 0, 288230376151711744, 1125899906842624, 289356276058554368, 4398046511104, 288234774198222848, 1130297953353728, 289360674105065472, 17179869184, 288230393331580928, 1125917086711808, 289356293238423552, 4415226380288, 288234791378092032, 1130315133222912, 289360691284934656, 67108864, 288230376218820608, 1125899973951488, 289356276125663232, 4398113619968, 288234774265331712, 1130298020462592, 289360674172174336, 17246978048, 288230393398689792, 1125917153820672, 289356293305532416, 4415293489152, 288234791445200896, 1130315200331776, 289360691352043520, 262144, 288230376151973888, 1125899907104768, 289356276058816512, 4398046773248, 288234774198484992, 1130297953615872, 289360674105327616, 17180131328, 288230393331843072, 1125917086973952, 289356293238685696, 4415226642432, 288234791378354176, 1130315133485056, 289360691285196800, 67371008, 288230376219082752, 1125899974213632, 289356276125925376, 4398113882112, 288234774265593856, 1130298020724736, 289360674172436480, 17247240192, 288230393398951936, 1125917154082816, 289356293305794560, 4415293751296, 288234791445463040, 1130315200593920, 289360691352305664, 1024, 288230376151712768, 1125899906843648, 289356276058555392, 4398046512128, 288234774198223872, 1130297953354752, 289360674105066496, 17179870208, 288230393331581952, 1125917086712832, 289356293238424576, 4415226381312, 288234791378093056, 1130315133223936, 289360691284935680, 67109888, 288230376218821632, 1125899973952512, 289356276125664256, 4398113620992, 288234774265332736, 1130298020463616, 289360674172175360, 17246979072, 288230393398690816, 1125917153821696, 289356293305533440, 4415293490176, 288234791445201920, 1130315200332800, 289360691352044544, 263168, 288230376151974912, 1125899907105792, 289356276058817536, 4398046774272, 288234774198486016, 1130297953616896, 289360674105328640, 17180132352, 288230393331844096, 1125917086974976, 289356293238686720, 4415226643456, 288234791378355200, 1130315133486080, 289360691285197824, 67372032, 288230376219083776, 1125899974214656, 289356276125926400, 4398113883136, 288234774265594880, 1130298020725760, 289360674172437504, 17247241216, 288230393398952960, 1125917154083840, 289356293305795584, 4415293752320, 288234791445464064, 1130315200594944, 289360691352306688, 4, 288230376151711748, 1125899906842628, 289356276058554372, 4398046511108, 288234774198222852, 1130297953353732, 289360674105065476, 17179869188, 288230393331580932, 1125917086711812, 289356293238423556, 4415226380292, 288234791378092036, 1130315133222916, 289360691284934660, 67108868, 288230376218820612, 1125899973951492, 289356276125663236, 4398113619972, 288234774265331716, 1130298020462596, 289360674172174340, 17246978052, 288230393398689796, 1125917153820676, 289356293305532420, 4415293489156, 288234791445200900, 1130315200331780, 289360691352043524, 262148, 288230376151973892, 1125899907104772, 289356276058816516, 4398046773252, 288234774198484996, 1130297953615876, 289360674105327620, 17180131332, 288230393331843076, 1125917086973956, 289356293238685700, 4415226642436, 288234791378354180, 1130315133485060, 289360691285196804, 67371012, 288230376219082756, 1125899974213636, 289356276125925380, 4398113882116, 288234774265593860, 1130298020724740, 289360674172436484, 17247240196, 288230393398951940, 1125917154082820, 289356293305794564, 4415293751300, 288234791445463044, 1130315200593924, 289360691352305668, 1028, 288230376151712772, 1125899906843652, 289356276058555396, 4398046512132, 288234774198223876, 1130297953354756, 289360674105066500, 17179870212, 288230393331581956, 1125917086712836, 289356293238424580, 4415226381316, 288234791378093060, 1130315133223940, 289360691284935684, 67109892, 288230376218821636, 1125899973952516, 289356276125664260, 4398113620996, 288234774265332740, 1130298020463620, 289360674172175364, 17246979076, 288230393398690820, 1125917153821700, 289356293305533444, 4415293490180, 288234791445201924, 1130315200332804, 289360691352044548, 263172, 288230376151974916, 1125899907105796, 289356276058817540, 4398046774276, 288234774198486020, 1130297953616900, 289360674105328644, 17180132356, 288230393331844100, 1125917086974980, 289356293238686724, 4415226643460, 288234791378355204, 1130315133486084, 289360691285197828, 67372036, 288230376219083780, 1125899974214660, 289356276125926404, 4398113883140, 288234774265594884, 1130298020725764, 289360674172437508, 17247241220, 288230393398952964, 1125917154083844, 289356293305795588, 4415293752324, 288234791445464068, 1130315200594948, 289360691352306692, 0, 1152921504606846976, 4503599627370496, 1157425104234217472, 17592186044416, 1152939096792891392, 4521191813414912, 1157442696420261888, 68719476736, 1152921573326323712, 4503668346847232, 1157425172953694208, 17660905521152, 1152939165512368128, 4521260532891648, 1157442765139738624, 268435456, 1152921504875282432, 4503599895805952, 1157425104502652928, 17592454479872, 1152939097061326848, 4521192081850368, 1157442696688697344, 68987912192, 1152921573594759168, 4503668615282688, 1157425173222129664, 17661173956608, 1152939165780803584, 4521260801327104, 1157442765408174080, 1048576, 1152921504607895552, 4503599628419072, 1157425104235266048, 17592187092992, 1152939096793939968, 4521191814463488, 1157442696421310464, 68720525312, 1152921573327372288, 4503668347895808, 1157425172954742784, 17660906569728, 1152939165513416704, 4521260533940224, 1157442765140787200, 269484032, 1152921504876331008, 4503599896854528, 1157425104503701504, 17592455528448, 1152939097062375424, 4521192082898944, 1157442696689745920, 68988960768, 1152921573595807744, 4503668616331264, 1157425173223178240, 17661175005184, 1152939165781852160, 4521260802375680, 1157442765409222656, 4096, 1152921504606851072, 4503599627374592, 1157425104234221568, 17592186048512, 1152939096792895488, 4521191813419008, 1157442696420265984, 68719480832, 1152921573326327808, 4503668346851328, 1157425172953698304, 17660905525248, 1152939165512372224, 4521260532895744, 1157442765139742720, 268439552, 1152921504875286528, 4503599895810048, 1157425104502657024, 17592454483968, 1152939097061330944, 4521192081854464, 1157442696688701440, 68987916288, 1152921573594763264, 4503668615286784, 1157425173222133760, 17661173960704, 1152939165780807680, 4521260801331200, 1157442765408178176, 1052672, 1152921504607899648, 4503599628423168, 1157425104235270144, 17592187097088, 1152939096793944064, 4521191814467584, 1157442696421314560, 68720529408, 1152921573327376384, 4503668347899904, 1157425172954746880, 17660906573824, 1152939165513420800, 4521260533944320, 1157442765140791296, 269488128, 1152921504876335104, 4503599896858624, 1157425104503705600, 17592455532544, 1152939097062379520, 4521192082903040, 1157442696689750016, 68988964864, 1152921573595811840, 4503668616335360, 1157425173223182336, 17661175009280, 1152939165781856256, 4521260802379776, 1157442765409226752, 16, 1152921504606846992, 4503599627370512, 1157425104234217488, 17592186044432, 1152939096792891408, 4521191813414928, 1157442696420261904, 68719476752, 1152921573326323728, 4503668346847248, 1157425172953694224, 17660905521168, 1152939165512368144, 4521260532891664, 1157442765139738640, 268435472, 1152921504875282448, 4503599895805968, 1157425104502652944, 17592454479888, 1152939097061326864, 4521192081850384, 1157442696688697360, 68987912208, 1152921573594759184, 4503668615282704, 1157425173222129680, 17661173956624, 1152939165780803600, 4521260801327120, 1157442765408174096, 1048592, 1152921504607895568, 4503599628419088, 1157425104235266064, 17592187093008, 1152939096793939984, 4521191814463504, 1157442696421310480, 68720525328, 1152921573327372304, 4503668347895824, 1157425172954742800, 17660906569744, 1152939165513416720, 4521260533940240, 1157442765140787216, 269484048, 1152921504876331024, 4503599896854544, 1157425104503701520, 17592455528464, 1152939097062375440, 4521192082898960, 1157442696689745936, 68988960784, 1152921573595807760, 4503668616331280, 1157425173223178256, 17661175005200, 1152939165781852176, 4521260802375696, 1157442765409222672, 4112, 1152921504606851088, 4503599627374608, 1157425104234221584, 17592186048528, 1152939096792895504, 4521191813419024, 1157442696420266000, 68719480848, 1152921573326327824, 4503668346851344, 1157425172953698320, 17660905525264, 1152939165512372240, 4521260532895760, 1157442765139742736, 268439568, 1152921504875286544, 4503599895810064, 1157425104502657040, 17592454483984, 1152939097061330960, 4521192081854480, 1157442696688701456, 68987916304, 1152921573594763280, 4503668615286800, 1157425173222133776, 17661173960720, 1152939165780807696, 4521260801331216, 1157442765408178192, 1052688, 1152921504607899664, 4503599628423184, 1157425104235270160, 17592187097104, 1152939096793944080, 4521191814467600, 1157442696421314576, 68720529424, 1152921573327376400, 4503668347899920, 1157425172954746896, 17660906573840, 1152939165513420816, 4521260533944336, 1157442765140791312, 269488144, 1152921504876335120, 4503599896858640, 1157425104503705616, 17592455532560, 1152939097062379536, 4521192082903056, 1157442696689750032, 68988964880, 1152921573595811856, 4503668616335376, 1157425173223182352, 17661175009296, 1152939165781856272, 4521260802379792, 1157442765409226768, 0, 4611686018427387904, 18014398509481984, 4629700416936869888, 70368744177664, 4611756387171565568, 18084767253659648, 4629770785681047552, 274877906944, 4611686293305294848, 18014673387388928, 4629700691814776832, 70643622084608, 4611756662049472512, 18085042131566592, 4629771060558954496, 1073741824, 4611686019501129728, 18014399583223808, 4629700418010611712, 70369817919488, 4611756388245307392, 18084768327401472, 4629770786754789376, 275951648768, 4611686294379036672, 18014674461130752, 4629700692888518656, 70644695826432, 4611756663123214336, 18085043205308416, 4629771061632696320, 4194304, 4611686018431582208, 18014398513676288, 4629700416941064192, 70368748371968, 4611756387175759872, 18084767257853952, 4629770785685241856, 274882101248, 4611686293309489152, 18014673391583232, 4629700691818971136, 70643626278912, 4611756662053666816, 18085042135760896, 4629771060563148800, 1077936128, 4611686019505324032, 18014399587418112, 4629700418014806016, 70369822113792, 4611756388249501696, 18084768331595776, 4629770786758983680, 275955843072, 4611686294383230976, 18014674465325056, 4629700692892712960, 70644700020736, 4611756663127408640, 18085043209502720, 4629771061636890624, 16384, 4611686018427404288, 18014398509498368, 4629700416936886272, 70368744194048, 4611756387171581952, 18084767253676032, 4629770785681063936, 274877923328, 4611686293305311232, 18014673387405312, 4629700691814793216, 70643622100992, 4611756662049488896, 18085042131582976, 4629771060558970880, 1073758208, 4611686019501146112, 18014399583240192, 4629700418010628096, 70369817935872, 4611756388245323776, 18084768327417856, 4629770786754805760, 275951665152, 4611686294379053056, 18014674461147136, 4629700692888535040, 70644695842816, 4611756663123230720, 18085043205324800, 4629771061632712704, 4210688, 4611686018431598592, 18014398513692672, 4629700416941080576, 70368748388352, 4611756387175776256, 18084767257870336, 4629770785685258240, 274882117632, 4611686293309505536, 18014673391599616, 4629700691818987520, 70643626295296, 4611756662053683200, 18085042135777280, 4629771060563165184, 1077952512, 4611686019505340416, 18014399587434496, 4629700418014822400, 70369822130176, 4611756388249518080, 18084768331612160, 4629770786759000064, 275955859456, 4611686294383247360, 18014674465341440, 4629700692892729344, 70644700037120, 4611756663127425024, 18085043209519104, 4629771061636907008, 64, 4611686018427387968, 18014398509482048, 4629700416936869952, 70368744177728, 4611756387171565632, 18084767253659712, 4629770785681047616, 274877907008, 4611686293305294912, 18014673387388992, 4629700691814776896, 70643622084672, 4611756662049472576, 18085042131566656, 4629771060558954560, 1073741888, 4611686019501129792, 18014399583223872, 4629700418010611776, 70369817919552, 4611756388245307456, 18084768327401536, 4629770786754789440, 275951648832, 4611686294379036736, 18014674461130816, 4629700692888518720, 70644695826496, 4611756663123214400, 18085043205308480, 4629771061632696384, 4194368, 4611686018431582272, 18014398513676352, 4629700416941064256, 70368748372032, 4611756387175759936, 18084767257854016, 4629770785685241920, 274882101312, 4611686293309489216, 18014673391583296, 4629700691818971200, 70643626278976, 4611756662053666880, 18085042135760960, 4629771060563148864, 1077936192, 4611686019505324096, 18014399587418176, 4629700418014806080, 70369822113856, 4611756388249501760, 18084768331595840, 4629770786758983744, 275955843136, 4611686294383231040, 18014674465325120, 4629700692892713024, 70644700020800, 4611756663127408704, 18085043209502784, 4629771061636890688, 16448, 4611686018427404352, 18014398509498432, 4629700416936886336, 70368744194112, 4611756387171582016, 18084767253676096, 4629770785681064000, 274877923392, 4611686293305311296, 18014673387405376, 4629700691814793280, 70643622101056, 4611756662049488960, 18085042131583040, 4629771060558970944, 1073758272, 4611686019501146176, 18014399583240256, 4629700418010628160, 70369817935936, 4611756388245323840, 18084768327417920, 4629770786754805824, 275951665216, 4611686294379053120, 18014674461147200, 4629700692888535104, 70644695842880, 4611756663123230784, 18085043205324864, 4629771061632712768, 4210752, 4611686018431598656, 18014398513692736, 4629700416941080640, 70368748388416, 4611756387175776320, 18084767257870400, 4629770785685258304, 274882117696, 4611686293309505600, 18014673391599680, 4629700691818987584, 70643626295360, 4611756662053683264, 18085042135777344, 4629771060563165248, 1077952576, 4611686019505340480, 18014399587434560, 4629700418014822464, 70369822130240, 4611756388249518144, 18084768331612224, 4629770786759000128, 275955859520, 4611686294383247424, 18014674465341504, 4629700692892729408, 70644700037184, 4611756663127425088, 18085043209519168, 4629771061636907072)
E_K = (0, 140737488355330, 4, 140737488355334, 8, 140737488355338, 12, 140737488355342, 80, 140737488355410, 84, 140737488355414, 88, 140737488355418, 92, 140737488355422, 160, 140737488355490, 164, 140737488355494, 168, 140737488355498, 172, 140737488355502, 240, 140737488355570, 244, 140737488355574, 248, 140737488355578, 252, 140737488355582, 256, 140737488355586, 260, 140737488355590, 264, 140737488355594, 268, 140737488355598, 336, 140737488355666, 340, 140737488355670, 344, 140737488355674, 348, 140737488355678, 416, 140737488355746, 420, 140737488355750, 424, 140737488355754, 428, 140737488355758, 496, 140737488355826, 500, 140737488355830, 504, 140737488355834, 508, 140737488355838, 512, 140737488355842, 516, 140737488355846, 520, 140737488355850, 524, 140737488355854, 592, 140737488355922, 596, 140737488355926, 600, 140737488355930, 604, 140737488355934, 672, 140737488356002, 676, 140737488356006, 680, 140737488356010, 684, 140737488356014, 752, 140737488356082, 756, 140737488356086, 760, 140737488356090, 764, 140737488356094, 768, 140737488356098, 772, 140737488356102, 776, 140737488356106, 780, 140737488356110, 848, 140737488356178, 852, 140737488356182, 856, 140737488356186, 860, 140737488356190, 928, 140737488356258, 932, 140737488356262, 936, 140737488356266, 940, 140737488356270, 1008, 140737488356338, 1012, 140737488356342, 1016, 140737488356346, 1020, 140737488356350, 5120, 140737488360450, 5124, 140737488360454, 5128, 140737488360458, 5132, 140737488360462, 5200, 140737488360530, 5204, 140737488360534, 5208, 140737488360538, 5212, 140737488360542, 5280, 140737488360610, 5284, 140737488360614, 5288, 140737488360618, 5292, 140737488360622, 5360, 140737488360690, 5364, 140737488360694, 5368, 140737488360698, 5372, 140737488360702, 5376, 140737488360706, 5380, 140737488360710, 5384, 140737488360714, 5388, 140737488360718, 5456, 140737488360786, 5460, 140737488360790, 5464, 140737488360794, 5468, 140737488360798, 5536, 140737488360866, 5540, 140737488360870, 5544, 140737488360874, 5548, 140737488360878, 5616, 140737488360946, 5620, 140737488360950, 5624, 140737488360954, 5628, 140737488360958, 5632, 140737488360962, 5636, 140737488360966, 5640, 140737488360970, 5644, 140737488360974, 5712, 140737488361042, 5716, 140737488361046, 5720, 140737488361050, 5724, 140737488361054, 5792, 140737488361122, 5796, 140737488361126, 5800, 140737488361130, 5804, 140737488361134, 5872, 140737488361202, 5876, 140737488361206, 5880, 140737488361210, 5884, 140737488361214, 5888, 140737488361218, 5892, 140737488361222, 5896, 140737488361226, 5900, 140737488361230, 5968, 140737488361298, 5972, 140737488361302, 5976, 140737488361306, 5980, 140737488361310, 6048, 140737488361378, 6052, 140737488361382, 6056, 140737488361386, 6060, 140737488361390, 6128, 140737488361458, 6132, 140737488361462, 6136, 140737488361466, 6140, 140737488361470, 0, 10240, 16384, 26624, 32768, 43008, 49152, 59392, 327680, 337920, 344064, 354304, 360448, 370688, 376832, 387072, 655360, 665600, 671744, 681984, 688128, 698368, 704512, 714752, 983040, 993280, 999424, 1009664, 1015808, 1026048, 1032192, 1042432, 1048576, 1058816, 1064960, 1075200, 1081344, 1091584, 1097728, 1107968, 1376256, 1386496, 1392640, 1402880, 1409024, 1419264, 1425408, 1435648, 1703936, 1714176, 1720320, 1730560, 1736704, 1746944, 1753088, 1763328, 2031616, 2041856, 2048000, 2058240, 2064384, 2074624, 2080768, 2091008, 2097152, 2107392, 2113536, 2123776, 2129920, 2140160, 2146304, 2156544, 2424832, 2435072, 2441216, 2451456, 2457600, 2467840, 2473984, 2484224, 2752512, 2762752, 2768896, 2779136, 2785280, 2795520, 2801664, 2811904, 3080192, 3090432, 3096576, 3106816, 3112960, 3123200, 3129344, 3139584, 3145728, 3155968, 3162112, 3172352, 3178496, 3188736, 3194880, 3205120, 3473408, 3483648, 3489792, 3500032, 3506176, 3516416, 3522560, 3532800, 3801088, 3811328, 3817472, 3827712, 3833856, 3844096, 3850240, 3860480, 4128768, 4139008, 4145152, 4155392, 4161536, 4171776, 4177920, 4188160, 20971520, 20981760, 20987904, 20998144, 21004288, 21014528, 21020672, 21030912, 21299200, 21309440, 21315584, 21325824, 21331968, 21342208, 21348352, 21358592, 21626880, 21637120, 21643264, 21653504, 21659648, 21669888, 21676032, 21686272, 21954560, 21964800, 21970944, 21981184, 21987328, 21997568, 22003712, 22013952, 22020096, 22030336, 22036480, 22046720, 22052864, 22063104, 22069248, 22079488, 22347776, 22358016, 22364160, 22374400, 22380544, 22390784, 22396928, 22407168, 22675456, 22685696, 22691840, 22702080, 22708224, 22718464, 22724608, 22734848, 23003136, 23013376, 23019520, 23029760, 23035904, 23046144, 23052288, 23062528, 23068672, 23078912, 23085056, 23095296, 23101440, 23111680, 23117824, 23128064, 23396352, 23406592, 23412736, 23422976, 23429120, 23439360, 23445504, 23455744, 23724032, 23734272, 23740416, 23750656, 23756800, 23767040, 23773184, 23783424, 24051712, 24061952, 24068096, 24078336, 24084480, 24094720, 24100864, 24111104, 24117248, 24127488, 24133632, 24143872, 24150016, 24160256, 24166400, 24176640, 24444928, 24455168, 24461312, 24471552, 24477696, 24487936, 24494080, 24504320, 24772608, 24782848, 24788992, 24799232, 24805376, 24815616, 24821760, 24832000, 25100288, 25110528, 25116672, 25126912, 25133056, 25143296, 25149440, 25159680, 0, 41943040, 67108864, 109051904, 134217728, 176160768, 201326592, 243269632, 1342177280, 1384120320, 1409286144, 1451229184, 1476395008, 1518338048, 1543503872, 1585446912, 2684354560, 2726297600, 2751463424, 2793406464, 2818572288, 2860515328, 2885681152, 2927624192, 4026531840, 4068474880, 4093640704, 4135583744, 4160749568, 4202692608, 4227858432, 4269801472, 4294967296, 4336910336, 4362076160, 4404019200, 4429185024, 4471128064, 4496293888, 4538236928, 5637144576, 5679087616, 5704253440, 5746196480, 5771362304, 5813305344, 5838471168, 5880414208, 6979321856, 7021264896, 7046430720, 7088373760, 7113539584, 7155482624, 7180648448, 7222591488, 8321499136, 8363442176, 8388608000, 8430551040, 8455716864, 8497659904, 8522825728, 8564768768, 8589934592, 8631877632, 8657043456, 8698986496, 8724152320, 8766095360, 8791261184, 8833204224, 9932111872, 9974054912, 9999220736, 10041163776, 10066329600, 10108272640, 10133438464, 10175381504, 11274289152, 11316232192, 11341398016, 11383341056, 11408506880, 11450449920, 11475615744, 11517558784, 12616466432, 12658409472, 12683575296, 12725518336, 12750684160, 12792627200, 12817793024, 12859736064, 12884901888, 12926844928, 12952010752, 12993953792, 13019119616, 13061062656, 13086228480, 13128171520, 14227079168, 14269022208, 14294188032, 14336131072, 14361296896, 14403239936, 14428405760, 14470348800, 15569256448, 15611199488, 15636365312, 15678308352, 15703474176, 15745417216, 15770583040, 15812526080, 16911433728, 16953376768, 16978542592, 17020485632, 17045651456, 17087594496, 17112760320, 17154703360, 85899345920, 85941288960, 85966454784, 86008397824, 86033563648, 86075506688, 86100672512, 86142615552, 87241523200, 87283466240, 87308632064, 87350575104, 87375740928, 87417683968, 87442849792, 87484792832, 88583700480, 88625643520, 88650809344, 88692752384, 88717918208, 88759861248, 88785027072, 88826970112, 89925877760, 89967820800, 89992986624, 90034929664, 90060095488, 90102038528, 90127204352, 90169147392, 90194313216, 90236256256, 90261422080, 90303365120, 90328530944, 90370473984, 90395639808, 90437582848, 91536490496, 91578433536, 91603599360, 91645542400, 91670708224, 91712651264, 91737817088, 91779760128, 92878667776, 92920610816, 92945776640, 92987719680, 93012885504, 93054828544, 93079994368, 93121937408, 94220845056, 94262788096, 94287953920, 94329896960, 94355062784, 94397005824, 94422171648, 94464114688, 94489280512, 94531223552, 94556389376, 94598332416, 94623498240, 94665441280, 94690607104, 94732550144, 95831457792, 95873400832, 95898566656, 95940509696, 95965675520, 96007618560, 96032784384, 96074727424, 97173635072, 97215578112, 97240743936, 97282686976, 97307852800, 97349795840, 97374961664, 97416904704, 98515812352, 98557755392, 98582921216, 98624864256, 98650030080, 98691973120, 98717138944, 98759081984, 98784247808, 98826190848, 98851356672, 98893299712, 98918465536, 98960408576, 98985574400, 99027517440, 100126425088, 100168368128, 100193533952, 100235476992, 100260642816, 100302585856, 100327751680, 100369694720, 101468602368, 101510545408, 101535711232, 101577654272, 101602820096, 101644763136, 101669928960, 101711872000, 102810779648, 102852722688, 102877888512, 102919831552, 102944997376, 102986940416, 103012106240, 103054049280, 0, 171798691840, 274877906944, 446676598784, 549755813888, 721554505728, 824633720832, 996432412672, 5497558138880, 5669356830720, 5772436045824, 5944234737664, 6047313952768, 6219112644608, 6322191859712, 6493990551552, 10995116277760, 11166914969600, 11269994184704, 11441792876544, 11544872091648, 11716670783488, 11819749998592, 11991548690432, 16492674416640, 16664473108480, 16767552323584, 16939351015424, 17042430230528, 17214228922368, 17317308137472, 17489106829312, 17592186044416, 17763984736256, 17867063951360, 18038862643200, 18141941858304, 18313740550144, 18416819765248, 18588618457088, 23089744183296, 23261542875136, 23364622090240, 23536420782080, 23639499997184, 23811298689024, 23914377904128, 24086176595968, 28587302322176, 28759101014016, 28862180229120, 29033978920960, 29137058136064, 29308856827904, 29411936043008, 29583734734848, 34084860461056, 34256659152896, 34359738368000, 34531537059840, 34634616274944, 34806414966784, 34909494181888, 35081292873728, 35184372088832, 35356170780672, 35459249995776, 35631048687616, 35734127902720, 35905926594560, 36009005809664, 36180804501504, 40681930227712, 40853728919552, 40956808134656, 41128606826496, 41231686041600, 41403484733440, 41506563948544, 41678362640384, 46179488366592, 46351287058432, 46454366273536, 46626164965376, 46729244180480, 46901042872320, 47004122087424, 47175920779264, 51677046505472, 51848845197312, 51951924412416, 52123723104256, 52226802319360, 52398601011200, 52501680226304, 52673478918144, 52776558133248, 52948356825088, 53051436040192, 53223234732032, 53326313947136, 53498112638976, 53601191854080, 53772990545920, 58274116272128, 58445914963968, 58548994179072, 58720792870912, 58823872086016, 58995670777856, 59098749992960, 59270548684800, 63771674411008, 63943473102848, 64046552317952, 64218351009792, 64321430224896, 64493228916736, 64596308131840, 64768106823680, 69269232549888, 69441031241728, 69544110456832, 69715909148672, 69818988363776, 69990787055616, 70093866270720, 70265664962560, 70368744177665, 70540542869505, 70643622084609, 70815420776449, 70918499991553, 71090298683393, 71193377898497, 71365176590337, 75866302316545, 76038101008385, 76141180223489, 76312978915329, 76416058130433, 76587856822273, 76690936037377, 76862734729217, 81363860455425, 81535659147265, 81638738362369, 81810537054209, 81913616269313, 82085414961153, 82188494176257, 82360292868097, 86861418594305, 87033217286145, 87136296501249, 87308095193089, 87411174408193, 87582973100033, 87686052315137, 87857851006977, 87960930222081, 88132728913921, 88235808129025, 88407606820865, 88510686035969, 88682484727809, 88785563942913, 88957362634753, 93458488360961, 93630287052801, 93733366267905, 93905164959745, 94008244174849, 94180042866689, 94283122081793, 94454920773633, 98956046499841, 99127845191681, 99230924406785, 99402723098625, 99505802313729, 99677601005569, 99780680220673, 99952478912513, 104453604638721, 104625403330561, 104728482545665, 104900281237505, 105003360452609, 105175159144449, 105278238359553, 105450037051393, 105553116266497, 105724914958337, 105827994173441, 105999792865281, 106102872080385, 106274670772225, 106377749987329, 106549548679169, 111050674405377, 111222473097217, 111325552312321, 111497351004161, 111600430219265, 111772228911105, 111875308126209, 112047106818049, 116548232544257, 116720031236097, 116823110451201, 116994909143041, 117097988358145, 117269787049985, 117372866265089, 117544664956929, 122045790683137, 122217589374977, 122320668590081, 122492467281921, 122595546497025, 122767345188865, 122870424403969, 123042223095809, 123145302310913, 123317101002753, 123420180217857, 123591978909697, 123695058124801, 123866856816641, 123969936031745, 124141734723585, 128642860449793, 128814659141633, 128917738356737, 129089537048577, 129192616263681, 129364414955521, 129467494170625, 129639292862465, 134140418588673, 134312217280513, 134415296495617, 134587095187457, 134690174402561, 134861973094401, 134965052309505, 135136851001345, 139637976727553, 139809775419393, 139912854634497, 140084653326337, 140187732541441, 140359531233281, 140462610448385, 140634409140225)
N_E_K = (0, 2147483648, 1, 2147483649, 2, 2147483650, 3, 2147483651, 4, 2147483652, 5, 2147483653, 6, 2147483654, 7, 2147483655, 8, 2147483656, 9, 2147483657, 10, 2147483658, 11, 2147483659, 12, 2147483660, 13, 2147483661, 14, 2147483662, 15, 2147483663, 16, 2147483664, 17, 2147483665, 18, 2147483666, 19, 2147483667, 20, 2147483668, 21, 2147483669, 22, 2147483670, 23, 2147483671, 24, 2147483672, 25, 2147483673, 26, 2147483674, 27, 2147483675, 28, 2147483676, 29, 2147483677, 30, 2147483678, 31, 2147483679, 8, 2147483656, 9, 2147483657, 10, 2147483658, 11, 2147483659, 12, 2147483660, 13, 2147483661, 14, 2147483662, 15, 2147483663, 8, 2147483656, 9, 2147483657, 10, 2147483658, 11, 2147483659, 12, 2147483660, 13, 2147483661, 14, 2147483662, 15, 2147483663, 24, 2147483672, 25, 2147483673, 26, 2147483674, 27, 2147483675, 28, 2147483676, 29, 2147483677, 30, 2147483678, 31, 2147483679, 24, 2147483672, 25, 2147483673, 26, 2147483674, 27, 2147483675, 28, 2147483676, 29, 2147483677, 30, 2147483678, 31, 2147483679, 16, 2147483664, 17, 2147483665, 18, 2147483666, 19, 2147483667, 20, 2147483668, 21, 2147483669, 22, 2147483670, 23, 2147483671, 24, 2147483672, 25, 2147483673, 26, 2147483674, 27, 2147483675, 28, 2147483676, 29, 2147483677, 30, 2147483678, 31, 2147483679, 16, 2147483664, 17, 2147483665, 18, 2147483666, 19, 2147483667, 20, 2147483668, 21, 2147483669, 22, 2147483670, 23, 2147483671, 24, 2147483672, 25, 2147483673, 26, 2147483674, 27, 2147483675, 28, 2147483676, 29, 2147483677, 30, 2147483678, 31, 2147483679, 24, 2147483672, 25, 2147483673, 26, 2147483674, 27, 2147483675, 28, 2147483676, 29, 2147483677, 30, 2147483678, 31, 2147483679, 24, 2147483672, 25, 2147483673, 26, 2147483674, 27, 2147483675, 28, 2147483676, 29, 2147483677, 30, 2147483678, 31, 2147483679, 24, 2147483672, 25, 2147483673, 26, 2147483674, 27, 2147483675, 28, 2147483676, 29, 2147483677, 30, 2147483678, 31, 2147483679, 24, 2147483672, 25, 2147483673, 26, 2147483674, 27, 2147483675, 28, 2147483676, 29, 2147483677, 30, 2147483678, 31, 2147483679, 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 128, 160, 192, 224, 128, 160, 192, 224, 384, 416, 448, 480, 384, 416, 448, 480, 256, 288, 320, 352, 384, 416, 448, 480, 256, 288, 320, 352, 384, 416, 448, 480, 384, 416, 448, 480, 384, 416, 448, 480, 384, 416, 448, 480, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, 640, 672, 704, 736, 640, 672, 704, 736, 896, 928, 960, 992, 896, 928, 960, 992, 768, 800, 832, 864, 896, 928, 960, 992, 768, 800, 832, 864, 896, 928, 960, 992, 896, 928, 960, 992, 896, 928, 960, 992, 896, 928, 960, 992, 896, 928, 960, 992, 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1152, 1184, 1216, 1248, 1152, 1184, 1216, 1248, 1408, 1440, 1472, 1504, 1408, 1440, 1472, 1504, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1408, 1440, 1472, 1504, 1408, 1440, 1472, 1504, 1408, 1440, 1472, 1504, 1408, 1440, 1472, 1504, 1536, 1568, 1600, 1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, 1664, 1696, 1728, 1760, 1664, 1696, 1728, 1760, 1920, 1952, 1984, 2016, 1920, 1952, 1984, 2016, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, 1920, 1952, 1984, 2016, 1920, 1952, 1984, 2016, 1920, 1952, 1984, 2016, 1920, 1952, 1984, 2016, 0, 2048, 4096, 6144, 2048, 2048, 6144, 6144, 4096, 6144, 4096, 6144, 6144, 6144, 6144, 6144, 8192, 10240, 12288, 14336, 10240, 10240, 14336, 14336, 12288, 14336, 12288, 14336, 14336, 14336, 14336, 14336, 16384, 18432, 20480, 22528, 18432, 18432, 22528, 22528, 20480, 22528, 20480, 22528, 22528, 22528, 22528, 22528, 24576, 26624, 28672, 30720, 26624, 26624, 30720, 30720, 28672, 30720, 28672, 30720, 30720, 30720, 30720, 30720, 32768, 34816, 36864, 38912, 34816, 34816, 38912, 38912, 36864, 38912, 36864, 38912, 38912, 38912, 38912, 38912, 40960, 43008, 45056, 47104, 43008, 43008, 47104, 47104, 45056, 47104, 45056, 47104, 47104, 47104, 47104, 47104, 49152, 51200, 53248, 55296, 51200, 51200, 55296, 55296, 53248, 55296, 53248, 55296, 55296, 55296, 55296, 55296, 57344, 59392, 61440, 63488, 59392, 59392, 63488, 63488, 61440, 63488, 61440, 63488, 63488, 63488, 63488, 63488, 65536, 67584, 69632, 71680, 67584, 67584, 71680, 71680, 69632, 71680, 69632, 71680, 71680, 71680, 71680, 71680, 73728, 75776, 77824, 79872, 75776, 75776, 79872, 79872, 77824, 79872, 77824, 79872, 79872, 79872, 79872, 79872, 81920, 83968, 86016, 88064, 83968, 83968, 88064, 88064, 86016, 88064, 86016, 88064, 88064, 88064, 88064, 88064, 90112, 92160, 94208, 96256, 92160, 92160, 96256, 96256, 94208, 96256, 94208, 96256, 96256, 96256, 96256, 96256, 98304, 100352, 102400, 104448, 100352, 100352, 104448, 104448, 102400, 104448, 102400, 104448, 104448, 104448, 104448, 104448, 106496, 108544, 110592, 112640, 108544, 108544, 112640, 112640, 110592, 112640, 110592, 112640, 112640, 112640, 112640, 112640, 114688, 116736, 118784, 120832, 116736, 116736, 120832, 120832, 118784, 120832, 118784, 120832, 120832, 120832, 120832, 120832, 122880, 124928, 126976, 129024, 124928, 124928, 129024, 129024, 126976, 129024, 126976, 129024, 129024, 129024, 129024, 129024, 0, 32768, 65536, 98304, 131072, 163840, 196608, 229376, 262144, 294912, 327680, 360448, 393216, 425984, 458752, 491520, 524288, 557056, 589824, 622592, 655360, 688128, 720896, 753664, 786432, 819200, 851968, 884736, 917504, 950272, 983040, 1015808, 1048576, 1081344, 1114112, 1146880, 1179648, 1212416, 1245184, 1277952, 1310720, 1343488, 1376256, 1409024, 1441792, 1474560, 1507328, 1540096, 1572864, 1605632, 1638400, 1671168, 1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544, 1933312, 1966080, 1998848, 2031616, 2064384, 524288, 557056, 589824, 622592, 655360, 688128, 720896, 753664, 786432, 819200, 851968, 884736, 917504, 950272, 983040, 1015808, 524288, 557056, 589824, 622592, 655360, 688128, 720896, 753664, 786432, 819200, 851968, 884736, 917504, 950272, 983040, 1015808, 1572864, 1605632, 1638400, 1671168, 1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544, 1933312, 1966080, 1998848, 2031616, 2064384, 1572864, 1605632, 1638400, 1671168, 1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544, 1933312, 1966080, 1998848, 2031616, 2064384, 1048576, 1081344, 1114112, 1146880, 1179648, 1212416, 1245184, 1277952, 1310720, 1343488, 1376256, 1409024, 1441792, 1474560, 1507328, 1540096, 1572864, 1605632, 1638400, 1671168, 1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544, 1933312, 1966080, 1998848, 2031616, 2064384, 1048576, 1081344, 1114112, 1146880, 1179648, 1212416, 1245184, 1277952, 1310720, 1343488, 1376256, 1409024, 1441792, 1474560, 1507328, 1540096, 1572864, 1605632, 1638400, 1671168, 1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544, 1933312, 1966080, 1998848, 2031616, 2064384, 1572864, 1605632, 1638400, 1671168, 1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544, 1933312, 1966080, 1998848, 2031616, 2064384, 1572864, 1605632, 1638400, 1671168, 1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544, 1933312, 1966080, 1998848, 2031616, 2064384, 1572864, 1605632, 1638400, 1671168, 1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544, 1933312, 1966080, 1998848, 2031616, 2064384, 1572864, 1605632, 1638400, 1671168, 1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544, 1933312, 1966080, 1998848, 2031616, 2064384, 0, 2097152, 4194304, 6291456, 8388608, 10485760, 12582912, 14680064, 16777216, 18874368, 20971520, 23068672, 25165824, 27262976, 29360128, 31457280, 8388608, 10485760, 12582912, 14680064, 8388608, 10485760, 12582912, 14680064, 25165824, 27262976, 29360128, 31457280, 25165824, 27262976, 29360128, 31457280, 16777216, 18874368, 20971520, 23068672, 25165824, 27262976, 29360128, 31457280, 16777216, 18874368, 20971520, 23068672, 25165824, 27262976, 29360128, 31457280, 25165824, 27262976, 29360128, 31457280, 25165824, 27262976, 29360128, 31457280, 25165824, 27262976, 29360128, 31457280, 25165824, 27262976, 29360128, 31457280, 33554432, 35651584, 37748736, 39845888, 41943040, 44040192, 46137344, 48234496, 50331648, 52428800, 54525952, 56623104, 58720256, 60817408, 62914560, 65011712, 41943040, 44040192, 46137344, 48234496, 41943040, 44040192, 46137344, 48234496, 58720256, 60817408, 62914560, 65011712, 58720256, 60817408, 62914560, 65011712, 50331648, 52428800, 54525952, 56623104, 58720256, 60817408, 62914560, 65011712, 50331648, 52428800, 54525952, 56623104, 58720256, 60817408, 62914560, 65011712, 58720256, 60817408, 62914560, 65011712, 58720256, 60817408, 62914560, 65011712, 58720256, 60817408, 62914560, 65011712, 58720256, 60817408, 62914560, 65011712, 67108864, 69206016, 71303168, 73400320, 75497472, 77594624, 79691776, 81788928, 83886080, 85983232, 88080384, 90177536, 92274688, 94371840, 96468992, 98566144, 75497472, 77594624, 79691776, 81788928, 75497472, 77594624, 79691776, 81788928, 92274688, 94371840, 96468992, 98566144, 92274688, 94371840, 96468992, 98566144, 83886080, 85983232, 88080384, 90177536, 92274688, 94371840, 96468992, 98566144, 83886080, 85983232, 88080384, 90177536, 92274688, 94371840, 96468992, 98566144, 92274688, 94371840, 96468992, 98566144, 92274688, 94371840, 96468992, 98566144, 92274688, 94371840, 96468992, 98566144, 92274688, 94371840, 96468992, 98566144, 100663296, 102760448, 104857600, 106954752, 109051904, 111149056, 113246208, 115343360, 117440512, 119537664, 121634816, 123731968, 125829120, 127926272, 130023424, 132120576, 109051904, 111149056, 113246208, 115343360, 109051904, 111149056, 113246208, 115343360, 125829120, 127926272, 130023424, 132120576, 125829120, 127926272, 130023424, 132120576, 117440512, 119537664, 121634816, 123731968, 125829120, 127926272, 130023424, 132120576, 117440512, 119537664, 121634816, 123731968, 125829120, 127926272, 130023424, 132120576, 125829120, 127926272, 130023424, 132120576, 125829120, 127926272, 130023424, 132120576, 125829120, 127926272, 130023424, 132120576, 125829120, 127926272, 130023424, 132120576, 0, 134217728, 268435456, 402653184, 134217728, 134217728, 402653184, 402653184, 268435456, 402653184, 268435456, 402653184, 402653184, 402653184, 402653184, 402653184, 536870912, 671088640, 805306368, 939524096, 671088640, 671088640, 939524096, 939524096, 805306368, 939524096, 805306368, 939524096, 939524096, 939524096, 939524096, 939524096, 1073741824, 1207959552, 1342177280, 1476395008, 1207959552, 1207959552, 1476395008, 1476395008, 1342177280, 1476395008, 1342177280, 1476395008, 1476395008, 1476395008, 1476395008, 1476395008, 1610612736, 1744830464, 1879048192, 2013265920, 1744830464, 1744830464, 2013265920, 2013265920, 1879048192, 2013265920, 1879048192, 2013265920, 2013265920, 2013265920, 2013265920, 2013265920, 2147483648, 2281701376, 2415919104, 2550136832, 2281701376, 2281701376, 2550136832, 2550136832, 2415919104, 2550136832, 2415919104, 2550136832, 2550136832, 2550136832, 2550136832, 2550136832, 2684354560, 2818572288, 2952790016, 3087007744, 2818572288, 2818572288, 3087007744, 3087007744, 2952790016, 3087007744, 2952790016, 3087007744, 3087007744, 3087007744, 3087007744, 3087007744, 3221225472, 3355443200, 3489660928, 3623878656, 3355443200, 3355443200, 3623878656, 3623878656, 3489660928, 3623878656, 3489660928, 3623878656, 3623878656, 3623878656, 3623878656, 3623878656, 3758096384, 3892314112, 4026531840, 4160749568, 3892314112, 3892314112, 4160749568, 4160749568, 4026531840, 4160749568, 4026531840, 4160749568, 4160749568, 4160749568, 4160749568, 4160749568, 1, 134217729, 268435457, 402653185, 134217729, 134217729, 402653185, 402653185, 268435457, 402653185, 268435457, 402653185, 402653185, 402653185, 402653185, 402653185, 536870913, 671088641, 805306369, 939524097, 671088641, 671088641, 939524097, 939524097, 805306369, 939524097, 805306369, 939524097, 939524097, 939524097, 939524097, 939524097, 1073741825, 1207959553, 1342177281, 1476395009, 1207959553, 1207959553, 1476395009, 1476395009, 1342177281, 1476395009, 1342177281, 1476395009, 1476395009, 1476395009, 1476395009, 1476395009, 1610612737, 1744830465, 1879048193, 2013265921, 1744830465, 1744830465, 2013265921, 2013265921, 1879048193, 2013265921, 1879048193, 2013265921, 2013265921, 2013265921, 2013265921, 2013265921, 2147483649, 2281701377, 2415919105, 2550136833, 2281701377, 2281701377, 2550136833, 2550136833, 2415919105, 2550136833, 2415919105, 2550136833, 2550136833, 2550136833, 2550136833, 2550136833, 2684354561, 2818572289, 2952790017, 3087007745, 2818572289, 2818572289, 3087007745, 3087007745, 2952790017, 3087007745, 2952790017, 3087007745, 3087007745, 3087007745, 3087007745, 3087007745, 3221225473, 3355443201, 3489660929, 3623878657, 3355443201, 3355443201, 3623878657, 3623878657, 3489660929, 3623878657, 3489660929, 3623878657, 3623878657, 3623878657, 3623878657, 3623878657, 3758096385, 3892314113, 4026531841, 4160749569, 3892314113, 3892314113, 4160749569, 4160749569, 4026531841, 4160749569, 4026531841, 4160749569, 4160749569, 4160749569, 4160749569, 4160749569)
P_K = (0, 2048, 131072, 133120, 32, 2080, 131104, 133152, 134217728, 134219776, 134348800, 134350848, 134217760, 134219808, 134348832, 134350880, 33554432, 33556480, 33685504, 33687552, 33554464, 33556512, 33685536, 33687584, 167772160, 167774208, 167903232, 167905280, 167772192, 167774240, 167903264, 167905312, 1024, 3072, 132096, 134144, 1056, 3104, 132128, 134176, 134218752, 134220800, 134349824, 134351872, 134218784, 134220832, 134349856, 134351904, 33555456, 33557504, 33686528, 33688576, 33555488, 33557536, 33686560, 33688608, 167773184, 167775232, 167904256, 167906304, 167773216, 167775264, 167904288, 167906336, 1048576, 1050624, 1179648, 1181696, 1048608, 1050656, 1179680, 1181728, 135266304, 135268352, 135397376, 135399424, 135266336, 135268384, 135397408, 135399456, 34603008, 34605056, 34734080, 34736128, 34603040, 34605088, 34734112, 34736160, 168820736, 168822784, 168951808, 168953856, 168820768, 168822816, 168951840, 168953888, 1049600, 1051648, 1180672, 1182720, 1049632, 1051680, 1180704, 1182752, 135267328, 135269376, 135398400, 135400448, 135267360, 135269408, 135398432, 135400480, 34604032, 34606080, 34735104, 34737152, 34604064, 34606112, 34735136, 34737184, 168821760, 168823808, 168952832, 168954880, 168821792, 168823840, 168952864, 168954912, 1, 2049, 131073, 133121, 33, 2081, 131105, 133153, 134217729, 134219777, 134348801, 134350849, 134217761, 134219809, 134348833, 134350881, 33554433, 33556481, 33685505, 33687553, 33554465, 33556513, 33685537, 33687585, 167772161, 167774209, 167903233, 167905281, 167772193, 167774241, 167903265, 167905313, 1025, 3073, 132097, 134145, 1057, 3105, 132129, 134177, 134218753, 134220801, 134349825, 134351873, 134218785, 134220833, 134349857, 134351905, 33555457, 33557505, 33686529, 33688577, 33555489, 33557537, 33686561, 33688609, 167773185, 167775233, 167904257, 167906305, 167773217, 167775265, 167904289, 167906337, 1048577, 1050625, 1179649, 1181697, 1048609, 1050657, 1179681, 1181729, 135266305, 135268353, 135397377, 135399425, 135266337, 135268385, 135397409, 135399457, 34603009, 34605057, 34734081, 34736129, 34603041, 34605089, 34734113, 34736161, 168820737, 168822785, 168951809, 168953857, 168820769, 168822817, 168951841, 168953889, 1049601, 1051649, 1180673, 1182721, 1049633, 1051681, 1180705, 1182753, 135267329, 135269377, 135398401, 135400449, 135267361, 135269409, 135398433, 135400481, 34604033, 34606081, 34735105, 34737153, 34604065, 34606113, 34735137, 34737185, 168821761, 168823809, 168952833, 168954881, 168821793, 168823841, 168952865, 168954913, 0, 8192, 2097152, 2105344, 8, 8200, 2097160, 2105352, 268435456, 268443648, 270532608, 270540800, 268435464, 268443656, 270532616, 270540808, 536870912, 536879104, 538968064, 538976256, 536870920, 536879112, 538968072, 538976264, 805306368, 805314560, 807403520, 807411712, 805306376, 805314568, 807403528, 807411720, 128, 8320, 2097280, 2105472, 136, 8328, 2097288, 2105480, 268435584, 268443776, 270532736, 270540928, 268435592, 268443784, 270532744, 270540936, 536871040, 536879232, 538968192, 538976384, 536871048, 536879240, 538968200, 538976392, 805306496, 805314688, 807403648, 807411840, 805306504, 805314696, 807403656, 807411848, 262144, 270336, 2359296, 2367488, 262152, 270344, 2359304, 2367496, 268697600, 268705792, 270794752, 270802944, 268697608, 268705800, 270794760, 270802952, 537133056, 537141248, 539230208, 539238400, 537133064, 537141256, 539230216, 539238408, 805568512, 805576704, 807665664, 807673856, 805568520, 805576712, 807665672, 807673864, 262272, 270464, 2359424, 2367616, 262280, 270472, 2359432, 2367624, 268697728, 268705920, 270794880, 270803072, 268697736, 268705928, 270794888, 270803080, 537133184, 537141376, 539230336, 539238528, 537133192, 537141384, 539230344, 539238536, 805568640, 805576832, 807665792, 807673984, 805568648, 805576840, 807665800, 807673992, 16777216, 16785408, 18874368, 18882560, 16777224, 16785416, 18874376, 18882568, 285212672, 285220864, 287309824, 287318016, 285212680, 285220872, 287309832, 287318024, 553648128, 553656320, 555745280, 555753472, 553648136, 553656328, 555745288, 555753480, 822083584, 822091776, 824180736, 824188928, 822083592, 822091784, 824180744, 824188936, 16777344, 16785536, 18874496, 18882688, 16777352, 16785544, 18874504, 18882696, 285212800, 285220992, 287309952, 287318144, 285212808, 285221000, 287309960, 287318152, 553648256, 553656448, 555745408, 555753600, 553648264, 553656456, 555745416, 555753608, 822083712, 822091904, 824180864, 824189056, 822083720, 822091912, 824180872, 824189064, 17039360, 17047552, 19136512, 19144704, 17039368, 17047560, 19136520, 19144712, 285474816, 285483008, 287571968, 287580160, 285474824, 285483016, 287571976, 287580168, 553910272, 553918464, 556007424, 556015616, 553910280, 553918472, 556007432, 556015624, 822345728, 822353920, 824442880, 824451072, 822345736, 822353928, 824442888, 824451080, 17039488, 17047680, 19136640, 19144832, 17039496, 17047688, 19136648, 19144840, 285474944, 285483136, 287572096, 287580288, 285474952, 285483144, 287572104, 287580296, 553910400, 553918592, 556007552, 556015744, 553910408, 553918600, 556007560, 556015752, 822345856, 822354048, 824443008, 824451200, 822345864, 822354056, 824443016, 824451208, 0, 2147483648, 4194304, 2151677952, 4096, 2147487744, 4198400, 2151682048, 64, 2147483712, 4194368, 2151678016, 4160, 2147487808, 4198464, 2151682112, 67108864, 2214592512, 71303168, 2218786816, 67112960, 2214596608, 71307264, 2218790912, 67108928, 2214592576, 71303232, 2218786880, 67113024, 2214596672, 71307328, 2218790976, 4, 2147483652, 4194308, 2151677956, 4100, 2147487748, 4198404, 2151682052, 68, 2147483716, 4194372, 2151678020, 4164, 2147487812, 4198468, 2151682116, 67108868, 2214592516, 71303172, 2218786820, 67112964, 2214596612, 71307268, 2218790916, 67108932, 2214592580, 71303236, 2218786884, 67113028, 2214596676, 71307332, 2218790980, 65536, 2147549184, 4259840, 2151743488, 69632, 2147553280, 4263936, 2151747584, 65600, 2147549248, 4259904, 2151743552, 69696, 2147553344, 4264000, 2151747648, 67174400, 2214658048, 71368704, 2218852352, 67178496, 2214662144, 71372800, 2218856448, 67174464, 2214658112, 71368768, 2218852416, 67178560, 2214662208, 71372864, 2218856512, 65540, 2147549188, 4259844, 2151743492, 69636, 2147553284, 4263940, 2151747588, 65604, 2147549252, 4259908, 2151743556, 69700, 2147553348, 4264004, 2151747652, 67174404, 2214658052, 71368708, 2218852356, 67178500, 2214662148, 71372804, 2218856452, 67174468, 2214658116, 71368772, 2218852420, 67178564, 2214662212, 71372868, 2218856516, 256, 2147483904, 4194560, 2151678208, 4352, 2147488000, 4198656, 2151682304, 320, 2147483968, 4194624, 2151678272, 4416, 2147488064, 4198720, 2151682368, 67109120, 2214592768, 71303424, 2218787072, 67113216, 2214596864, 71307520, 2218791168, 67109184, 2214592832, 71303488, 2218787136, 67113280, 2214596928, 71307584, 2218791232, 260, 2147483908, 4194564, 2151678212, 4356, 2147488004, 4198660, 2151682308, 324, 2147483972, 4194628, 2151678276, 4420, 2147488068, 4198724, 2151682372, 67109124, 2214592772, 71303428, 2218787076, 67113220, 2214596868, 71307524, 2218791172, 67109188, 2214592836, 71303492, 2218787140, 67113284, 2214596932, 71307588, 2218791236, 65792, 2147549440, 4260096, 2151743744, 69888, 2147553536, 4264192, 2151747840, 65856, 2147549504, 4260160, 2151743808, 69952, 2147553600, 4264256, 2151747904, 67174656, 2214658304, 71368960, 2218852608, 67178752, 2214662400, 71373056, 2218856704, 67174720, 2214658368, 71369024, 2218852672, 67178816, 2214662464, 71373120, 2218856768, 65796, 2147549444, 4260100, 2151743748, 69892, 2147553540, 4264196, 2151747844, 65860, 2147549508, 4260164, 2151743812, 69956, 2147553604, 4264260, 2151747908, 67174660, 2214658308, 71368964, 2218852612, 67178756, 2214662404, 71373060, 2218856708, 67174724, 2214658372, 71369028, 2218852676, 67178820, 2214662468, 71373124, 2218856772, 0, 16384, 1073741824, 1073758208, 16, 16400, 1073741840, 1073758224, 524288, 540672, 1074266112, 1074282496, 524304, 540688, 1074266128, 1074282512, 2, 16386, 1073741826, 1073758210, 18, 16402, 1073741842, 1073758226, 524290, 540674, 1074266114, 1074282498, 524306, 540690, 1074266130, 1074282514, 512, 16896, 1073742336, 1073758720, 528, 16912, 1073742352, 1073758736, 524800, 541184, 1074266624, 1074283008, 524816, 541200, 1074266640, 1074283024, 514, 16898, 1073742338, 1073758722, 530, 16914, 1073742354, 1073758738, 524802, 541186, 1074266626, 1074283010, 524818, 541202, 1074266642, 1074283026, 32768, 49152, 1073774592, 1073790976, 32784, 49168, 1073774608, 1073790992, 557056, 573440, 1074298880, 1074315264, 557072, 573456, 1074298896, 1074315280, 32770, 49154, 1073774594, 1073790978, 32786, 49170, 1073774610, 1073790994, 557058, 573442, 1074298882, 1074315266, 557074, 573458, 1074298898, 1074315282, 33280, 49664, 1073775104, 1073791488, 33296, 49680, 1073775120, 1073791504, 557568, 573952, 1074299392, 1074315776, 557584, 573968, 1074299408, 1074315792, 33282, 49666, 1073775106, 1073791490, 33298, 49682, 1073775122, 1073791506, 557570, 573954, 1074299394, 1074315778, 557586, 573970, 1074299410, 1074315794, 8388608, 8404992, 1082130432, 1082146816, 8388624, 8405008, 1082130448, 1082146832, 8912896, 8929280, 1082654720, 1082671104, 8912912, 8929296, 1082654736, 1082671120, 8388610, 8404994, 1082130434, 1082146818, 8388626, 8405010, 1082130450, 1082146834, 8912898, 8929282, 1082654722, 1082671106, 8912914, 8929298, 1082654738, 1082671122, 8389120, 8405504, 1082130944, 1082147328, 8389136, 8405520, 1082130960, 1082147344, 8913408, 8929792, 1082655232, 1082671616, 8913424, 8929808, 1082655248, 1082671632, 8389122, 8405506, 1082130946, 1082147330, 8389138, 8405522, 1082130962, 1082147346, 8913410, 8929794, 1082655234, 1082671618, 8913426, 8929810, 1082655250, 1082671634, 8421376, 8437760, 1082163200, 1082179584, 8421392, 8437776, 1082163216, 1082179600, 8945664, 8962048, 1082687488, 1082703872, 8945680, 8962064, 1082687504, 1082703888, 8421378, 8437762, 1082163202, 1082179586, 8421394, 8437778, 1082163218, 1082179602, 8945666, 8962050, 1082687490, 1082703874, 8945682, 8962066, 1082687506, 1082703890, 8421888, 8438272, 1082163712, 1082180096, 8421904, 8438288, 1082163728, 1082180112, 8946176, 8962560, 1082688000, 1082704384, 8946192, 8962576, 1082688016, 1082704400, 8421890, 8438274, 1082163714, 1082180098, 8421906, 8438290, 1082163730, 1082180114, 8946178, 8962562, 1082688002, 1082704386, 8946194, 8962578, 1082688018, 1082704402)
N_P_K = (0, 128, 268435456, 268435584, 2097152, 2097280, 270532608, 270532736, 1024, 1152, 268436480, 268436608, 2098176, 2098304, 270533632, 270533760, 67108864, 67108992, 335544320, 335544448, 69206016, 69206144, 337641472, 337641600, 67109888, 67110016, 335545344, 335545472, 69207040, 69207168, 337642496, 337642624, 4, 132, 268435460, 268435588, 2097156, 2097284, 270532612, 270532740, 1028, 1156, 268436484, 268436612, 2098180, 2098308, 270533636, 270533764, 67108868, 67108996, 335544324, 335544452, 69206020, 69206148, 337641476, 337641604, 67109892, 67110020, 335545348, 335545476, 69207044, 69207172, 337642500, 337642628, 524288, 524416, 268959744, 268959872, 2621440, 2621568, 271056896, 271057024, 525312, 525440, 268960768, 268960896, 2622464, 2622592, 271057920, 271058048, 67633152, 67633280, 336068608, 336068736, 69730304, 69730432, 338165760, 338165888, 67634176, 67634304, 336069632, 336069760, 69731328, 69731456, 338166784, 338166912, 524292, 524420, 268959748, 268959876, 2621444, 2621572, 271056900, 271057028, 525316, 525444, 268960772, 268960900, 2622468, 2622596, 271057924, 271058052, 67633156, 67633284, 336068612, 336068740, 69730308, 69730436, 338165764, 338165892, 67634180, 67634308, 336069636, 336069764, 69731332, 69731460, 338166788, 338166916, 8192, 8320, 268443648, 268443776, 2105344, 2105472, 270540800, 270540928, 9216, 9344, 268444672, 268444800, 2106368, 2106496, 270541824, 270541952, 67117056, 67117184, 335552512, 335552640, 69214208, 69214336, 337649664, 337649792, 67118080, 67118208, 335553536, 335553664, 69215232, 69215360, 337650688, 337650816, 8196, 8324, 268443652, 268443780, 2105348, 2105476, 270540804, 270540932, 9220, 9348, 268444676, 268444804, 2106372, 2106500, 270541828, 270541956, 67117060, 67117188, 335552516, 335552644, 69214212, 69214340, 337649668, 337649796, 67118084, 67118212, 335553540, 335553668, 69215236, 69215364, 337650692, 337650820, 532480, 532608, 268967936, 268968064, 2629632, 2629760, 271065088, 271065216, 533504, 533632, 268968960, 268969088, 2630656, 2630784, 271066112, 271066240, 67641344, 67641472, 336076800, 336076928, 69738496, 69738624, 338173952, 338174080, 67642368, 67642496, 336077824, 336077952, 69739520, 69739648, 338174976, 338175104, 532484, 532612, 268967940, 268968068, 2629636, 2629764, 271065092, 271065220, 533508, 533636, 268968964, 268969092, 2630660, 2630788, 271066116, 271066244, 67641348, 67641476, 336076804, 336076932, 69738500, 69738628, 338173956, 338174084, 67642372, 67642500, 336077828, 336077956, 69739524, 69739652, 338174980, 338175108, 0, 8388608, 536870912, 545259520, 32, 8388640, 536870944, 545259552, 1, 8388609, 536870913, 545259521, 33, 8388641, 536870945, 545259553, 262144, 8650752, 537133056, 545521664, 262176, 8650784, 537133088, 545521696, 262145, 8650753, 537133057, 545521665, 262177, 8650785, 537133089, 545521697, 256, 8388864, 536871168, 545259776, 288, 8388896, 536871200, 545259808, 257, 8388865, 536871169, 545259777, 289, 8388897, 536871201, 545259809, 262400, 8651008, 537133312, 545521920, 262432, 8651040, 537133344, 545521952, 262401, 8651009, 537133313, 545521921, 262433, 8651041, 537133345, 545521953, 16777216, 25165824, 553648128, 562036736, 16777248, 25165856, 553648160, 562036768, 16777217, 25165825, 553648129, 562036737, 16777249, 25165857, 553648161, 562036769, 17039360, 25427968, 553910272, 562298880, 17039392, 25428000, 553910304, 562298912, 17039361, 25427969, 553910273, 562298881, 17039393, 25428001, 553910305, 562298913, 16777472, 25166080, 553648384, 562036992, 16777504, 25166112, 553648416, 562037024, 16777473, 25166081, 553648385, 562036993, 16777505, 25166113, 553648417, 562037025, 17039616, 25428224, 553910528, 562299136, 17039648, 25428256, 553910560, 562299168, 17039617, 25428225, 553910529, 562299137, 17039649, 25428257, 553910561, 562299169, 1073741824, 1082130432, 1610612736, 1619001344, 1073741856, 1082130464, 1610612768, 1619001376, 1073741825, 1082130433, 1610612737, 1619001345, 1073741857, 1082130465, 1610612769, 1619001377, 1074003968, 1082392576, 1610874880, 1619263488, 1074004000, 1082392608, 1610874912, 1619263520, 1074003969, 1082392577, 1610874881, 1619263489, 1074004001, 1082392609, 1610874913, 1619263521, 1073742080, 1082130688, 1610612992, 1619001600, 1073742112, 1082130720, 1610613024, 1619001632, 1073742081, 1082130689, 1610612993, 1619001601, 1073742113, 1082130721, 1610613025, 1619001633, 1074004224, 1082392832, 1610875136, 1619263744, 1074004256, 1082392864, 1610875168, 1619263776, 1074004225, 1082392833, 1610875137, 1619263745, 1074004257, 1082392865, 1610875169, 1619263777, 1090519040, 1098907648, 1627389952, 1635778560, 1090519072, 1098907680, 1627389984, 1635778592, 1090519041, 1098907649, 1627389953, 1635778561, 1090519073, 1098907681, 1627389985, 1635778593, 1090781184, 1099169792, 1627652096, 1636040704, 1090781216, 1099169824, 1627652128, 1636040736, 1090781185, 1099169793, 1627652097, 1636040705, 1090781217, 1099169825, 1627652129, 1636040737, 1090519296, 1098907904, 1627390208, 1635778816, 1090519328, 1098907936, 1627390240, 1635778848, 1090519297, 1098907905, 1627390209, 1635778817, 1090519329, 1098907937, 1627390241, 1635778849, 1090781440, 1099170048, 1627652352, 1636040960, 1090781472, 1099170080, 1627652384, 1636040992, 1090781441, 1099170049, 1627652353, 1636040961, 1090781473, 1099170081, 1627652385, 1636040993, 0, 4194304, 2, 4194306, 16384, 4210688, 16386, 4210690, 134217728, 138412032, 134217730, 138412034, 134234112, 138428416, 134234114, 138428418, 64, 4194368, 66, 4194370, 16448, 4210752, 16450, 4210754, 134217792, 138412096, 134217794, 138412098, 134234176, 138428480, 134234178, 138428482, 512, 4194816, 514, 4194818, 16896, 4211200, 16898, 4211202, 134218240, 138412544, 134218242, 138412546, 134234624, 138428928, 134234626, 138428930, 576, 4194880, 578, 4194882, 16960, 4211264, 16962, 4211266, 134218304, 138412608, 134218306, 138412610, 134234688, 138428992, 134234690, 138428994, 131072, 4325376, 131074, 4325378, 147456, 4341760, 147458, 4341762, 134348800, 138543104, 134348802, 138543106, 134365184, 138559488, 134365186, 138559490, 131136, 4325440, 131138, 4325442, 147520, 4341824, 147522, 4341826, 134348864, 138543168, 134348866, 138543170, 134365248, 138559552, 134365250, 138559554, 131584, 4325888, 131586, 4325890, 147968, 4342272, 147970, 4342274, 134349312, 138543616, 134349314, 138543618, 134365696, 138560000, 134365698, 138560002, 131648, 4325952, 131650, 4325954, 148032, 4342336, 148034, 4342338, 134349376, 138543680, 134349378, 138543682, 134365760, 138560064, 134365762, 138560066, 2147483648, 2151677952, 2147483650, 2151677954, 2147500032, 2151694336, 2147500034, 2151694338, 2281701376, 2285895680, 2281701378, 2285895682, 2281717760, 2285912064, 2281717762, 2285912066, 2147483712, 2151678016, 2147483714, 2151678018, 2147500096, 2151694400, 2147500098, 2151694402, 2281701440, 2285895744, 2281701442, 2285895746, 2281717824, 2285912128, 2281717826, 2285912130, 2147484160, 2151678464, 2147484162, 2151678466, 2147500544, 2151694848, 2147500546, 2151694850, 2281701888, 2285896192, 2281701890, 2285896194, 2281718272, 2285912576, 2281718274, 2285912578, 2147484224, 2151678528, 2147484226, 2151678530, 2147500608, 2151694912, 2147500610, 2151694914, 2281701952, 2285896256, 2281701954, 2285896258, 2281718336, 2285912640, 2281718338, 2285912642, 2147614720, 2151809024, 2147614722, 2151809026, 2147631104, 2151825408, 2147631106, 2151825410, 2281832448, 2286026752, 2281832450, 2286026754, 2281848832, 2286043136, 2281848834, 2286043138, 2147614784, 2151809088, 2147614786, 2151809090, 2147631168, 2151825472, 2147631170, 2151825474, 2281832512, 2286026816, 2281832514, 2286026818, 2281848896, 2286043200, 2281848898, 2286043202, 2147615232, 2151809536, 2147615234, 2151809538, 2147631616, 2151825920, 2147631618, 2151825922, 2281832960, 2286027264, 2281832962, 2286027266, 2281849344, 2286043648, 2281849346, 2286043650, 2147615296, 2151809600, 2147615298, 2151809602, 2147631680, 2151825984, 2147631682, 2151825986, 2281833024, 2286027328, 2281833026, 2286027330, 2281849408, 2286043712, 2281849410, 2286043714, 0, 32768, 16, 32784, 1048576, 1081344, 1048592, 1081360, 8, 32776, 24, 32792, 1048584, 1081352, 1048600, 1081368, 2048, 34816, 2064, 34832, 1050624, 1083392, 1050640, 1083408, 2056, 34824, 2072, 34840, 1050632, 1083400, 1050648, 1083416, 4096, 36864, 4112, 36880, 1052672, 1085440, 1052688, 1085456, 4104, 36872, 4120, 36888, 1052680, 1085448, 1052696, 1085464, 6144, 38912, 6160, 38928, 1054720, 1087488, 1054736, 1087504, 6152, 38920, 6168, 38936, 1054728, 1087496, 1054744, 1087512, 33554432, 33587200, 33554448, 33587216, 34603008, 34635776, 34603024, 34635792, 33554440, 33587208, 33554456, 33587224, 34603016, 34635784, 34603032, 34635800, 33556480, 33589248, 33556496, 33589264, 34605056, 34637824, 34605072, 34637840, 33556488, 33589256, 33556504, 33589272, 34605064, 34637832, 34605080, 34637848, 33558528, 33591296, 33558544, 33591312, 34607104, 34639872, 34607120, 34639888, 33558536, 33591304, 33558552, 33591320, 34607112, 34639880, 34607128, 34639896, 33560576, 33593344, 33560592, 33593360, 34609152, 34641920, 34609168, 34641936, 33560584, 33593352, 33560600, 33593368, 34609160, 34641928, 34609176, 34641944, 65536, 98304, 65552, 98320, 1114112, 1146880, 1114128, 1146896, 65544, 98312, 65560, 98328, 1114120, 1146888, 1114136, 1146904, 67584, 100352, 67600, 100368, 1116160, 1148928, 1116176, 1148944, 67592, 100360, 67608, 100376, 1116168, 1148936, 1116184, 1148952, 69632, 102400, 69648, 102416, 1118208, 1150976, 1118224, 1150992, 69640, 102408, 69656, 102424, 1118216, 1150984, 1118232, 1151000, 71680, 104448, 71696, 104464, 1120256, 1153024, 1120272, 1153040, 71688, 104456, 71704, 104472, 1120264, 1153032, 1120280, 1153048, 33619968, 33652736, 33619984, 33652752, 34668544, 34701312, 34668560, 34701328, 33619976, 33652744, 33619992, 33652760, 34668552, 34701320, 34668568, 34701336, 33622016, 33654784, 33622032, 33654800, 34670592, 34703360, 34670608, 34703376, 33622024, 33654792, 33622040, 33654808, 34670600, 34703368, 34670616, 34703384, 33624064, 33656832, 33624080, 33656848, 34672640, 34705408, 34672656, 34705424, 33624072, 33656840, 33624088, 33656856, 34672648, 34705416, 34672664, 34705432, 33626112, 33658880, 33626128, 33658896, 34674688, 34707456, 34674704, 34707472, 33626120, 33658888, 33626136, 33658904, 34674696, 34707464, 34674712, 34707480)
PC1_K = (0, 0, 134217728, 134217728, 524288, 524288, 134742016, 134742016, 2048, 2048, 134219776, 134219776, 526336, 526336, 134744064, 134744064, 2147483648, 2147483648, 2281701376, 2281701376, 2148007936, 2148007936, 2282225664, 2282225664, 2147485696, 2147485696, 2281703424, 2281703424, 2148009984, 2148009984, 2282227712, 2282227712, 549755813888, 549755813888, 549890031616, 549890031616, 549756338176, 549756338176, 549890555904, 549890555904, 549755815936, 549755815936, 549890033664, 549890033664, 549756340224, 549756340224, 549890557952, 549890557952, 551903297536, 551903297536, 552037515264, 552037515264, 551903821824, 551903821824, 552038039552, 552038039552, 551903299584, 551903299584, 552037517312, 552037517312, 551903823872, 551903823872, 552038041600, 552038041600, 140737488355328, 140737488355328, 140737622573056, 140737622573056, 140737488879616, 140737488879616, 140737623097344, 140737623097344, 140737488357376, 140737488357376, 140737622575104, 140737622575104, 140737488881664, 140737488881664, 140737623099392, 140737623099392, 140739635838976, 140739635838976, 140739770056704, 140739770056704, 140739636363264, 140739636363264, 140739770580992, 140739770580992, 140739635841024, 140739635841024, 140739770058752, 140739770058752, 140739636365312, 140739636365312, 140739770583040, 140739770583040, 141287244169216, 141287244169216, 141287378386944, 141287378386944, 141287244693504, 141287244693504, 141287378911232, 141287378911232, 141287244171264, 141287244171264, 141287378388992, 141287378388992, 141287244695552, 141287244695552, 141287378913280, 141287378913280, 141289391652864, 141289391652864, 141289525870592, 141289525870592, 141289392177152, 141289392177152, 141289526394880, 141289526394880, 141289391654912, 141289391654912, 141289525872640, 141289525872640, 141289392179200, 141289392179200, 141289526396928, 141289526396928, 36028797018963968, 36028797018963968, 36028797153181696, 36028797153181696, 36028797019488256, 36028797019488256, 36028797153705984, 36028797153705984, 36028797018966016, 36028797018966016, 36028797153183744, 36028797153183744, 36028797019490304, 36028797019490304, 36028797153708032, 36028797153708032, 36028799166447616, 36028799166447616, 36028799300665344, 36028799300665344, 36028799166971904, 36028799166971904, 36028799301189632, 36028799301189632, 36028799166449664, 36028799166449664, 36028799300667392, 36028799300667392, 36028799166973952, 36028799166973952, 36028799301191680, 36028799301191680, 36029346774777856, 36029346774777856, 36029346908995584, 36029346908995584, 36029346775302144, 36029346775302144, 36029346909519872, 36029346909519872, 36029346774779904, 36029346774779904, 36029346908997632, 36029346908997632, 36029346775304192, 36029346775304192, 36029346909521920, 36029346909521920, 36029348922261504, 36029348922261504, 36029349056479232, 36029349056479232, 36029348922785792, 36029348922785792, 36029349057003520, 36029349057003520, 36029348922263552, 36029348922263552, 36029349056481280, 36029349056481280, 36029348922787840, 36029348922787840, 36029349057005568, 36029349057005568, 36169534507319296, 36169534507319296, 36169534641537024, 36169534641537024, 36169534507843584, 36169534507843584, 36169534642061312, 36169534642061312, 36169534507321344, 36169534507321344, 36169534641539072, 36169534641539072, 36169534507845632, 36169534507845632, 36169534642063360, 36169534642063360, 36169536654802944, 36169536654802944, 36169536789020672, 36169536789020672, 36169536655327232, 36169536655327232, 36169536789544960, 36169536789544960, 36169536654804992, 36169536654804992, 36169536789022720, 36169536789022720, 36169536655329280, 36169536655329280, 36169536789547008, 36169536789547008, 36170084263133184, 36170084263133184, 36170084397350912, 36170084397350912, 36170084263657472, 36170084263657472, 36170084397875200, 36170084397875200, 36170084263135232, 36170084263135232, 36170084397352960, 36170084397352960, 36170084263659520, 36170084263659520, 36170084397877248, 36170084397877248, 36170086410616832, 36170086410616832, 36170086544834560, 36170086544834560, 36170086411141120, 36170086411141120, 36170086545358848, 36170086545358848, 36170086410618880, 36170086410618880, 36170086544836608, 36170086544836608, 36170086411143168, 36170086411143168, 36170086545360896, 36170086545360896, 0, 0, 67108864, 67108864, 262144, 262144, 67371008, 67371008, 1024, 1024, 67109888, 67109888, 263168, 263168, 67372032, 67372032, 1073741824, 1073741824, 1140850688, 1140850688, 1074003968, 1074003968, 1141112832, 1141112832, 1073742848, 1073742848, 1140851712, 1140851712, 1074004992, 1074004992, 1141113856, 1141113856, 274877906944, 274877906944, 274945015808, 274945015808, 274878169088, 274878169088, 274945277952, 274945277952, 274877907968, 274877907968, 274945016832, 274945016832, 274878170112, 274878170112, 274945278976, 274945278976, 275951648768, 275951648768, 276018757632, 276018757632, 275951910912, 275951910912, 276019019776, 276019019776, 275951649792, 275951649792, 276018758656, 276018758656, 275951911936, 275951911936, 276019020800, 276019020800, 70368744177664, 70368744177664, 70368811286528, 70368811286528, 70368744439808, 70368744439808, 70368811548672, 70368811548672, 70368744178688, 70368744178688, 70368811287552, 70368811287552, 70368744440832, 70368744440832, 70368811549696, 70368811549696, 70369817919488, 70369817919488, 70369885028352, 70369885028352, 70369818181632, 70369818181632, 70369885290496, 70369885290496, 70369817920512, 70369817920512, 70369885029376, 70369885029376, 70369818182656, 70369818182656, 70369885291520, 70369885291520, 70643622084608, 70643622084608, 70643689193472, 70643689193472, 70643622346752, 70643622346752, 70643689455616, 70643689455616, 70643622085632, 70643622085632, 70643689194496, 70643689194496, 70643622347776, 70643622347776, 70643689456640, 70643689456640, 70644695826432, 70644695826432, 70644762935296, 70644762935296, 70644696088576, 70644696088576, 70644763197440, 70644763197440, 70644695827456, 70644695827456, 70644762936320, 70644762936320, 70644696089600, 70644696089600, 70644763198464, 70644763198464, 18014398509481984, 18014398509481984, 18014398576590848, 18014398576590848, 18014398509744128, 18014398509744128, 18014398576852992, 18014398576852992, 18014398509483008, 18014398509483008, 18014398576591872, 18014398576591872, 18014398509745152, 18014398509745152, 18014398576854016, 18014398576854016, 18014399583223808, 18014399583223808, 18014399650332672, 18014399650332672, 18014399583485952, 18014399583485952, 18014399650594816, 18014399650594816, 18014399583224832, 18014399583224832, 18014399650333696, 18014399650333696, 18014399583486976, 18014399583486976, 18014399650595840, 18014399650595840, 18014673387388928, 18014673387388928, 18014673454497792, 18014673454497792, 18014673387651072, 18014673387651072, 18014673454759936, 18014673454759936, 18014673387389952, 18014673387389952, 18014673454498816, 18014673454498816, 18014673387652096, 18014673387652096, 18014673454760960, 18014673454760960, 18014674461130752, 18014674461130752, 18014674528239616, 18014674528239616, 18014674461392896, 18014674461392896, 18014674528501760, 18014674528501760, 18014674461131776, 18014674461131776, 18014674528240640, 18014674528240640, 18014674461393920, 18014674461393920, 18014674528502784, 18014674528502784, 18084767253659648, 18084767253659648, 18084767320768512, 18084767320768512, 18084767253921792, 18084767253921792, 18084767321030656, 18084767321030656, 18084767253660672, 18084767253660672, 18084767320769536, 18084767320769536, 18084767253922816, 18084767253922816, 18084767321031680, 18084767321031680, 18084768327401472, 18084768327401472, 18084768394510336, 18084768394510336, 18084768327663616, 18084768327663616, 18084768394772480, 18084768394772480, 18084768327402496, 18084768327402496, 18084768394511360, 18084768394511360, 18084768327664640, 18084768327664640, 18084768394773504, 18084768394773504, 18085042131566592, 18085042131566592, 18085042198675456, 18085042198675456, 18085042131828736, 18085042131828736, 18085042198937600, 18085042198937600, 18085042131567616, 18085042131567616, 18085042198676480, 18085042198676480, 18085042131829760, 18085042131829760, 18085042198938624, 18085042198938624, 18085043205308416, 18085043205308416, 18085043272417280, 18085043272417280, 18085043205570560, 18085043205570560, 18085043272679424, 18085043272679424, 18085043205309440, 18085043205309440, 18085043272418304, 18085043272418304, 18085043205571584, 18085043205571584, 18085043272680448, 18085043272680448, 0, 0, 33554432, 33554432, 131072, 131072, 33685504, 33685504, 512, 512, 33554944, 33554944, 131584, 131584, 33686016, 33686016, 536870912, 536870912, 570425344, 570425344, 537001984, 537001984, 570556416, 570556416, 536871424, 536871424, 570425856, 570425856, 537002496, 537002496, 570556928, 570556928, 137438953472, 137438953472, 137472507904, 137472507904, 137439084544, 137439084544, 137472638976, 137472638976, 137438953984, 137438953984, 137472508416, 137472508416, 137439085056, 137439085056, 137472639488, 137472639488, 137975824384, 137975824384, 138009378816, 138009378816, 137975955456, 137975955456, 138009509888, 138009509888, 137975824896, 137975824896, 138009379328, 138009379328, 137975955968, 137975955968, 138009510400, 138009510400, 35184372088832, 35184372088832, 35184405643264, 35184405643264, 35184372219904, 35184372219904, 35184405774336, 35184405774336, 35184372089344, 35184372089344, 35184405643776, 35184405643776, 35184372220416, 35184372220416, 35184405774848, 35184405774848, 35184908959744, 35184908959744, 35184942514176, 35184942514176, 35184909090816, 35184909090816, 35184942645248, 35184942645248, 35184908960256, 35184908960256, 35184942514688, 35184942514688, 35184909091328, 35184909091328, 35184942645760, 35184942645760, 35321811042304, 35321811042304, 35321844596736, 35321844596736, 35321811173376, 35321811173376, 35321844727808, 35321844727808, 35321811042816, 35321811042816, 35321844597248, 35321844597248, 35321811173888, 35321811173888, 35321844728320, 35321844728320, 35322347913216, 35322347913216, 35322381467648, 35322381467648, 35322348044288, 35322348044288, 35322381598720, 35322381598720, 35322347913728, 35322347913728, 35322381468160, 35322381468160, 35322348044800, 35322348044800, 35322381599232, 35322381599232, 9007199254740992, 9007199254740992, 9007199288295424, 9007199288295424, 9007199254872064, 9007199254872064, 9007199288426496, 9007199288426496, 9007199254741504, 9007199254741504, 9007199288295936, 9007199288295936, 9007199254872576, 9007199254872576, 9007199288427008, 9007199288427008, 9007199791611904, 9007199791611904, 9007199825166336, 9007199825166336, 9007199791742976, 9007199791742976, 9007199825297408, 9007199825297408, 9007199791612416, 9007199791612416, 9007199825166848, 9007199825166848, 9007199791743488, 9007199791743488, 9007199825297920, 9007199825297920, 9007336693694464, 9007336693694464, 9007336727248896, 9007336727248896, 9007336693825536, 9007336693825536, 9007336727379968, 9007336727379968, 9007336693694976, 9007336693694976, 9007336727249408, 9007336727249408, 9007336693826048, 9007336693826048, 9007336727380480, 9007336727380480, 9007337230565376, 9007337230565376, 9007337264119808, 9007337264119808, 9007337230696448, 9007337230696448, 9007337264250880, 9007337264250880, 9007337230565888, 9007337230565888, 9007337264120320, 9007337264120320, 9007337230696960, 9007337230696960, 9007337264251392, 9007337264251392, 9042383626829824, 9042383626829824, 9042383660384256, 9042383660384256, 9042383626960896, 9042383626960896, 9042383660515328, 9042383660515328, 9042383626830336, 9042383626830336, 9042383660384768, 9042383660384768, 9042383626961408, 9042383626961408, 9042383660515840, 9042383660515840, 9042384163700736, 9042384163700736, 9042384197255168, 9042384197255168, 9042384163831808, 9042384163831808, 9042384197386240, 9042384197386240, 9042384163701248, 9042384163701248, 9042384197255680, 9042384197255680, 9042384163832320, 9042384163832320, 9042384197386752, 9042384197386752, 9042521065783296, 9042521065783296, 9042521099337728, 9042521099337728, 9042521065914368, 9042521065914368, 9042521099468800, 9042521099468800, 9042521065783808, 9042521065783808, 9042521099338240, 9042521099338240, 9042521065914880, 9042521065914880, 9042521099469312, 9042521099469312, 9042521602654208, 9042521602654208, 9042521636208640, 9042521636208640, 9042521602785280, 9042521602785280, 9042521636339712, 9042521636339712, 9042521602654720, 9042521602654720, 9042521636209152, 9042521636209152, 9042521602785792, 9042521602785792, 9042521636340224, 9042521636340224, 0, 0, 16777216, 16777216, 65536, 65536, 16842752, 16842752, 256, 256, 16777472, 16777472, 65792, 65792, 16843008, 16843008, 268435456, 268435456, 285212672, 285212672, 268500992, 268500992, 285278208, 285278208, 268435712, 268435712, 285212928, 285212928, 268501248, 268501248, 285278464, 285278464, 68719476736, 68719476736, 68736253952, 68736253952, 68719542272, 68719542272, 68736319488, 68736319488, 68719476992, 68719476992, 68736254208, 68736254208, 68719542528, 68719542528, 68736319744, 68736319744, 68987912192, 68987912192, 69004689408, 69004689408, 68987977728, 68987977728, 69004754944, 69004754944, 68987912448, 68987912448, 69004689664, 69004689664, 68987977984, 68987977984, 69004755200, 69004755200, 17592186044416, 17592186044416, 17592202821632, 17592202821632, 17592186109952, 17592186109952, 17592202887168, 17592202887168, 17592186044672, 17592186044672, 17592202821888, 17592202821888, 17592186110208, 17592186110208, 17592202887424, 17592202887424, 17592454479872, 17592454479872, 17592471257088, 17592471257088, 17592454545408, 17592454545408, 17592471322624, 17592471322624, 17592454480128, 17592454480128, 17592471257344, 17592471257344, 17592454545664, 17592454545664, 17592471322880, 17592471322880, 17660905521152, 17660905521152, 17660922298368, 17660922298368, 17660905586688, 17660905586688, 17660922363904, 17660922363904, 17660905521408, 17660905521408, 17660922298624, 17660922298624, 17660905586944, 17660905586944, 17660922364160, 17660922364160, 17661173956608, 17661173956608, 17661190733824, 17661190733824, 17661174022144, 17661174022144, 17661190799360, 17661190799360, 17661173956864, 17661173956864, 17661190734080, 17661190734080, 17661174022400, 17661174022400, 17661190799616, 17661190799616, 4503599627370496, 4503599627370496, 4503599644147712, 4503599644147712, 4503599627436032, 4503599627436032, 4503599644213248, 4503599644213248, 4503599627370752, 4503599627370752, 4503599644147968, 4503599644147968, 4503599627436288, 4503599627436288, 4503599644213504, 4503599644213504, 4503599895805952, 4503599895805952, 4503599912583168, 4503599912583168, 4503599895871488, 4503599895871488, 4503599912648704, 4503599912648704, 4503599895806208, 4503599895806208, 4503599912583424, 4503599912583424, 4503599895871744, 4503599895871744, 4503599912648960, 4503599912648960, 4503668346847232, 4503668346847232, 4503668363624448, 4503668363624448, 4503668346912768, 4503668346912768, 4503668363689984, 4503668363689984, 4503668346847488, 4503668346847488, 4503668363624704, 4503668363624704, 4503668346913024, 4503668346913024, 4503668363690240, 4503668363690240, 4503668615282688, 4503668615282688, 4503668632059904, 4503668632059904, 4503668615348224, 4503668615348224, 4503668632125440, 4503668632125440, 4503668615282944, 4503668615282944, 4503668632060160, 4503668632060160, 4503668615348480, 4503668615348480, 4503668632125696, 4503668632125696, 4521191813414912, 4521191813414912, 4521191830192128, 4521191830192128, 4521191813480448, 4521191813480448, 4521191830257664, 4521191830257664, 4521191813415168, 4521191813415168, 4521191830192384, 4521191830192384, 4521191813480704, 4521191813480704, 4521191830257920, 4521191830257920, 4521192081850368, 4521192081850368, 4521192098627584, 4521192098627584, 4521192081915904, 4521192081915904, 4521192098693120, 4521192098693120, 4521192081850624, 4521192081850624, 4521192098627840, 4521192098627840, 4521192081916160, 4521192081916160, 4521192098693376, 4521192098693376, 4521260532891648, 4521260532891648, 4521260549668864, 4521260549668864, 4521260532957184, 4521260532957184, 4521260549734400, 4521260549734400, 4521260532891904, 4521260532891904, 4521260549669120, 4521260549669120, 4521260532957440, 4521260532957440, 4521260549734656, 4521260549734656, 4521260801327104, 4521260801327104, 4521260818104320, 4521260818104320, 4521260801392640, 4521260801392640, 4521260818169856, 4521260818169856, 4521260801327360, 4521260801327360, 4521260818104576, 4521260818104576, 4521260801392896, 4521260801392896, 4521260818170112, 4521260818170112, 0, 0, 8388608, 8388608, 32768, 32768, 8421376, 8421376, 128, 128, 8388736, 8388736, 32896, 32896, 8421504, 8421504, 8, 8, 8388616, 8388616, 32776, 32776, 8421384, 8421384, 136, 136, 8388744, 8388744, 32904, 32904, 8421512, 8421512, 34359738368, 34359738368, 34368126976, 34368126976, 34359771136, 34359771136, 34368159744, 34368159744, 34359738496, 34359738496, 34368127104, 34368127104, 34359771264, 34359771264, 34368159872, 34368159872, 34359738376, 34359738376, 34368126984, 34368126984, 34359771144, 34359771144, 34368159752, 34368159752, 34359738504, 34359738504, 34368127112, 34368127112, 34359771272, 34359771272, 34368159880, 34368159880, 8796093022208, 8796093022208, 8796101410816, 8796101410816, 8796093054976, 8796093054976, 8796101443584, 8796101443584, 8796093022336, 8796093022336, 8796101410944, 8796101410944, 8796093055104, 8796093055104, 8796101443712, 8796101443712, 8796093022216, 8796093022216, 8796101410824, 8796101410824, 8796093054984, 8796093054984, 8796101443592, 8796101443592, 8796093022344, 8796093022344, 8796101410952, 8796101410952, 8796093055112, 8796093055112, 8796101443720, 8796101443720, 8830452760576, 8830452760576, 8830461149184, 8830461149184, 8830452793344, 8830452793344, 8830461181952, 8830461181952, 8830452760704, 8830452760704, 8830461149312, 8830461149312, 8830452793472, 8830452793472, 8830461182080, 8830461182080, 8830452760584, 8830452760584, 8830461149192, 8830461149192, 8830452793352, 8830452793352, 8830461181960, 8830461181960, 8830452760712, 8830452760712, 8830461149320, 8830461149320, 8830452793480, 8830452793480, 8830461182088, 8830461182088, 2251799813685248, 2251799813685248, 2251799822073856, 2251799822073856, 2251799813718016, 2251799813718016, 2251799822106624, 2251799822106624, 2251799813685376, 2251799813685376, 2251799822073984, 2251799822073984, 2251799813718144, 2251799813718144, 2251799822106752, 2251799822106752, 2251799813685256, 2251799813685256, 2251799822073864, 2251799822073864, 2251799813718024, 2251799813718024, 2251799822106632, 2251799822106632, 2251799813685384, 2251799813685384, 2251799822073992, 2251799822073992, 2251799813718152, 2251799813718152, 2251799822106760, 2251799822106760, 2251834173423616, 2251834173423616, 2251834181812224, 2251834181812224, 2251834173456384, 2251834173456384, 2251834181844992, 2251834181844992, 2251834173423744, 2251834173423744, 2251834181812352, 2251834181812352, 2251834173456512, 2251834173456512, 2251834181845120, 2251834181845120, 2251834173423624, 2251834173423624, 2251834181812232, 2251834181812232, 2251834173456392, 2251834173456392, 2251834181845000, 2251834181845000, 2251834173423752, 2251834173423752, 2251834181812360, 2251834181812360, 2251834173456520, 2251834173456520, 2251834181845128, 2251834181845128, 2260595906707456, 2260595906707456, 2260595915096064, 2260595915096064, 2260595906740224, 2260595906740224, 2260595915128832, 2260595915128832, 2260595906707584, 2260595906707584, 2260595915096192, 2260595915096192, 2260595906740352, 2260595906740352, 2260595915128960, 2260595915128960, 2260595906707464, 2260595906707464, 2260595915096072, 2260595915096072, 2260595906740232, 2260595906740232, 2260595915128840, 2260595915128840, 2260595906707592, 2260595906707592, 2260595915096200, 2260595915096200, 2260595906740360, 2260595906740360, 2260595915128968, 2260595915128968, 2260630266445824, 2260630266445824, 2260630274834432, 2260630274834432, 2260630266478592, 2260630266478592, 2260630274867200, 2260630274867200, 2260630266445952, 2260630266445952, 2260630274834560, 2260630274834560, 2260630266478720, 2260630266478720, 2260630274867328, 2260630274867328, 2260630266445832, 2260630266445832, 2260630274834440, 2260630274834440, 2260630266478600, 2260630266478600, 2260630274867208, 2260630274867208, 2260630266445960, 2260630266445960, 2260630274834568, 2260630274834568, 2260630266478728, 2260630266478728, 2260630274867336, 2260630274867336, 0, 0, 4194304, 4194304, 16384, 16384, 4210688, 4210688, 64, 64, 4194368, 4194368, 16448, 16448, 4210752, 4210752, 4, 4, 4194308, 4194308, 16388, 16388, 4210692, 4210692, 68, 68, 4194372, 4194372, 16452, 16452, 4210756, 4210756, 17179869184, 17179869184, 17184063488, 17184063488, 17179885568, 17179885568, 17184079872, 17184079872, 17179869248, 17179869248, 17184063552, 17184063552, 17179885632, 17179885632, 17184079936, 17184079936, 17179869188, 17179869188, 17184063492, 17184063492, 17179885572, 17179885572, 17184079876, 17184079876, 17179869252, 17179869252, 17184063556, 17184063556, 17179885636, 17179885636, 17184079940, 17184079940, 4398046511104, 4398046511104, 4398050705408, 4398050705408, 4398046527488, 4398046527488, 4398050721792, 4398050721792, 4398046511168, 4398046511168, 4398050705472, 4398050705472, 4398046527552, 4398046527552, 4398050721856, 4398050721856, 4398046511108, 4398046511108, 4398050705412, 4398050705412, 4398046527492, 4398046527492, 4398050721796, 4398050721796, 4398046511172, 4398046511172, 4398050705476, 4398050705476, 4398046527556, 4398046527556, 4398050721860, 4398050721860, 4415226380288, 4415226380288, 4415230574592, 4415230574592, 4415226396672, 4415226396672, 4415230590976, 4415230590976, 4415226380352, 4415226380352, 4415230574656, 4415230574656, 4415226396736, 4415226396736, 4415230591040, 4415230591040, 4415226380292, 4415226380292, 4415230574596, 4415230574596, 4415226396676, 4415226396676, 4415230590980, 4415230590980, 4415226380356, 4415226380356, 4415230574660, 4415230574660, 4415226396740, 4415226396740, 4415230591044, 4415230591044, 1125899906842624, 1125899906842624, 1125899911036928, 1125899911036928, 1125899906859008, 1125899906859008, 1125899911053312, 1125899911053312, 1125899906842688, 1125899906842688, 1125899911036992, 1125899911036992, 1125899906859072, 1125899906859072, 1125899911053376, 1125899911053376, 1125899906842628, 1125899906842628, 1125899911036932, 1125899911036932, 1125899906859012, 1125899906859012, 1125899911053316, 1125899911053316, 1125899906842692, 1125899906842692, 1125899911036996, 1125899911036996, 1125899906859076, 1125899906859076, 1125899911053380, 1125899911053380, 1125917086711808, 1125917086711808, 1125917090906112, 1125917090906112, 1125917086728192, 1125917086728192, 1125917090922496, 1125917090922496, 1125917086711872, 1125917086711872, 1125917090906176, 1125917090906176, 1125917086728256, 1125917086728256, 1125917090922560, 1125917090922560, 1125917086711812, 1125917086711812, 1125917090906116, 1125917090906116, 1125917086728196, 1125917086728196, 1125917090922500, 1125917090922500, 1125917086711876, 1125917086711876, 1125917090906180, 1125917090906180, 1125917086728260, 1125917086728260, 1125917090922564, 1125917090922564, 1130297953353728, 1130297953353728, 1130297957548032, 1130297957548032, 1130297953370112, 1130297953370112, 1130297957564416, 1130297957564416, 1130297953353792, 1130297953353792, 1130297957548096, 1130297957548096, 1130297953370176, 1130297953370176, 1130297957564480, 1130297957564480, 1130297953353732, 1130297953353732, 1130297957548036, 1130297957548036, 1130297953370116, 1130297953370116, 1130297957564420, 1130297957564420, 1130297953353796, 1130297953353796, 1130297957548100, 1130297957548100, 1130297953370180, 1130297953370180, 1130297957564484, 1130297957564484, 1130315133222912, 1130315133222912, 1130315137417216, 1130315137417216, 1130315133239296, 1130315133239296, 1130315137433600, 1130315137433600, 1130315133222976, 1130315133222976, 1130315137417280, 1130315137417280, 1130315133239360, 1130315133239360, 1130315137433664, 1130315137433664, 1130315133222916, 1130315133222916, 1130315137417220, 1130315137417220, 1130315133239300, 1130315133239300, 1130315137433604, 1130315137433604, 1130315133222980, 1130315133222980, 1130315137417284, 1130315137417284, 1130315133239364, 1130315133239364, 1130315137433668, 1130315137433668, 0, 0, 2097152, 2097152, 8192, 8192, 2105344, 2105344, 32, 32, 2097184, 2097184, 8224, 8224, 2105376, 2105376, 2, 2, 2097154, 2097154, 8194, 8194, 2105346, 2105346, 34, 34, 2097186, 2097186, 8226, 8226, 2105378, 2105378, 8589934592, 8589934592, 8592031744, 8592031744, 8589942784, 8589942784, 8592039936, 8592039936, 8589934624, 8589934624, 8592031776, 8592031776, 8589942816, 8589942816, 8592039968, 8592039968, 8589934594, 8589934594, 8592031746, 8592031746, 8589942786, 8589942786, 8592039938, 8592039938, 8589934626, 8589934626, 8592031778, 8592031778, 8589942818, 8589942818, 8592039970, 8592039970, 2199023255552, 2199023255552, 2199025352704, 2199025352704, 2199023263744, 2199023263744, 2199025360896, 2199025360896, 2199023255584, 2199023255584, 2199025352736, 2199025352736, 2199023263776, 2199023263776, 2199025360928, 2199025360928, 2199023255554, 2199023255554, 2199025352706, 2199025352706, 2199023263746, 2199023263746, 2199025360898, 2199025360898, 2199023255586, 2199023255586, 2199025352738, 2199025352738, 2199023263778, 2199023263778, 2199025360930, 2199025360930, 2207613190144, 2207613190144, 2207615287296, 2207615287296, 2207613198336, 2207613198336, 2207615295488, 2207615295488, 2207613190176, 2207613190176, 2207615287328, 2207615287328, 2207613198368, 2207613198368, 2207615295520, 2207615295520, 2207613190146, 2207613190146, 2207615287298, 2207615287298, 2207613198338, 2207613198338, 2207615295490, 2207615295490, 2207613190178, 2207613190178, 2207615287330, 2207615287330, 2207613198370, 2207613198370, 2207615295522, 2207615295522, 562949953421312, 562949953421312, 562949955518464, 562949955518464, 562949953429504, 562949953429504, 562949955526656, 562949955526656, 562949953421344, 562949953421344, 562949955518496, 562949955518496, 562949953429536, 562949953429536, 562949955526688, 562949955526688, 562949953421314, 562949953421314, 562949955518466, 562949955518466, 562949953429506, 562949953429506, 562949955526658, 562949955526658, 562949953421346, 562949953421346, 562949955518498, 562949955518498, 562949953429538, 562949953429538, 562949955526690, 562949955526690, 562958543355904, 562958543355904, 562958545453056, 562958545453056, 562958543364096, 562958543364096, 562958545461248, 562958545461248, 562958543355936, 562958543355936, 562958545453088, 562958545453088, 562958543364128, 562958543364128, 562958545461280, 562958545461280, 562958543355906, 562958543355906, 562958545453058, 562958545453058, 562958543364098, 562958543364098, 562958545461250, 562958545461250, 562958543355938, 562958543355938, 562958545453090, 562958545453090, 562958543364130, 562958543364130, 562958545461282, 562958545461282, 565148976676864, 565148976676864, 565148978774016, 565148978774016, 565148976685056, 565148976685056, 565148978782208, 565148978782208, 565148976676896, 565148976676896, 565148978774048, 565148978774048, 565148976685088, 565148976685088, 565148978782240, 565148978782240, 565148976676866, 565148976676866, 565148978774018, 565148978774018, 565148976685058, 565148976685058, 565148978782210, 565148978782210, 565148976676898, 565148976676898, 565148978774050, 565148978774050, 565148976685090, 565148976685090, 565148978782242, 565148978782242, 565157566611456, 565157566611456, 565157568708608, 565157568708608, 565157566619648, 565157566619648, 565157568716800, 565157568716800, 565157566611488, 565157566611488, 565157568708640, 565157568708640, 565157566619680, 565157566619680, 565157568716832, 565157568716832, 565157566611458, 565157566611458, 565157568708610, 565157568708610, 565157566619650, 565157566619650, 565157568716802, 565157568716802, 565157566611490, 565157566611490, 565157568708642, 565157568708642, 565157566619682, 565157566619682, 565157568716834, 565157568716834, 0, 0, 1048576, 1048576, 4096, 4096, 1052672, 1052672, 16, 16, 1048592, 1048592, 4112, 4112, 1052688, 1052688, 1, 1, 1048577, 1048577, 4097, 4097, 1052673, 1052673, 17, 17, 1048593, 1048593, 4113, 4113, 1052689, 1052689, 4294967296, 4294967296, 4296015872, 4296015872, 4294971392, 4294971392, 4296019968, 4296019968, 4294967312, 4294967312, 4296015888, 4296015888, 4294971408, 4294971408, 4296019984, 4296019984, 4294967297, 4294967297, 4296015873, 4296015873, 4294971393, 4294971393, 4296019969, 4296019969, 4294967313, 4294967313, 4296015889, 4296015889, 4294971409, 4294971409, 4296019985, 4296019985, 1099511627776, 1099511627776, 1099512676352, 1099512676352, 1099511631872, 1099511631872, 1099512680448, 1099512680448, 1099511627792, 1099511627792, 1099512676368, 1099512676368, 1099511631888, 1099511631888, 1099512680464, 1099512680464, 1099511627777, 1099511627777, 1099512676353, 1099512676353, 1099511631873, 1099511631873, 1099512680449, 1099512680449, 1099511627793, 1099511627793, 1099512676369, 1099512676369, 1099511631889, 1099511631889, 1099512680465, 1099512680465, 1103806595072, 1103806595072, 1103807643648, 1103807643648, 1103806599168, 1103806599168, 1103807647744, 1103807647744, 1103806595088, 1103806595088, 1103807643664, 1103807643664, 1103806599184, 1103806599184, 1103807647760, 1103807647760, 1103806595073, 1103806595073, 1103807643649, 1103807643649, 1103806599169, 1103806599169, 1103807647745, 1103807647745, 1103806595089, 1103806595089, 1103807643665, 1103807643665, 1103806599185, 1103806599185, 1103807647761, 1103807647761, 281474976710656, 281474976710656, 281474977759232, 281474977759232, 281474976714752, 281474976714752, 281474977763328, 281474977763328, 281474976710672, 281474976710672, 281474977759248, 281474977759248, 281474976714768, 281474976714768, 281474977763344, 281474977763344, 281474976710657, 281474976710657, 281474977759233, 281474977759233, 281474976714753, 281474976714753, 281474977763329, 281474977763329, 281474976710673, 281474976710673, 281474977759249, 281474977759249, 281474976714769, 281474976714769, 281474977763345, 281474977763345, 281479271677952, 281479271677952, 281479272726528, 281479272726528, 281479271682048, 281479271682048, 281479272730624, 281479272730624, 281479271677968, 281479271677968, 281479272726544, 281479272726544, 281479271682064, 281479271682064, 281479272730640, 281479272730640, 281479271677953, 281479271677953, 281479272726529, 281479272726529, 281479271682049, 281479271682049, 281479272730625, 281479272730625, 281479271677969, 281479271677969, 281479272726545, 281479272726545, 281479271682065, 281479271682065, 281479272730641, 281479272730641, 282574488338432, 282574488338432, 282574489387008, 282574489387008, 282574488342528, 282574488342528, 282574489391104, 282574489391104, 282574488338448, 282574488338448, 282574489387024, 282574489387024, 282574488342544, 282574488342544, 282574489391120, 282574489391120, 282574488338433, 282574488338433, 282574489387009, 282574489387009, 282574488342529, 282574488342529, 282574489391105, 282574489391105, 282574488338449, 282574488338449, 282574489387025, 282574489387025, 282574488342545, 282574488342545, 282574489391121, 282574489391121, 282578783305728, 282578783305728, 282578784354304, 282578784354304, 282578783309824, 282578783309824, 282578784358400, 282578784358400, 282578783305744, 282578783305744, 282578784354320, 282578784354320, 282578783309840, 282578783309840, 282578784358416, 282578784358416, 282578783305729, 282578783305729, 282578784354305, 282578784354305, 282578783309825, 282578783309825, 282578784358401, 282578784358401, 282578783305745, 282578783305745, 282578784354321, 282578784354321, 282578783309841, 282578783309841, 282578784358417, 282578784358417)
N_PC1_K = (0, 1152921504606846976, 4503599627370496, 1157425104234217472, 17592186044416, 1152939096792891392, 4521191813414912, 1157442696420261888, 68719476736, 1152921573326323712, 4503668346847232, 1157425172953694208, 17660905521152, 1152939165512368128, 4521260532891648, 1157442765139738624, 576460752303423488, 1729382256910270464, 580964351930793984, 1733885856537640960, 576478344489467904, 1729399849096314880, 580981944116838400, 1733903448723685376, 576460821022900224, 1729382325629747200, 580964420650270720, 1733885925257117696, 576478413208944640, 1729399917815791616, 580982012836315136, 1733903517443162112, 2251799813685248, 1155173304420532224, 6755399441055744, 1159676904047902720, 2269391999729664, 1155190896606576640, 6772991627100160, 1159694496233947136, 2251868533161984, 1155173373140008960, 6755468160532480, 1159676972767379456, 2269460719206400, 1155190965326053376, 6773060346576896, 1159694564953423872, 578712552117108736, 1731634056723955712, 583216151744479232, 1736137656351326208, 578730144303153152, 1731651648910000128, 583233743930523648, 1736155248537370624, 578712620836585472, 1731634125443432448, 583216220463955968, 1736137725070802944, 578730213022629888, 1731651717629476864, 583233812650000384, 1736155317256847360, 8796093022208, 1152930300699869184, 4512395720392704, 1157433900327239680, 26388279066624, 1152947892885913600, 4529987906437120, 1157451492513284096, 8864812498944, 1152930369419345920, 4512464439869440, 1157433969046716416, 26456998543360, 1152947961605390336, 4530056625913856, 1157451561232760832, 576469548396445696, 1729391053003292672, 580973148023816192, 1733894652630663168, 576487140582490112, 1729408645189337088, 580990740209860608, 1733912244816707584, 576469617115922432, 1729391121722769408, 580973216743292928, 1733894721350139904, 576487209301966848, 1729408713908813824, 580990808929337344, 1733912313536184320, 2260595906707456, 1155182100513554432, 6764195534077952, 1159685700140924928, 2278188092751872, 1155199692699598848, 6781787720122368, 1159703292326969344, 2260664626184192, 1155182169233031168, 6764264253554688, 1159685768860401664, 2278256812228608, 1155199761419075584, 6781856439599104, 1159703361046446080, 578721348210130944, 1731642852816977920, 583224947837501440, 1736146452444348416, 578738940396175360, 1731660445003022336, 583242540023545856, 1736164044630392832, 578721416929607680, 1731642921536454656, 583225016556978176, 1736146521163825152, 578739009115652096, 1731660513722499072, 583242608743022592, 1736164113349869568, 34359738368, 1152921538966585344, 4503633987108864, 1157425138593955840, 17626545782784, 1152939131152629760, 4521226173153280, 1157442730780000256, 103079215104, 1152921607686062080, 4503702706585600, 1157425207313432576, 17695265259520, 1152939199872106496, 4521294892630016, 1157442799499476992, 576460786663161856, 1729382291270008832, 580964386290532352, 1733885890897379328, 576478378849206272, 1729399883456053248, 580981978476576768, 1733903483083423744, 576460855382638592, 1729382359989485568, 580964455010009088, 1733885959616856064, 576478447568683008, 1729399952175529984, 580982047196053504, 1733903551802900480, 2251834173423616, 1155173338780270592, 6755433800794112, 1159676938407641088, 2269426359468032, 1155190930966315008, 6773025986838528, 1159694530593685504, 2251902892900352, 1155173407499747328, 6755502520270848, 1159677007127117824, 2269495078944768, 1155190999685791744, 6773094706315264, 1159694599313162240, 578712586476847104, 1731634091083694080, 583216186104217600, 1736137690711064576, 578730178662891520, 1731651683269738496, 583233778290262016, 1736155282897108992, 578712655196323840, 1731634159803170816, 583216254823694336, 1736137759430541312, 578730247382368256, 1731651751989215232, 583233847009738752, 1736155351616585728, 8830452760576, 1152930335059607552, 4512430080131072, 1157433934686978048, 26422638804992, 1152947927245651968, 4530022266175488, 1157451526873022464, 8899172237312, 1152930403779084288, 4512498799607808, 1157434003406454784, 26491358281728, 1152947995965128704, 4530090985652224, 1157451595592499200, 576469582756184064, 1729391087363031040, 580973182383554560, 1733894686990401536, 576487174942228480, 1729408679549075456, 580990774569598976, 1733912279176445952, 576469651475660800, 1729391156082507776, 580973251103031296, 1733894755709878272, 576487243661705216, 1729408748268552192, 580990843289075712, 1733912347895922688, 2260630266445824, 1155182134873292800, 6764229893816320, 1159685734500663296, 2278222452490240, 1155199727059337216, 6781822079860736, 1159703326686707712, 2260698985922560, 1155182203592769536, 6764298613293056, 1159685803220140032, 2278291171966976, 1155199795778813952, 6781890799337472, 1159703395406184448, 578721382569869312, 1731642887176716288, 583224982197239808, 1736146486804086784, 578738974755913728, 1731660479362760704, 583242574383284224, 1736164078990131200, 578721451289346048, 1731642955896193024, 583225050916716544, 1736146555523563520, 578739043475390464, 1731660548082237440, 583242643102760960, 1736164147709607936, 0, 134217728, 524288, 134742016, 2048, 134219776, 526336, 134744064, 8, 134217736, 524296, 134742024, 2056, 134219784, 526344, 134744072, 288230376151711744, 288230376285929472, 288230376152236032, 288230376286453760, 288230376151713792, 288230376285931520, 288230376152238080, 288230376286455808, 288230376151711752, 288230376285929480, 288230376152236040, 288230376286453768, 288230376151713800, 288230376285931528, 288230376152238088, 288230376286455816, 1125899906842624, 1125900041060352, 1125899907366912, 1125900041584640, 1125899906844672, 1125900041062400, 1125899907368960, 1125900041586688, 1125899906842632, 1125900041060360, 1125899907366920, 1125900041584648, 1125899906844680, 1125900041062408, 1125899907368968, 1125900041586696, 289356276058554368, 289356276192772096, 289356276059078656, 289356276193296384, 289356276058556416, 289356276192774144, 289356276059080704, 289356276193298432, 289356276058554376, 289356276192772104, 289356276059078664, 289356276193296392, 289356276058556424, 289356276192774152, 289356276059080712, 289356276193298440, 4398046511104, 4398180728832, 4398047035392, 4398181253120, 4398046513152, 4398180730880, 4398047037440, 4398181255168, 4398046511112, 4398180728840, 4398047035400, 4398181253128, 4398046513160, 4398180730888, 4398047037448, 4398181255176, 288234774198222848, 288234774332440576, 288234774198747136, 288234774332964864, 288234774198224896, 288234774332442624, 288234774198749184, 288234774332966912, 288234774198222856, 288234774332440584, 288234774198747144, 288234774332964872, 288234774198224904, 288234774332442632, 288234774198749192, 288234774332966920, 1130297953353728, 1130298087571456, 1130297953878016, 1130298088095744, 1130297953355776, 1130298087573504, 1130297953880064, 1130298088097792, 1130297953353736, 1130298087571464, 1130297953878024, 1130298088095752, 1130297953355784, 1130298087573512, 1130297953880072, 1130298088097800, 289360674105065472, 289360674239283200, 289360674105589760, 289360674239807488, 289360674105067520, 289360674239285248, 289360674105591808, 289360674239809536, 289360674105065480, 289360674239283208, 289360674105589768, 289360674239807496, 289360674105067528, 289360674239285256, 289360674105591816, 289360674239809544, 17179869184, 17314086912, 17180393472, 17314611200, 17179871232, 17314088960, 17180395520, 17314613248, 17179869192, 17314086920, 17180393480, 17314611208, 17179871240, 17314088968, 17180395528, 17314613256, 288230393331580928, 288230393465798656, 288230393332105216, 288230393466322944, 288230393331582976, 288230393465800704, 288230393332107264, 288230393466324992, 288230393331580936, 288230393465798664, 288230393332105224, 288230393466322952, 288230393331582984, 288230393465800712, 288230393332107272, 288230393466325000, 1125917086711808, 1125917220929536, 1125917087236096, 1125917221453824, 1125917086713856, 1125917220931584, 1125917087238144, 1125917221455872, 1125917086711816, 1125917220929544, 1125917087236104, 1125917221453832, 1125917086713864, 1125917220931592, 1125917087238152, 1125917221455880, 289356293238423552, 289356293372641280, 289356293238947840, 289356293373165568, 289356293238425600, 289356293372643328, 289356293238949888, 289356293373167616, 289356293238423560, 289356293372641288, 289356293238947848, 289356293373165576, 289356293238425608, 289356293372643336, 289356293238949896, 289356293373167624, 4415226380288, 4415360598016, 4415226904576, 4415361122304, 4415226382336, 4415360600064, 4415226906624, 4415361124352, 4415226380296, 4415360598024, 4415226904584, 4415361122312, 4415226382344, 4415360600072, 4415226906632, 4415361124360, 288234791378092032, 288234791512309760, 288234791378616320, 288234791512834048, 288234791378094080, 288234791512311808, 288234791378618368, 288234791512836096, 288234791378092040, 288234791512309768, 288234791378616328, 288234791512834056, 288234791378094088, 288234791512311816, 288234791378618376, 288234791512836104, 1130315133222912, 1130315267440640, 1130315133747200, 1130315267964928, 1130315133224960, 1130315267442688, 1130315133749248, 1130315267966976, 1130315133222920, 1130315267440648, 1130315133747208, 1130315267964936, 1130315133224968, 1130315267442696, 1130315133749256, 1130315267966984, 289360691284934656, 289360691419152384, 289360691285458944, 289360691419676672, 289360691284936704, 289360691419154432, 289360691285460992, 289360691419678720, 289360691284934664, 289360691419152392, 289360691285458952, 289360691419676680, 289360691284936712, 289360691419154440, 289360691285461000, 289360691419678728, 0, 67108864, 262144, 67371008, 1024, 67109888, 263168, 67372032, 4, 67108868, 262148, 67371012, 1028, 67109892, 263172, 67372036, 144115188075855872, 144115188142964736, 144115188076118016, 144115188143226880, 144115188075856896, 144115188142965760, 144115188076119040, 144115188143227904, 144115188075855876, 144115188142964740, 144115188076118020, 144115188143226884, 144115188075856900, 144115188142965764, 144115188076119044, 144115188143227908, 562949953421312, 562950020530176, 562949953683456, 562950020792320, 562949953422336, 562950020531200, 562949953684480, 562950020793344, 562949953421316, 562950020530180, 562949953683460, 562950020792324, 562949953422340, 562950020531204, 562949953684484, 562950020793348, 144678138029277184, 144678138096386048, 144678138029539328, 144678138096648192, 144678138029278208, 144678138096387072, 144678138029540352, 144678138096649216, 144678138029277188, 144678138096386052, 144678138029539332, 144678138096648196, 144678138029278212, 144678138096387076, 144678138029540356, 144678138096649220, 2199023255552, 2199090364416, 2199023517696, 2199090626560, 2199023256576, 2199090365440, 2199023518720, 2199090627584, 2199023255556, 2199090364420, 2199023517700, 2199090626564, 2199023256580, 2199090365444, 2199023518724, 2199090627588, 144117387099111424, 144117387166220288, 144117387099373568, 144117387166482432, 144117387099112448, 144117387166221312, 144117387099374592, 144117387166483456, 144117387099111428, 144117387166220292, 144117387099373572, 144117387166482436, 144117387099112452, 144117387166221316, 144117387099374596, 144117387166483460, 565148976676864, 565149043785728, 565148976939008, 565149044047872, 565148976677888, 565149043786752, 565148976940032, 565149044048896, 565148976676868, 565149043785732, 565148976939012, 565149044047876, 565148976677892, 565149043786756, 565148976940036, 565149044048900, 144680337052532736, 144680337119641600, 144680337052794880, 144680337119903744, 144680337052533760, 144680337119642624, 144680337052795904, 144680337119904768, 144680337052532740, 144680337119641604, 144680337052794884, 144680337119903748, 144680337052533764, 144680337119642628, 144680337052795908, 144680337119904772, 8589934592, 8657043456, 8590196736, 8657305600, 8589935616, 8657044480, 8590197760, 8657306624, 8589934596, 8657043460, 8590196740, 8657305604, 8589935620, 8657044484, 8590197764, 8657306628, 144115196665790464, 144115196732899328, 144115196666052608, 144115196733161472, 144115196665791488, 144115196732900352, 144115196666053632, 144115196733162496, 144115196665790468, 144115196732899332, 144115196666052612, 144115196733161476, 144115196665791492, 144115196732900356, 144115196666053636, 144115196733162500, 562958543355904, 562958610464768, 562958543618048, 562958610726912, 562958543356928, 562958610465792, 562958543619072, 562958610727936, 562958543355908, 562958610464772, 562958543618052, 562958610726916, 562958543356932, 562958610465796, 562958543619076, 562958610727940, 144678146619211776, 144678146686320640, 144678146619473920, 144678146686582784, 144678146619212800, 144678146686321664, 144678146619474944, 144678146686583808, 144678146619211780, 144678146686320644, 144678146619473924, 144678146686582788, 144678146619212804, 144678146686321668, 144678146619474948, 144678146686583812, 2207613190144, 2207680299008, 2207613452288, 2207680561152, 2207613191168, 2207680300032, 2207613453312, 2207680562176, 2207613190148, 2207680299012, 2207613452292, 2207680561156, 2207613191172, 2207680300036, 2207613453316, 2207680562180, 144117395689046016, 144117395756154880, 144117395689308160, 144117395756417024, 144117395689047040, 144117395756155904, 144117395689309184, 144117395756418048, 144117395689046020, 144117395756154884, 144117395689308164, 144117395756417028, 144117395689047044, 144117395756155908, 144117395689309188, 144117395756418052, 565157566611456, 565157633720320, 565157566873600, 565157633982464, 565157566612480, 565157633721344, 565157566874624, 565157633983488, 565157566611460, 565157633720324, 565157566873604, 565157633982468, 565157566612484, 565157633721348, 565157566874628, 565157633983492, 144680345642467328, 144680345709576192, 144680345642729472, 144680345709838336, 144680345642468352, 144680345709577216, 144680345642730496, 144680345709839360, 144680345642467332, 144680345709576196, 144680345642729476, 144680345709838340, 144680345642468356, 144680345709577220, 144680345642730500, 144680345709839364, 0, 33554432, 131072, 33685504, 512, 33554944, 131584, 33686016, 2, 33554434, 131074, 33685506, 514, 33554946, 131586, 33686018, 268435456, 301989888, 268566528, 302120960, 268435968, 301990400, 268567040, 302121472, 268435458, 301989890, 268566530, 302120962, 268435970, 301990402, 268567042, 302121474, 1048576, 34603008, 1179648, 34734080, 1049088, 34603520, 1180160, 34734592, 1048578, 34603010, 1179650, 34734082, 1049090, 34603522, 1180162, 34734594, 269484032, 303038464, 269615104, 303169536, 269484544, 303038976, 269615616, 303170048, 269484034, 303038466, 269615106, 303169538, 269484546, 303038978, 269615618, 303170050, 4096, 33558528, 135168, 33689600, 4608, 33559040, 135680, 33690112, 4098, 33558530, 135170, 33689602, 4610, 33559042, 135682, 33690114, 268439552, 301993984, 268570624, 302125056, 268440064, 301994496, 268571136, 302125568, 268439554, 301993986, 268570626, 302125058, 268440066, 301994498, 268571138, 302125570, 1052672, 34607104, 1183744, 34738176, 1053184, 34607616, 1184256, 34738688, 1052674, 34607106, 1183746, 34738178, 1053186, 34607618, 1184258, 34738690, 269488128, 303042560, 269619200, 303173632, 269488640, 303043072, 269619712, 303174144, 269488130, 303042562, 269619202, 303173634, 269488642, 303043074, 269619714, 303174146, 16, 33554448, 131088, 33685520, 528, 33554960, 131600, 33686032, 18, 33554450, 131090, 33685522, 530, 33554962, 131602, 33686034, 268435472, 301989904, 268566544, 302120976, 268435984, 301990416, 268567056, 302121488, 268435474, 301989906, 268566546, 302120978, 268435986, 301990418, 268567058, 302121490, 1048592, 34603024, 1179664, 34734096, 1049104, 34603536, 1180176, 34734608, 1048594, 34603026, 1179666, 34734098, 1049106, 34603538, 1180178, 34734610, 269484048, 303038480, 269615120, 303169552, 269484560, 303038992, 269615632, 303170064, 269484050, 303038482, 269615122, 303169554, 269484562, 303038994, 269615634, 303170066, 4112, 33558544, 135184, 33689616, 4624, 33559056, 135696, 33690128, 4114, 33558546, 135186, 33689618, 4626, 33559058, 135698, 33690130, 268439568, 301994000, 268570640, 302125072, 268440080, 301994512, 268571152, 302125584, 268439570, 301994002, 268570642, 302125074, 268440082, 301994514, 268571154, 302125586, 1052688, 34607120, 1183760, 34738192, 1053200, 34607632, 1184272, 34738704, 1052690, 34607122, 1183762, 34738194, 1053202, 34607634, 1184274, 34738706, 269488144, 303042576, 269619216, 303173648, 269488656, 303043088, 269619728, 303174160, 269488146, 303042578, 269619218, 303173650, 269488658, 303043090, 269619730, 303174162, 0, 2305843009213693952, 9007199254740992, 2314850208468434944, 35184372088832, 2305878193585782784, 9042383626829824, 2314885392840523776, 137438953472, 2305843146652647424, 9007336693694464, 2314850345907388416, 35321811042304, 2305878331024736256, 9042521065783296, 2314885530279477248, 536870912, 2305843009750564864, 9007199791611904, 2314850209005305856, 35184908959744, 2305878194122653696, 9042384163700736, 2314885393377394688, 137975824384, 2305843147189518336, 9007337230565376, 2314850346444259328, 35322347913216, 2305878331561607168, 9042521602654208, 2314885530816348160, 2097152, 2305843009215791104, 9007199256838144, 2314850208470532096, 35184374185984, 2305878193587879936, 9042383628926976, 2314885392842620928, 137441050624, 2305843146654744576, 9007336695791616, 2314850345909485568, 35321813139456, 2305878331026833408, 9042521067880448, 2314885530281574400, 538968064, 2305843009752662016, 9007199793709056, 2314850209007403008, 35184911056896, 2305878194124750848, 9042384165797888, 2314885393379491840, 137977921536, 2305843147191615488, 9007337232662528, 2314850346446356480, 35322350010368, 2305878331563704320, 9042521604751360, 2314885530818445312, 8192, 2305843009213702144, 9007199254749184, 2314850208468443136, 35184372097024, 2305878193585790976, 9042383626838016, 2314885392840531968, 137438961664, 2305843146652655616, 9007336693702656, 2314850345907396608, 35321811050496, 2305878331024744448, 9042521065791488, 2314885530279485440, 536879104, 2305843009750573056, 9007199791620096, 2314850209005314048, 35184908967936, 2305878194122661888, 9042384163708928, 2314885393377402880, 137975832576, 2305843147189526528, 9007337230573568, 2314850346444267520, 35322347921408, 2305878331561615360, 9042521602662400, 2314885530816356352, 2105344, 2305843009215799296, 9007199256846336, 2314850208470540288, 35184374194176, 2305878193587888128, 9042383628935168, 2314885392842629120, 137441058816, 2305843146654752768, 9007336695799808, 2314850345909493760, 35321813147648, 2305878331026841600, 9042521067888640, 2314885530281582592, 538976256, 2305843009752670208, 9007199793717248, 2314850209007411200, 35184911065088, 2305878194124759040, 9042384165806080, 2314885393379500032, 137977929728, 2305843147191623680, 9007337232670720, 2314850346446364672, 35322350018560, 2305878331563712512, 9042521604759552, 2314885530818453504, 32, 2305843009213693984, 9007199254741024, 2314850208468434976, 35184372088864, 2305878193585782816, 9042383626829856, 2314885392840523808, 137438953504, 2305843146652647456, 9007336693694496, 2314850345907388448, 35321811042336, 2305878331024736288, 9042521065783328, 2314885530279477280, 536870944, 2305843009750564896, 9007199791611936, 2314850209005305888, 35184908959776, 2305878194122653728, 9042384163700768, 2314885393377394720, 137975824416, 2305843147189518368, 9007337230565408, 2314850346444259360, 35322347913248, 2305878331561607200, 9042521602654240, 2314885530816348192, 2097184, 2305843009215791136, 9007199256838176, 2314850208470532128, 35184374186016, 2305878193587879968, 9042383628927008, 2314885392842620960, 137441050656, 2305843146654744608, 9007336695791648, 2314850345909485600, 35321813139488, 2305878331026833440, 9042521067880480, 2314885530281574432, 538968096, 2305843009752662048, 9007199793709088, 2314850209007403040, 35184911056928, 2305878194124750880, 9042384165797920, 2314885393379491872, 137977921568, 2305843147191615520, 9007337232662560, 2314850346446356512, 35322350010400, 2305878331563704352, 9042521604751392, 2314885530818445344, 8224, 2305843009213702176, 9007199254749216, 2314850208468443168, 35184372097056, 2305878193585791008, 9042383626838048, 2314885392840532000, 137438961696, 2305843146652655648, 9007336693702688, 2314850345907396640, 35321811050528, 2305878331024744480, 9042521065791520, 2314885530279485472, 536879136, 2305843009750573088, 9007199791620128, 2314850209005314080, 35184908967968, 2305878194122661920, 9042384163708960, 2314885393377402912, 137975832608, 2305843147189526560, 9007337230573600, 2314850346444267552, 35322347921440, 2305878331561615392, 9042521602662432, 2314885530816356384, 2105376, 2305843009215799328, 9007199256846368, 2314850208470540320, 35184374194208, 2305878193587888160, 9042383628935200, 2314885392842629152, 137441058848, 2305843146654752800, 9007336695799840, 2314850345909493792, 35321813147680, 2305878331026841632, 9042521067888672, 2314885530281582624, 538976288, 2305843009752670240, 9007199793717280, 2314850209007411232, 35184911065120, 2305878194124759072, 9042384165806112, 2314885393379500064, 137977929760, 2305843147191623712, 9007337232670752, 2314850346446364704, 35322350018592, 2305878331563712544, 9042521604759584, 2314885530818453536, 0, 4611686018427387904, 18014398509481984, 4629700416936869888, 70368744177664, 4611756387171565568, 18084767253659648, 4629770785681047552, 274877906944, 4611686293305294848, 18014673387388928, 4629700691814776832, 70643622084608, 4611756662049472512, 18085042131566592, 4629771060558954496, 1073741824, 4611686019501129728, 18014399583223808, 4629700418010611712, 70369817919488, 4611756388245307392, 18084768327401472, 4629770786754789376, 275951648768, 4611686294379036672, 18014674461130752, 4629700692888518656, 70644695826432, 4611756663123214336, 18085043205308416, 4629771061632696320, 4194304, 4611686018431582208, 18014398513676288, 4629700416941064192, 70368748371968, 4611756387175759872, 18084767257853952, 4629770785685241856, 274882101248, 4611686293309489152, 18014673391583232, 4629700691818971136, 70643626278912, 4611756662053666816, 18085042135760896, 4629771060563148800, 1077936128, 4611686019505324032, 18014399587418112, 4629700418014806016, 70369822113792, 4611756388249501696, 18084768331595776, 4629770786758983680, 275955843072, 4611686294383230976, 18014674465325056, 4629700692892712960, 70644700020736, 4611756663127408640, 18085043209502720, 4629771061636890624, 16384, 4611686018427404288, 18014398509498368, 4629700416936886272, 70368744194048, 4611756387171581952, 18084767253676032, 4629770785681063936, 274877923328, 4611686293305311232, 18014673387405312, 4629700691814793216, 70643622100992, 4611756662049488896, 18085042131582976, 4629771060558970880, 1073758208, 4611686019501146112, 18014399583240192, 4629700418010628096, 70369817935872, 4611756388245323776, 18084768327417856, 4629770786754805760, 275951665152, 4611686294379053056, 18014674461147136, 4629700692888535040, 70644695842816, 4611756663123230720, 18085043205324800, 4629771061632712704, 4210688, 4611686018431598592, 18014398513692672, 4629700416941080576, 70368748388352, 4611756387175776256, 18084767257870336, 4629770785685258240, 274882117632, 4611686293309505536, 18014673391599616, 4629700691818987520, 70643626295296, 4611756662053683200, 18085042135777280, 4629771060563165184, 1077952512, 4611686019505340416, 18014399587434496, 4629700418014822400, 70369822130176, 4611756388249518080, 18084768331612160, 4629770786759000064, 275955859456, 4611686294383247360, 18014674465341440, 4629700692892729344, 70644700037120, 4611756663127425024, 18085043209519104, 4629771061636907008, 64, 4611686018427387968, 18014398509482048, 4629700416936869952, 70368744177728, 4611756387171565632, 18084767253659712, 4629770785681047616, 274877907008, 4611686293305294912, 18014673387388992, 4629700691814776896, 70643622084672, 4611756662049472576, 18085042131566656, 4629771060558954560, 1073741888, 4611686019501129792, 18014399583223872, 4629700418010611776, 70369817919552, 4611756388245307456, 18084768327401536, 4629770786754789440, 275951648832, 4611686294379036736, 18014674461130816, 4629700692888518720, 70644695826496, 4611756663123214400, 18085043205308480, 4629771061632696384, 4194368, 4611686018431582272, 18014398513676352, 4629700416941064256, 70368748372032, 4611756387175759936, 18084767257854016, 4629770785685241920, 274882101312, 4611686293309489216, 18014673391583296, 4629700691818971200, 70643626278976, 4611756662053666880, 18085042135760960, 4629771060563148864, 1077936192, 4611686019505324096, 18014399587418176, 4629700418014806080, 70369822113856, 4611756388249501760, 18084768331595840, 4629770786758983744, 275955843136, 4611686294383231040, 18014674465325120, 4629700692892713024, 70644700020800, 4611756663127408704, 18085043209502784, 4629771061636890688, 16448, 4611686018427404352, 18014398509498432, 4629700416936886336, 70368744194112, 4611756387171582016, 18084767253676096, 4629770785681064000, 274877923392, 4611686293305311296, 18014673387405376, 4629700691814793280, 70643622101056, 4611756662049488960, 18085042131583040, 4629771060558970944, 1073758272, 4611686019501146176, 18014399583240256, 4629700418010628160, 70369817935936, 4611756388245323840, 18084768327417920, 4629770786754805824, 275951665216, 4611686294379053120, 18014674461147200, 4629700692888535104, 70644695842880, 4611756663123230784, 18085043205324864, 4629771061632712768, 4210752, 4611686018431598656, 18014398513692736, 4629700416941080640, 70368748388416, 4611756387175776320, 18084767257870400, 4629770785685258304, 274882117696, 4611686293309505600, 18014673391599680, 4629700691818987584, 70643626295360, 4611756662053683264, 18085042135777344, 4629771060563165248, 1077952576, 4611686019505340480, 18014399587434560, 4629700418014822464, 70369822130240, 4611756388249518144, 18084768331612224, 4629770786759000128, 275955859520, 4611686294383247424, 18014674465341504, 4629700692892729408, 70644700037184, 4611756663127425088, 18085043209519168, 4629771061636907072, 0, 9223372036854775808, 36028797018963968, 9259400833873739776, 140737488355328, 9223512774343131136, 36169534507319296, 9259541571362095104, 549755813888, 9223372586610589696, 36029346774777856, 9259401383629553664, 141287244169216, 9223513324098945024, 36170084263133184, 9259542121117908992, 2147483648, 9223372039002259456, 36028799166447616, 9259400836021223424, 140739635838976, 9223512776490614784, 36169536654802944, 9259541573509578752, 551903297536, 9223372588758073344, 36029348922261504, 9259401385777037312, 141289391652864, 9223513326246428672, 36170086410616832, 9259542123265392640, 8388608, 9223372036863164416, 36028797027352576, 9259400833882128384, 140737496743936, 9223512774351519744, 36169534515707904, 9259541571370483712, 549764202496, 9223372586618978304, 36029346783166464, 9259401383637942272, 141287252557824, 9223513324107333632, 36170084271521792, 9259542121126297600, 2155872256, 9223372039010648064, 36028799174836224, 9259400836029612032, 140739644227584, 9223512776499003392, 36169536663191552, 9259541573517967360, 551911686144, 9223372588766461952, 36029348930650112, 9259401385785425920, 141289400041472, 9223513326254817280, 36170086419005440, 9259542123273781248, 32768, 9223372036854808576, 36028797018996736, 9259400833873772544, 140737488388096, 9223512774343163904, 36169534507352064, 9259541571362127872, 549755846656, 9223372586610622464, 36029346774810624, 9259401383629586432, 141287244201984, 9223513324098977792, 36170084263165952, 9259542121117941760, 2147516416, 9223372039002292224, 36028799166480384, 9259400836021256192, 140739635871744, 9223512776490647552, 36169536654835712, 9259541573509611520, 551903330304, 9223372588758106112, 36029348922294272, 9259401385777070080, 141289391685632, 9223513326246461440, 36170086410649600, 9259542123265425408, 8421376, 9223372036863197184, 36028797027385344, 9259400833882161152, 140737496776704, 9223512774351552512, 36169534515740672, 9259541571370516480, 549764235264, 9223372586619011072, 36029346783199232, 9259401383637975040, 141287252590592, 9223513324107366400, 36170084271554560, 9259542121126330368, 2155905024, 9223372039010680832, 36028799174868992, 9259400836029644800, 140739644260352, 9223512776499036160, 36169536663224320, 9259541573518000128, 551911718912, 9223372588766494720, 36029348930682880, 9259401385785458688, 141289400074240, 9223513326254850048, 36170086419038208, 9259542123273814016, 128, 9223372036854775936, 36028797018964096, 9259400833873739904, 140737488355456, 9223512774343131264, 36169534507319424, 9259541571362095232, 549755814016, 9223372586610589824, 36029346774777984, 9259401383629553792, 141287244169344, 9223513324098945152, 36170084263133312, 9259542121117909120, 2147483776, 9223372039002259584, 36028799166447744, 9259400836021223552, 140739635839104, 9223512776490614912, 36169536654803072, 9259541573509578880, 551903297664, 9223372588758073472, 36029348922261632, 9259401385777037440, 141289391652992, 9223513326246428800, 36170086410616960, 9259542123265392768, 8388736, 9223372036863164544, 36028797027352704, 9259400833882128512, 140737496744064, 9223512774351519872, 36169534515708032, 9259541571370483840, 549764202624, 9223372586618978432, 36029346783166592, 9259401383637942400, 141287252557952, 9223513324107333760, 36170084271521920, 9259542121126297728, 2155872384, 9223372039010648192, 36028799174836352, 9259400836029612160, 140739644227712, 9223512776499003520, 36169536663191680, 9259541573517967488, 551911686272, 9223372588766462080, 36029348930650240, 9259401385785426048, 141289400041600, 9223513326254817408, 36170086419005568, 9259542123273781376, 32896, 9223372036854808704, 36028797018996864, 9259400833873772672, 140737488388224, 9223512774343164032, 36169534507352192, 9259541571362128000, 549755846784, 9223372586610622592, 36029346774810752, 9259401383629586560, 141287244202112, 9223513324098977920, 36170084263166080, 9259542121117941888, 2147516544, 9223372039002292352, 36028799166480512, 9259400836021256320, 140739635871872, 9223512776490647680, 36169536654835840, 9259541573509611648, 551903330432, 9223372588758106240, 36029348922294400, 9259401385777070208, 141289391685760, 9223513326246461568, 36170086410649728, 9259542123265425536, 8421504, 9223372036863197312, 36028797027385472, 9259400833882161280, 140737496776832, 9223512774351552640, 36169534515740800, 9259541571370516608, 549764235392, 9223372586619011200, 36029346783199360, 9259401383637975168, 141287252590720, 9223513324107366528, 36170084271554688, 9259542121126330496, 2155905152, 9223372039010680960, 36028799174869120, 9259400836029644928, 140739644260480, 9223512776499036288, 36169536663224448, 9259541573518000256, 551911719040, 9223372588766494848, 36029348930683008, 9259401385785458816, 141289400074368, 9223513326254850176, 36170086419038336, 9259542123273814144)
PC2_K = (0, 256, 262144, 262400, 0, 256, 262144, 262400, 64, 320, 262208, 262464, 64, 320, 262208, 262464, 4194304, 4194560, 4456448, 4456704, 4194304, 4194560, 4456448, 4456704, 4194368, 4194624, 4456512, 4456768, 4194368, 4194624, 4456512, 4456768, 32768, 33024, 294912, 295168, 32768, 33024, 294912, 295168, 32832, 33088, 294976, 295232, 32832, 33088, 294976, 295232, 4227072, 4227328, 4489216, 4489472, 4227072, 4227328, 4489216, 4489472, 4227136, 4227392, 4489280, 4489536, 4227136, 4227392, 4489280, 4489536, 8, 264, 262152, 262408, 8, 264, 262152, 262408, 72, 328, 262216, 262472, 72, 328, 262216, 262472, 4194312, 4194568, 4456456, 4456712, 4194312, 4194568, 4456456, 4456712, 4194376, 4194632, 4456520, 4456776, 4194376, 4194632, 4456520, 4456776, 32776, 33032, 294920, 295176, 32776, 33032, 294920, 295176, 32840, 33096, 294984, 295240, 32840, 33096, 294984, 295240, 4227080, 4227336, 4489224, 4489480, 4227080, 4227336, 4489224, 4489480, 4227144, 4227400, 4489288, 4489544, 4227144, 4227400, 4489288, 4489544, 1024, 1280, 263168, 263424, 1024, 1280, 263168, 263424, 1088, 1344, 263232, 263488, 1088, 1344, 263232, 263488, 4195328, 4195584, 4457472, 4457728, 4195328, 4195584, 4457472, 4457728, 4195392, 4195648, 4457536, 4457792, 4195392, 4195648, 4457536, 4457792, 33792, 34048, 295936, 296192, 33792, 34048, 295936, 296192, 33856, 34112, 296000, 296256, 33856, 34112, 296000, 296256, 4228096, 4228352, 4490240, 4490496, 4228096, 4228352, 4490240, 4490496, 4228160, 4228416, 4490304, 4490560, 4228160, 4228416, 4490304, 4490560, 1032, 1288, 263176, 263432, 1032, 1288, 263176, 263432, 1096, 1352, 263240, 263496, 1096, 1352, 263240, 263496, 4195336, 4195592, 4457480, 4457736, 4195336, 4195592, 4457480, 4457736, 4195400, 4195656, 4457544, 4457800, 4195400, 4195656, 4457544, 4457800, 33800, 34056, 295944, 296200, 33800, 34056, 295944, 296200, 33864, 34120, 296008, 296264, 33864, 34120, 296008, 296264, 4228104, 4228360, 4490248, 4490504, 4228104, 4228360, 4490248, 4490504, 4228168, 4228424, 4490312, 4490568, 4228168, 4228424, 4490312, 4490568, 0, 4096, 524288, 528384, 32, 4128, 524320, 528416, 16384, 20480, 540672, 544768, 16416, 20512, 540704, 544800, 2048, 6144, 526336, 530432, 2080, 6176, 526368, 530464, 18432, 22528, 542720, 546816, 18464, 22560, 542752, 546848, 0, 4096, 524288, 528384, 32, 4128, 524320, 528416, 16384, 20480, 540672, 544768, 16416, 20512, 540704, 544800, 2048, 6144, 526336, 530432, 2080, 6176, 526368, 530464, 18432, 22528, 542720, 546816, 18464, 22560, 542752, 546848, 16, 4112, 524304, 528400, 48, 4144, 524336, 528432, 16400, 20496, 540688, 544784, 16432, 20528, 540720, 544816, 2064, 6160, 526352, 530448, 2096, 6192, 526384, 530480, 18448, 22544, 542736, 546832, 18480, 22576, 542768, 546864, 16, 4112, 524304, 528400, 48, 4144, 524336, 528432, 16400, 20496, 540688, 544784, 16432, 20528, 540720, 544816, 2064, 6160, 526352, 530448, 2096, 6192, 526384, 530480, 18448, 22544, 542736, 546832, 18480, 22576, 542768, 546864, 8388608, 8392704, 8912896, 8916992, 8388640, 8392736, 8912928, 8917024, 8404992, 8409088, 8929280, 8933376, 8405024, 8409120, 8929312, 8933408, 8390656, 8394752, 8914944, 8919040, 8390688, 8394784, 8914976, 8919072, 8407040, 8411136, 8931328, 8935424, 8407072, 8411168, 8931360, 8935456, 8388608, 8392704, 8912896, 8916992, 8388640, 8392736, 8912928, 8917024, 8404992, 8409088, 8929280, 8933376, 8405024, 8409120, 8929312, 8933408, 8390656, 8394752, 8914944, 8919040, 8390688, 8394784, 8914976, 8919072, 8407040, 8411136, 8931328, 8935424, 8407072, 8411168, 8931360, 8935456, 8388624, 8392720, 8912912, 8917008, 8388656, 8392752, 8912944, 8917040, 8405008, 8409104, 8929296, 8933392, 8405040, 8409136, 8929328, 8933424, 8390672, 8394768, 8914960, 8919056, 8390704, 8394800, 8914992, 8919088, 8407056, 8411152, 8931344, 8935440, 8407088, 8411184, 8931376, 8935472, 8388624, 8392720, 8912912, 8917008, 8388656, 8392752, 8912944, 8917040, 8405008, 8409104, 8929296, 8933392, 8405040, 8409136, 8929328, 8933424, 8390672, 8394768, 8914960, 8919056, 8390704, 8394800, 8914992, 8919088, 8407056, 8411152, 8931344, 8935440, 8407088, 8411184, 8931376, 8935472, 0, 65536, 512, 66048, 0, 65536, 512, 66048, 1048576, 1114112, 1049088, 1114624, 1048576, 1114112, 1049088, 1114624, 4, 65540, 516, 66052, 4, 65540, 516, 66052, 1048580, 1114116, 1049092, 1114628, 1048580, 1114116, 1049092, 1114628, 0, 65536, 512, 66048, 0, 65536, 512, 66048, 1048576, 1114112, 1049088, 1114624, 1048576, 1114112, 1049088, 1114624, 4, 65540, 516, 66052, 4, 65540, 516, 66052, 1048580, 1114116, 1049092, 1114628, 1048580, 1114116, 1049092, 1114628, 128, 65664, 640, 66176, 128, 65664, 640, 66176, 1048704, 1114240, 1049216, 1114752, 1048704, 1114240, 1049216, 1114752, 132, 65668, 644, 66180, 132, 65668, 644, 66180, 1048708, 1114244, 1049220, 1114756, 1048708, 1114244, 1049220, 1114756, 128, 65664, 640, 66176, 128, 65664, 640, 66176, 1048704, 1114240, 1049216, 1114752, 1048704, 1114240, 1049216, 1114752, 132, 65668, 644, 66180, 132, 65668, 644, 66180, 1048708, 1114244, 1049220, 1114756, 1048708, 1114244, 1049220, 1114756, 8192, 73728, 8704, 74240, 8192, 73728, 8704, 74240, 1056768, 1122304, 1057280, 1122816, 1056768, 1122304, 1057280, 1122816, 8196, 73732, 8708, 74244, 8196, 73732, 8708, 74244, 1056772, 1122308, 1057284, 1122820, 1056772, 1122308, 1057284, 1122820, 8192, 73728, 8704, 74240, 8192, 73728, 8704, 74240, 1056768, 1122304, 1057280, 1122816, 1056768, 1122304, 1057280, 1122816, 8196, 73732, 8708, 74244, 8196, 73732, 8708, 74244, 1056772, 1122308, 1057284, 1122820, 1056772, 1122308, 1057284, 1122820, 8320, 73856, 8832, 74368, 8320, 73856, 8832, 74368, 1056896, 1122432, 1057408, 1122944, 1056896, 1122432, 1057408, 1122944, 8324, 73860, 8836, 74372, 8324, 73860, 8836, 74372, 1056900, 1122436, 1057412, 1122948, 1056900, 1122436, 1057412, 1122948, 8320, 73856, 8832, 74368, 8320, 73856, 8832, 74368, 1056896, 1122432, 1057408, 1122944, 1056896, 1122432, 1057408, 1122944, 8324, 73860, 8836, 74372, 8324, 73860, 8836, 74372, 1056900, 1122436, 1057412, 1122948, 1056900, 1122436, 1057412, 1122948, 0, 1, 2097152, 2097153, 131072, 131073, 2228224, 2228225, 2, 3, 2097154, 2097155, 131074, 131075, 2228226, 2228227, 1099511627776, 1099511627777, 1099513724928, 1099513724929, 1099511758848, 1099511758849, 1099513856000, 1099513856001, 1099511627778, 1099511627779, 1099513724930, 1099513724931, 1099511758850, 1099511758851, 1099513856002, 1099513856003, 134217728, 134217729, 136314880, 136314881, 134348800, 134348801, 136445952, 136445953, 134217730, 134217731, 136314882, 136314883, 134348802, 134348803, 136445954, 136445955, 1099645845504, 1099645845505, 1099647942656, 1099647942657, 1099645976576, 1099645976577, 1099648073728, 1099648073729, 1099645845506, 1099645845507, 1099647942658, 1099647942659, 1099645976578, 1099645976579, 1099648073730, 1099648073731, 2147483648, 2147483649, 2149580800, 2149580801, 2147614720, 2147614721, 2149711872, 2149711873, 2147483650, 2147483651, 2149580802, 2149580803, 2147614722, 2147614723, 2149711874, 2149711875, 1101659111424, 1101659111425, 1101661208576, 1101661208577, 1101659242496, 1101659242497, 1101661339648, 1101661339649, 1101659111426, 1101659111427, 1101661208578, 1101661208579, 1101659242498, 1101659242499, 1101661339650, 1101661339651, 2281701376, 2281701377, 2283798528, 2283798529, 2281832448, 2281832449, 2283929600, 2283929601, 2281701378, 2281701379, 2283798530, 2283798531, 2281832450, 2281832451, 2283929602, 2283929603, 1101793329152, 1101793329153, 1101795426304, 1101795426305, 1101793460224, 1101793460225, 1101795557376, 1101795557377, 1101793329154, 1101793329155, 1101795426306, 1101795426307, 1101793460226, 1101793460227, 1101795557378, 1101795557379, 0, 1, 2097152, 2097153, 131072, 131073, 2228224, 2228225, 2, 3, 2097154, 2097155, 131074, 131075, 2228226, 2228227, 1099511627776, 1099511627777, 1099513724928, 1099513724929, 1099511758848, 1099511758849, 1099513856000, 1099513856001, 1099511627778, 1099511627779, 1099513724930, 1099513724931, 1099511758850, 1099511758851, 1099513856002, 1099513856003, 134217728, 134217729, 136314880, 136314881, 134348800, 134348801, 136445952, 136445953, 134217730, 134217731, 136314882, 136314883, 134348802, 134348803, 136445954, 136445955, 1099645845504, 1099645845505, 1099647942656, 1099647942657, 1099645976576, 1099645976577, 1099648073728, 1099648073729, 1099645845506, 1099645845507, 1099647942658, 1099647942659, 1099645976578, 1099645976579, 1099648073730, 1099648073731, 2147483648, 2147483649, 2149580800, 2149580801, 2147614720, 2147614721, 2149711872, 2149711873, 2147483650, 2147483651, 2149580802, 2149580803, 2147614722, 2147614723, 2149711874, 2149711875, 1101659111424, 1101659111425, 1101661208576, 1101661208577, 1101659242496, 1101659242497, 1101661339648, 1101661339649, 1101659111426, 1101659111427, 1101661208578, 1101661208579, 1101659242498, 1101659242499, 1101661339650, 1101661339651, 2281701376, 2281701377, 2283798528, 2283798529, 2281832448, 2281832449, 2283929600, 2283929601, 2281701378, 2281701379, 2283798530, 2283798531, 2281832450, 2281832451, 2283929602, 2283929603, 1101793329152, 1101793329153, 1101795426304, 1101795426305, 1101793460224, 1101793460225, 1101795557376, 1101795557377, 1101793329154, 1101793329155, 1101795426306, 1101795426307, 1101793460226, 1101793460227, 1101795557378, 1101795557379, 0, 17592186044416, 34359738368, 17626545782784, 0, 17592186044416, 34359738368, 17626545782784, 137438953472, 17729624997888, 171798691840, 17763984736256, 137438953472, 17729624997888, 171798691840, 17763984736256, 67108864, 17592253153280, 34426847232, 17626612891648, 67108864, 17592253153280, 34426847232, 17626612891648, 137506062336, 17729692106752, 171865800704, 17764051845120, 137506062336, 17729692106752, 171865800704, 17764051845120, 17179869184, 17609365913600, 51539607552, 17643725651968, 17179869184, 17609365913600, 51539607552, 17643725651968, 154618822656, 17746804867072, 188978561024, 17781164605440, 154618822656, 17746804867072, 188978561024, 17781164605440, 17246978048, 17609433022464, 51606716416, 17643792760832, 17246978048, 17609433022464, 51606716416, 17643792760832, 154685931520, 17746871975936, 189045669888, 17781231714304, 154685931520, 17746871975936, 189045669888, 17781231714304, 0, 17592186044416, 34359738368, 17626545782784, 0, 17592186044416, 34359738368, 17626545782784, 137438953472, 17729624997888, 171798691840, 17763984736256, 137438953472, 17729624997888, 171798691840, 17763984736256, 67108864, 17592253153280, 34426847232, 17626612891648, 67108864, 17592253153280, 34426847232, 17626612891648, 137506062336, 17729692106752, 171865800704, 17764051845120, 137506062336, 17729692106752, 171865800704, 17764051845120, 17179869184, 17609365913600, 51539607552, 17643725651968, 17179869184, 17609365913600, 51539607552, 17643725651968, 154618822656, 17746804867072, 188978561024, 17781164605440, 154618822656, 17746804867072, 188978561024, 17781164605440, 17246978048, 17609433022464, 51606716416, 17643792760832, 17246978048, 17609433022464, 51606716416, 17643792760832, 154685931520, 17746871975936, 189045669888, 17781231714304, 154685931520, 17746871975936, 189045669888, 17781231714304, 70368744177664, 87960930222080, 70403103916032, 87995289960448, 70368744177664, 87960930222080, 70403103916032, 87995289960448, 70506183131136, 88098369175552, 70540542869504, 88132728913920, 70506183131136, 88098369175552, 70540542869504, 88132728913920, 70368811286528, 87960997330944, 70403171024896, 87995357069312, 70368811286528, 87960997330944, 70403171024896, 87995357069312, 70506250240000, 88098436284416, 70540609978368, 88132796022784, 70506250240000, 88098436284416, 70540609978368, 88132796022784, 70385924046848, 87978110091264, 70420283785216, 88012469829632, 70385924046848, 87978110091264, 70420283785216, 88012469829632, 70523363000320, 88115549044736, 70557722738688, 88149908783104, 70523363000320, 88115549044736, 70557722738688, 88149908783104, 70385991155712, 87978177200128, 70420350894080, 88012536938496, 70385991155712, 87978177200128, 70420350894080, 88012536938496, 70523430109184, 88115616153600, 70557789847552, 88149975891968, 70523430109184, 88115616153600, 70557789847552, 88149975891968, 70368744177664, 87960930222080, 70403103916032, 87995289960448, 70368744177664, 87960930222080, 70403103916032, 87995289960448, 70506183131136, 88098369175552, 70540542869504, 88132728913920, 70506183131136, 88098369175552, 70540542869504, 88132728913920, 70368811286528, 87960997330944, 70403171024896, 87995357069312, 70368811286528, 87960997330944, 70403171024896, 87995357069312, 70506250240000, 88098436284416, 70540609978368, 88132796022784, 70506250240000, 88098436284416, 70540609978368, 88132796022784, 70385924046848, 87978110091264, 70420283785216, 88012469829632, 70385924046848, 87978110091264, 70420283785216, 88012469829632, 70523363000320, 88115549044736, 70557722738688, 88149908783104, 70523363000320, 88115549044736, 70557722738688, 88149908783104, 70385991155712, 87978177200128, 70420350894080, 88012536938496, 70385991155712, 87978177200128, 70420350894080, 88012536938496, 70523430109184, 88115616153600, 70557789847552, 88149975891968, 70523430109184, 88115616153600, 70557789847552, 88149975891968, 0, 536870912, 549755813888, 550292684800, 140737488355328, 140738025226240, 141287244169216, 141287781040128, 33554432, 570425344, 549789368320, 550326239232, 140737521909760, 140738058780672, 141287277723648, 141287814594560, 8589934592, 9126805504, 558345748480, 558882619392, 140746078289920, 140746615160832, 141295834103808, 141296370974720, 8623489024, 9160359936, 558379302912, 558916173824, 140746111844352, 140746648715264, 141295867658240, 141296404529152, 35184372088832, 35184908959744, 35734127902720, 35734664773632, 175921860444160, 175922397315072, 176471616258048, 176472153128960, 35184405643264, 35184942514176, 35734161457152, 35734698328064, 175921893998592, 175922430869504, 176471649812480, 176472186683392, 35192962023424, 35193498894336, 35742717837312, 35743254708224, 175930450378752, 175930987249664, 176480206192640, 176480743063552, 35192995577856, 35193532448768, 35742751391744, 35743288262656, 175930483933184, 175931020804096, 176480239747072, 176480776617984, 68719476736, 69256347648, 618475290624, 619012161536, 140806207832064, 140806744702976, 141355963645952, 141356500516864, 68753031168, 69289902080, 618508845056, 619045715968, 140806241386496, 140806778257408, 141355997200384, 141356534071296, 77309411328, 77846282240, 627065225216, 627602096128, 140814797766656, 140815334637568, 141364553580544, 141365090451456, 77342965760, 77879836672, 627098779648, 627635650560, 140814831321088, 140815368192000, 141364587134976, 141365124005888, 35253091565568, 35253628436480, 35802847379456, 35803384250368, 175990579920896, 175991116791808, 176540335734784, 176540872605696, 35253125120000, 35253661990912, 35802880933888, 35803417804800, 175990613475328, 175991150346240, 176540369289216, 176540906160128, 35261681500160, 35262218371072, 35811437314048, 35811974184960, 175999169855488, 175999706726400, 176548925669376, 176549462540288, 35261715054592, 35262251925504, 35811470868480, 35812007739392, 175999203409920, 175999740280832, 176548959223808, 176549496094720, 0, 536870912, 549755813888, 550292684800, 140737488355328, 140738025226240, 141287244169216, 141287781040128, 33554432, 570425344, 549789368320, 550326239232, 140737521909760, 140738058780672, 141287277723648, 141287814594560, 8589934592, 9126805504, 558345748480, 558882619392, 140746078289920, 140746615160832, 141295834103808, 141296370974720, 8623489024, 9160359936, 558379302912, 558916173824, 140746111844352, 140746648715264, 141295867658240, 141296404529152, 35184372088832, 35184908959744, 35734127902720, 35734664773632, 175921860444160, 175922397315072, 176471616258048, 176472153128960, 35184405643264, 35184942514176, 35734161457152, 35734698328064, 175921893998592, 175922430869504, 176471649812480, 176472186683392, 35192962023424, 35193498894336, 35742717837312, 35743254708224, 175930450378752, 175930987249664, 176480206192640, 176480743063552, 35192995577856, 35193532448768, 35742751391744, 35743288262656, 175930483933184, 175931020804096, 176480239747072, 176480776617984, 68719476736, 69256347648, 618475290624, 619012161536, 140806207832064, 140806744702976, 141355963645952, 141356500516864, 68753031168, 69289902080, 618508845056, 619045715968, 140806241386496, 140806778257408, 141355997200384, 141356534071296, 77309411328, 77846282240, 627065225216, 627602096128, 140814797766656, 140815334637568, 141364553580544, 141365090451456, 77342965760, 77879836672, 627098779648, 627635650560, 140814831321088, 140815368192000, 141364587134976, 141365124005888, 35253091565568, 35253628436480, 35802847379456, 35803384250368, 175990579920896, 175991116791808, 176540335734784, 176540872605696, 35253125120000, 35253661990912, 35802880933888, 35803417804800, 175990613475328, 175991150346240, 176540369289216, 176540906160128, 35261681500160, 35262218371072, 35811437314048, 35811974184960, 175999169855488, 175999706726400, 176548925669376, 176549462540288, 35261715054592, 35262251925504, 35811470868480, 35812007739392, 175999203409920, 175999740280832, 176548959223808, 176549496094720, 0, 1073741824, 268435456, 1342177280, 274877906944, 275951648768, 275146342400, 276220084224, 4398046511104, 4399120252928, 4398314946560, 4399388688384, 4672924418048, 4673998159872, 4673192853504, 4674266595328, 4294967296, 5368709120, 4563402752, 5637144576, 279172874240, 280246616064, 279441309696, 280515051520, 4402341478400, 4403415220224, 4402609913856, 4403683655680, 4677219385344, 4678293127168, 4677487820800, 4678561562624, 2199023255552, 2200096997376, 2199291691008, 2200365432832, 2473901162496, 2474974904320, 2474169597952, 2475243339776, 6597069766656, 6598143508480, 6597338202112, 6598411943936, 6871947673600, 6873021415424, 6872216109056, 6873289850880, 2203318222848, 2204391964672, 2203586658304, 2204660400128, 2478196129792, 2479269871616, 2478464565248, 2479538307072, 6601364733952, 6602438475776, 6601633169408, 6602706911232, 6876242640896, 6877316382720, 6876511076352, 6877584818176, 16777216, 1090519040, 285212672, 1358954496, 274894684160, 275968425984, 275163119616, 276236861440, 4398063288320, 4399137030144, 4398331723776, 4399405465600, 4672941195264, 4674014937088, 4673209630720, 4674283372544, 4311744512, 5385486336, 4580179968, 5653921792, 279189651456, 280263393280, 279458086912, 280531828736, 4402358255616, 4403431997440, 4402626691072, 4403700432896, 4677236162560, 4678309904384, 4677504598016, 4678578339840, 2199040032768, 2200113774592, 2199308468224, 2200382210048, 2473917939712, 2474991681536, 2474186375168, 2475260116992, 6597086543872, 6598160285696, 6597354979328, 6598428721152, 6871964450816, 6873038192640, 6872232886272, 6873306628096, 2203335000064, 2204408741888, 2203603435520, 2204677177344, 2478212907008, 2479286648832, 2478481342464, 2479555084288, 6601381511168, 6602455252992, 6601649946624, 6602723688448, 6876259418112, 6877333159936, 6876527853568, 6877601595392, 8796093022208, 8797166764032, 8796361457664, 8797435199488, 9070970929152, 9072044670976, 9071239364608, 9072313106432, 13194139533312, 13195213275136, 13194407968768, 13195481710592, 13469017440256, 13470091182080, 13469285875712, 13470359617536, 8800387989504, 8801461731328, 8800656424960, 8801730166784, 9075265896448, 9076339638272, 9075534331904, 9076608073728, 13198434500608, 13199508242432, 13198702936064, 13199776677888, 13473312407552, 13474386149376, 13473580843008, 13474654584832, 10995116277760, 10996190019584, 10995384713216, 10996458455040, 11269994184704, 11271067926528, 11270262620160, 11271336361984, 15393162788864, 15394236530688, 15393431224320, 15394504966144, 15668040695808, 15669114437632, 15668309131264, 15669382873088, 10999411245056, 11000484986880, 10999679680512, 11000753422336, 11274289152000, 11275362893824, 11274557587456, 11275631329280, 15397457756160, 15398531497984, 15397726191616, 15398799933440, 15672335663104, 15673409404928, 15672604098560, 15673677840384, 8796109799424, 8797183541248, 8796378234880, 8797451976704, 9070987706368, 9072061448192, 9071256141824, 9072329883648, 13194156310528, 13195230052352, 13194424745984, 13195498487808, 13469034217472, 13470107959296, 13469302652928, 13470376394752, 8800404766720, 8801478508544, 8800673202176, 8801746944000, 9075282673664, 9076356415488, 9075551109120, 9076624850944, 13198451277824, 13199525019648, 13198719713280, 13199793455104, 13473329184768, 13474402926592, 13473597620224, 13474671362048, 10995133054976, 10996206796800, 10995401490432, 10996475232256, 11270010961920, 11271084703744, 11270279397376, 11271353139200, 15393179566080, 15394253307904, 15393448001536, 15394521743360, 15668057473024, 15669131214848, 15668325908480, 15669399650304, 10999428022272, 11000501764096, 10999696457728, 11000770199552, 11274305929216, 11275379671040, 11274574364672, 11275648106496, 15397474533376, 15398548275200, 15397742968832, 15398816710656, 15672352440320, 15673426182144, 15672620875776, 15673694617600)
N_PC2_K = (0, 16777216, 134217728, 150994944, 1048576, 17825792, 135266304, 152043520, 64, 16777280, 134217792, 150995008, 1048640, 17825856, 135266368, 152043584, 16384, 16793600, 134234112, 151011328, 1064960, 17842176, 135282688, 152059904, 16448, 16793664, 134234176, 151011392, 1065024, 17842240, 135282752, 152059968, 1024, 16778240, 134218752, 150995968, 1049600, 17826816, 135267328, 152044544, 1088, 16778304, 134218816, 150996032, 1049664, 17826880, 135267392, 152044608, 17408, 16794624, 134235136, 151012352, 1065984, 17843200, 135283712, 152060928, 17472, 16794688, 134235200, 151012416, 1066048, 17843264, 135283776, 152060992, 8, 16777224, 134217736, 150994952, 1048584, 17825800, 135266312, 152043528, 72, 16777288, 134217800, 150995016, 1048648, 17825864, 135266376, 152043592, 16392, 16793608, 134234120, 151011336, 1064968, 17842184, 135282696, 152059912, 16456, 16793672, 134234184, 151011400, 1065032, 17842248, 135282760, 152059976, 1032, 16778248, 134218760, 150995976, 1049608, 17826824, 135267336, 152044552, 1096, 16778312, 134218824, 150996040, 1049672, 17826888, 135267400, 152044616, 17416, 16794632, 134235144, 151012360, 1065992, 17843208, 135283720, 152060936, 17480, 16794696, 134235208, 151012424, 1066056, 17843272, 135283784, 152061000, 4194304, 20971520, 138412032, 155189248, 5242880, 22020096, 139460608, 156237824, 4194368, 20971584, 138412096, 155189312, 5242944, 22020160, 139460672, 156237888, 4210688, 20987904, 138428416, 155205632, 5259264, 22036480, 139476992, 156254208, 4210752, 20987968, 138428480, 155205696, 5259328, 22036544, 139477056, 156254272, 4195328, 20972544, 138413056, 155190272, 5243904, 22021120, 139461632, 156238848, 4195392, 20972608, 138413120, 155190336, 5243968, 22021184, 139461696, 156238912, 4211712, 20988928, 138429440, 155206656, 5260288, 22037504, 139478016, 156255232, 4211776, 20988992, 138429504, 155206720, 5260352, 22037568, 139478080, 156255296, 4194312, 20971528, 138412040, 155189256, 5242888, 22020104, 139460616, 156237832, 4194376, 20971592, 138412104, 155189320, 5242952, 22020168, 139460680, 156237896, 4210696, 20987912, 138428424, 155205640, 5259272, 22036488, 139477000, 156254216, 4210760, 20987976, 138428488, 155205704, 5259336, 22036552, 139477064, 156254280, 4195336, 20972552, 138413064, 155190280, 5243912, 22021128, 139461640, 156238856, 4195400, 20972616, 138413128, 155190344, 5243976, 22021192, 139461704, 156238920, 4211720, 20988936, 138429448, 155206664, 5260296, 22037512, 139478024, 156255240, 4211784, 20989000, 138429512, 155206728, 5260360, 22037576, 139478088, 156255304, 0, 1, 131072, 131073, 128, 129, 131200, 131201, 4096, 4097, 135168, 135169, 4224, 4225, 135296, 135297, 256, 257, 131328, 131329, 384, 385, 131456, 131457, 4352, 4353, 135424, 135425, 4480, 4481, 135552, 135553, 8388608, 8388609, 8519680, 8519681, 8388736, 8388737, 8519808, 8519809, 8392704, 8392705, 8523776, 8523777, 8392832, 8392833, 8523904, 8523905, 8388864, 8388865, 8519936, 8519937, 8388992, 8388993, 8520064, 8520065, 8392960, 8392961, 8524032, 8524033, 8393088, 8393089, 8524160, 8524161, 2048, 2049, 133120, 133121, 2176, 2177, 133248, 133249, 6144, 6145, 137216, 137217, 6272, 6273, 137344, 137345, 2304, 2305, 133376, 133377, 2432, 2433, 133504, 133505, 6400, 6401, 137472, 137473, 6528, 6529, 137600, 137601, 8390656, 8390657, 8521728, 8521729, 8390784, 8390785, 8521856, 8521857, 8394752, 8394753, 8525824, 8525825, 8394880, 8394881, 8525952, 8525953, 8390912, 8390913, 8521984, 8521985, 8391040, 8391041, 8522112, 8522113, 8395008, 8395009, 8526080, 8526081, 8395136, 8395137, 8526208, 8526209, 32, 33, 131104, 131105, 160, 161, 131232, 131233, 4128, 4129, 135200, 135201, 4256, 4257, 135328, 135329, 288, 289, 131360, 131361, 416, 417, 131488, 131489, 4384, 4385, 135456, 135457, 4512, 4513, 135584, 135585, 8388640, 8388641, 8519712, 8519713, 8388768, 8388769, 8519840, 8519841, 8392736, 8392737, 8523808, 8523809, 8392864, 8392865, 8523936, 8523937, 8388896, 8388897, 8519968, 8519969, 8389024, 8389025, 8520096, 8520097, 8392992, 8392993, 8524064, 8524065, 8393120, 8393121, 8524192, 8524193, 2080, 2081, 133152, 133153, 2208, 2209, 133280, 133281, 6176, 6177, 137248, 137249, 6304, 6305, 137376, 137377, 2336, 2337, 133408, 133409, 2464, 2465, 133536, 133537, 6432, 6433, 137504, 137505, 6560, 6561, 137632, 137633, 8390688, 8390689, 8521760, 8521761, 8390816, 8390817, 8521888, 8521889, 8394784, 8394785, 8525856, 8525857, 8394912, 8394913, 8525984, 8525985, 8390944, 8390945, 8522016, 8522017, 8391072, 8391073, 8522144, 8522145, 8395040, 8395041, 8526112, 8526113, 8395168, 8395169, 8526240, 8526241, 0, 65536, 67108864, 67174400, 2, 65538, 67108866, 67174402, 512, 66048, 67109376, 67174912, 514, 66050, 67109378, 67174914, 524288, 589824, 67633152, 67698688, 524290, 589826, 67633154, 67698690, 524800, 590336, 67633664, 67699200, 524802, 590338, 67633666, 67699202, 33554432, 33619968, 100663296, 100728832, 33554434, 33619970, 100663298, 100728834, 33554944, 33620480, 100663808, 100729344, 33554946, 33620482, 100663810, 100729346, 34078720, 34144256, 101187584, 101253120, 34078722, 34144258, 101187586, 101253122, 34079232, 34144768, 101188096, 101253632, 34079234, 34144770, 101188098, 101253634, 16, 65552, 67108880, 67174416, 18, 65554, 67108882, 67174418, 528, 66064, 67109392, 67174928, 530, 66066, 67109394, 67174930, 524304, 589840, 67633168, 67698704, 524306, 589842, 67633170, 67698706, 524816, 590352, 67633680, 67699216, 524818, 590354, 67633682, 67699218, 33554448, 33619984, 100663312, 100728848, 33554450, 33619986, 100663314, 100728850, 33554960, 33620496, 100663824, 100729360, 33554962, 33620498, 100663826, 100729362, 34078736, 34144272, 101187600, 101253136, 34078738, 34144274, 101187602, 101253138, 34079248, 34144784, 101188112, 101253648, 34079250, 34144786, 101188114, 101253650, 32768, 98304, 67141632, 67207168, 32770, 98306, 67141634, 67207170, 33280, 98816, 67142144, 67207680, 33282, 98818, 67142146, 67207682, 557056, 622592, 67665920, 67731456, 557058, 622594, 67665922, 67731458, 557568, 623104, 67666432, 67731968, 557570, 623106, 67666434, 67731970, 33587200, 33652736, 100696064, 100761600, 33587202, 33652738, 100696066, 100761602, 33587712, 33653248, 100696576, 100762112, 33587714, 33653250, 100696578, 100762114, 34111488, 34177024, 101220352, 101285888, 34111490, 34177026, 101220354, 101285890, 34112000, 34177536, 101220864, 101286400, 34112002, 34177538, 101220866, 101286402, 32784, 98320, 67141648, 67207184, 32786, 98322, 67141650, 67207186, 33296, 98832, 67142160, 67207696, 33298, 98834, 67142162, 67207698, 557072, 622608, 67665936, 67731472, 557074, 622610, 67665938, 67731474, 557584, 623120, 67666448, 67731984, 557586, 623122, 67666450, 67731986, 33587216, 33652752, 100696080, 100761616, 33587218, 33652754, 100696082, 100761618, 33587728, 33653264, 100696592, 100762128, 33587730, 33653266, 100696594, 100762130, 34111504, 34177040, 101220368, 101285904, 34111506, 34177042, 101220370, 101285906, 34112016, 34177552, 101220880, 101286416, 34112018, 34177554, 101220882, 101286418, 0, 18014398509481984, 8796093022208, 18023194602504192, 68719476736, 18014467228958720, 8864812498944, 18023263321980928, 536870912, 18014399046352896, 8796629893120, 18023195139375104, 69256347648, 18014467765829632, 8865349369856, 18023263858851840, 562949953421312, 18577348462903296, 571746046443520, 18586144555925504, 563018672898048, 18577417182380032, 571814765920256, 18586213275402240, 562950490292224, 18577348999774208, 571746583314432, 18586145092796416, 563019209768960, 18577417719250944, 571815302791168, 18586213812273152, 1099511627776, 18015498021109760, 9895604649984, 18024294114131968, 1168231104512, 18015566740586496, 9964324126720, 18024362833608704, 1100048498688, 18015498557980672, 9896141520896, 18024294651002880, 1168767975424, 18015567277457408, 9964860997632, 18024363370479616, 564049465049088, 18578447974531072, 572845558071296, 18587244067553280, 564118184525824, 18578516694007808, 572914277548032, 18587312787030016, 564050001920000, 18578448511401984, 572846094942208, 18587244604424192, 564118721396736, 18578517230878720, 572914814418944, 18587313323900928, 281474976710656, 18295873486192640, 290271069732864, 18304669579214848, 281543696187392, 18295942205669376, 290339789209600, 18304738298691584, 281475513581568, 18295874023063552, 290271606603776, 18304670116085760, 281544233058304, 18295942742540288, 290340326080512, 18304738835562496, 844424930131968, 18858823439613952, 853221023154176, 18867619532636160, 844493649608704, 18858892159090688, 853289742630912, 18867688252112896, 844425467002880, 18858823976484864, 853221560025088, 18867620069507072, 844494186479616, 18858892695961600, 853290279501824, 18867688788983808, 282574488338432, 18296972997820416, 291370581360640, 18305769090842624, 282643207815168, 18297041717297152, 291439300837376, 18305837810319360, 282575025209344, 18296973534691328, 291371118231552, 18305769627713536, 282643744686080, 18297042254168064, 291439837708288, 18305838347190272, 845524441759744, 18859922951241728, 854320534781952, 18868719044263936, 845593161236480, 18859991670718464, 854389254258688, 18868787763740672, 845524978630656, 18859923488112640, 854321071652864, 18868719581134848, 845593698107392, 18859992207589376, 854389791129600, 18868788300611584, 1073741824, 18014399583223808, 8797166764032, 18023195676246016, 69793218560, 18014468302700544, 8865886240768, 18023264395722752, 1610612736, 18014400120094720, 8797703634944, 18023196213116928, 70330089472, 18014468839571456, 8866423111680, 18023264932593664, 562951027163136, 18577349536645120, 571747120185344, 18586145629667328, 563019746639872, 18577418256121856, 571815839662080, 18586214349144064, 562951564034048, 18577350073516032, 571747657056256, 18586146166538240, 563020283510784, 18577418792992768, 571816376532992, 18586214886014976, 1100585369600, 18015499094851584, 9896678391808, 18024295187873792, 1169304846336, 18015567814328320, 9965397868544, 18024363907350528, 1101122240512, 18015499631722496, 9897215262720, 18024295724744704, 1169841717248, 18015568351199232, 9965934739456, 18024364444221440, 564050538790912, 18578449048272896, 572846631813120, 18587245141295104, 564119258267648, 18578517767749632, 572915351289856, 18587313860771840, 564051075661824, 18578449585143808, 572847168684032, 18587245678166016, 564119795138560, 18578518304620544, 572915888160768, 18587314397642752, 281476050452480, 18295874559934464, 290272143474688, 18304670652956672, 281544769929216, 18295943279411200, 290340862951424, 18304739372433408, 281476587323392, 18295875096805376, 290272680345600, 18304671189827584, 281545306800128, 18295943816282112, 290341399822336, 18304739909304320, 844426003873792, 18858824513355776, 853222096896000, 18867620606377984, 844494723350528, 18858893232832512, 853290816372736, 18867689325854720, 844426540744704, 18858825050226688, 853222633766912, 18867621143248896, 844495260221440, 18858893769703424, 853291353243648, 18867689862725632, 282575562080256, 18296974071562240, 291371655102464, 18305770164584448, 282644281556992, 18297042791038976, 291440374579200, 18305838884061184, 282576098951168, 18296974608433152, 291372191973376, 18305770701455360, 282644818427904, 18297043327909888, 291440911450112, 18305839420932096, 845525515501568, 18859924024983552, 854321608523776, 18868720118005760, 845594234978304, 18859992744460288, 854390328000512, 18868788837482496, 845526052372480, 18859924561854464, 854322145394688, 18868720654876672, 845594771849216, 18859993281331200, 854390864871424, 18868789374353408, 0, 4503599627370496, 17592186044416, 4521191813414912, 137438953472, 4503737066323968, 17729624997888, 4521329252368384, 8589934592, 4503608217305088, 17600775979008, 4521200403349504, 146028888064, 4503745656258560, 17738214932480, 4521337842302976, 70368744177664, 4573968371548160, 87960930222080, 4591560557592576, 70506183131136, 4574105810501632, 88098369175552, 4591697996546048, 70377334112256, 4573976961482752, 87969520156672, 4591569147527168, 70514773065728, 4574114400436224, 88106959110144, 4591706586480640, 34359738368, 4503633987108864, 17626545782784, 4521226173153280, 171798691840, 4503771426062336, 17763984736256, 4521363612106752, 42949672960, 4503642577043456, 17635135717376, 4521234763087872, 180388626432, 4503780015996928, 17772574670848, 4521372202041344, 70403103916032, 4574002731286528, 87995289960448, 4591594917330944, 70540542869504, 4574140170240000, 88132728913920, 4591732356284416, 70411693850624, 4574011321221120, 88003879895040, 4591603507265536, 70549132804096, 4574148760174592, 88141318848512, 4591740946219008, 1125899906842624, 5629499534213120, 1143492092887040, 5647091720257536, 1126037345796096, 5629636973166592, 1143629531840512, 5647229159211008, 1125908496777216, 5629508124147712, 1143500682821632, 5647100310192128, 1126045935730688, 5629645563101184, 1143638121775104, 5647237749145600, 1196268651020288, 5699868278390784, 1213860837064704, 5717460464435200, 1196406089973760, 5700005717344256, 1213998276018176, 5717597903388672, 1196277240954880, 5699876868325376, 1213869426999296, 5717469054369792, 1196414679908352, 5700014307278848, 1214006865952768, 5717606493323264, 1125934266580992, 5629533893951488, 1143526452625408, 5647126079995904, 1126071705534464, 5629671332904960, 1143663891578880, 5647263518949376, 1125942856515584, 5629542483886080, 1143535042560000, 5647134669930496, 1126080295469056, 5629679922839552, 1143672481513472, 5647272108883968, 1196303010758656, 5699902638129152, 1213895196803072, 5717494824173568, 1196440449712128, 5700040077082624, 1214032635756544, 5717632263127040, 1196311600693248, 5699911228063744, 1213903786737664, 5717503414108160, 1196449039646720, 5700048667017216, 1214041225691136, 5717640853061632, 2199023255552, 4505798650626048, 19791209299968, 4523390836670464, 2336462209024, 4505936089579520, 19928648253440, 4523528275623936, 2207613190144, 4505807240560640, 19799799234560, 4523399426605056, 2345052143616, 4505944679514112, 19937238188032, 4523536865558528, 72567767433216, 4576167394803712, 90159953477632, 4593759580848128, 72705206386688, 4576304833757184, 90297392431104, 4593897019801600, 72576357367808, 4576175984738304, 90168543412224, 4593768170782720, 72713796321280, 4576313423691776, 90305982365696, 4593905609736192, 2233382993920, 4505833010364416, 19825569038336, 4523425196408832, 2370821947392, 4505970449317888, 19963007991808, 4523562635362304, 2241972928512, 4505841600299008, 19834158972928, 4523433786343424, 2379411881984, 4505979039252480, 19971597926400, 4523571225296896, 72602127171584, 4576201754542080, 90194313216000, 4593793940586496, 72739566125056, 4576339193495552, 90331752169472, 4593931379539968, 72610717106176, 4576210344476672, 90202903150592, 4593802530521088, 72748156059648, 4576347783430144, 90340342104064, 4593939969474560, 1128098930098176, 5631698557468672, 1145691116142592, 5649290743513088, 1128236369051648, 5631835996422144, 1145828555096064, 5649428182466560, 1128107520032768, 5631707147403264, 1145699706077184, 5649299333447680, 1128244958986240, 5631844586356736, 1145837145030656, 5649436772401152, 1198467674275840, 5702067301646336, 1216059860320256, 5719659487690752, 1198605113229312, 5702204740599808, 1216197299273728, 5719796926644224, 1198476264210432, 5702075891580928, 1216068450254848, 5719668077625344, 1198613703163904, 5702213330534400, 1216205889208320, 5719805516578816, 1128133289836544, 5631732917207040, 1145725475880960, 5649325103251456, 1128270728790016, 5631870356160512, 1145862914834432, 5649462542204928, 1128141879771136, 5631741507141632, 1145734065815552, 5649333693186048, 1128279318724608, 5631878946095104, 1145871504769024, 5649471132139520, 1198502034014208, 5702101661384704, 1216094220058624, 5719693847429120, 1198639472967680, 5702239100338176, 1216231659012096, 5719831286382592, 1198510623948800, 5702110251319296, 1216102809993216, 5719702437363712, 1198648062902272, 5702247690272768, 1216240248946688, 5719839876317184, 0, 268435456, 9007199254740992, 9007199523176448, 2251799813685248, 2251800082120704, 11258999068426240, 11258999336861696, 36028797018963968, 36028797287399424, 45035996273704960, 45035996542140416, 38280596832649216, 38280597101084672, 47287796087390208, 47287796355825664, 4294967296, 4563402752, 9007203549708288, 9007203818143744, 2251804108652544, 2251804377088000, 11259003363393536, 11259003631828992, 36028801313931264, 36028801582366720, 45036000568672256, 45036000837107712, 38280601127616512, 38280601396051968, 47287800382357504, 47287800650792960, 35184372088832, 35184640524288, 9042383626829824, 9042383895265280, 2286984185774080, 2286984454209536, 11294183440515072, 11294183708950528, 36063981391052800, 36063981659488256, 45071180645793792, 45071180914229248, 38315781204738048, 38315781473173504, 47322980459479040, 47322980727914496, 35188667056128, 35188935491584, 9042387921797120, 9042388190232576, 2286988480741376, 2286988749176832, 11294187735482368, 11294188003917824, 36063985686020096, 36063985954455552, 45071184940761088, 45071185209196544, 38315785499705344, 38315785768140800, 47322984754446336, 47322985022881792, 549755813888, 550024249344, 9007749010554880, 9007749278990336, 2252349569499136, 2252349837934592, 11259548824240128, 11259549092675584, 36029346774777856, 36029347043213312, 45036546029518848, 45036546297954304, 38281146588463104, 38281146856898560, 47288345843204096, 47288346111639552, 554050781184, 554319216640, 9007753305522176, 9007753573957632, 2252353864466432, 2252354132901888, 11259553119207424, 11259553387642880, 36029351069745152, 36029351338180608, 45036550324486144, 45036550592921600, 38281150883430400, 38281151151865856, 47288350138171392, 47288350406606848, 35734127902720, 35734396338176, 9042933382643712, 9042933651079168, 2287533941587968, 2287534210023424, 11294733196328960, 11294733464764416, 36064531146866688, 36064531415302144, 45071730401607680, 45071730670043136, 38316330960551936, 38316331228987392, 47323530215292928, 47323530483728384, 35738422870016, 35738691305472, 9042937677611008, 9042937946046464, 2287538236555264, 2287538504990720, 11294737491296256, 11294737759731712, 36064535441833984, 36064535710269440, 45071734696574976, 45071734965010432, 38316335255519232, 38316335523954688, 47323534510260224, 47323534778695680, 4398046511104, 4398314946560, 9011597301252096, 9011597569687552, 2256197860196352, 2256198128631808, 11263397114937344, 11263397383372800, 36033195065475072, 36033195333910528, 45040394320216064, 45040394588651520, 38284994879160320, 38284995147595776, 47292194133901312, 47292194402336768, 4402341478400, 4402609913856, 9011601596219392, 9011601864654848, 2256202155163648, 2256202423599104, 11263401409904640, 11263401678340096, 36033199360442368, 36033199628877824, 45040398615183360, 45040398883618816, 38284999174127616, 38284999442563072, 47292198428868608, 47292198697304064, 39582418599936, 39582687035392, 9046781673340928, 9046781941776384, 2291382232285184, 2291382500720640, 11298581487026176, 11298581755461632, 36068379437563904, 36068379705999360, 45075578692304896, 45075578960740352, 38320179251249152, 38320179519684608, 47327378505990144, 47327378774425600, 39586713567232, 39586982002688, 9046785968308224, 9046786236743680, 2291386527252480, 2291386795687936, 11298585781993472, 11298586050428928, 36068383732531200, 36068384000966656, 45075582987272192, 45075583255707648, 38320183546216448, 38320183814651904, 47327382800957440, 47327383069392896, 4947802324992, 4948070760448, 9012147057065984, 9012147325501440, 2256747616010240, 2256747884445696, 11263946870751232, 11263947139186688, 36033744821288960, 36033745089724416, 45040944076029952, 45040944344465408, 38285544634974208, 38285544903409664, 47292743889715200, 47292744158150656, 4952097292288, 4952365727744, 9012151352033280, 9012151620468736, 2256751910977536, 2256752179412992, 11263951165718528, 11263951434153984, 36033749116256256, 36033749384691712, 45040948370997248, 45040948639432704, 38285548929941504, 38285549198376960, 47292748184682496, 47292748453117952, 40132174413824, 40132442849280, 9047331429154816, 9047331697590272, 2291931988099072, 2291932256534528, 11299131242840064, 11299131511275520, 36068929193377792, 36068929461813248, 45076128448118784, 45076128716554240, 38320729007063040, 38320729275498496, 47327928261804032, 47327928530239488, 40136469381120, 40136737816576, 9047335724122112, 9047335992557568, 2291936283066368, 2291936551501824, 11299135537807360, 11299135806242816, 36068933488345088, 36068933756780544, 45076132743086080, 45076133011521536, 38320733302030336, 38320733570465792, 47327932556771328, 47327932825206784)
SBOX_K = ((14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13), (15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9), (10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12), (7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14), (2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3), (12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13), (4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12), (13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11))
left_shifts = (0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0)
keys = (15875572414232025324, 4751894623065203014, 2529872801794835341, 13993765548371543962, 13416755832337717594, 12130545555317106900, 8546599214406469137, 17663607285594517639, 13997742765014524775, 13396602353867257750, 4822366399923685115, 9938348269738107996, 4682379096501175098, 17295442410506864532, 10126882495717451451, 6318891039452123315, 9577444061975546597, 3551090811345344189, 5124232691400900037, 12780691601101500259, 14560542894458493404, 6781050019369676859, 15440824727120445788, 2646524055078675957, 10340191229013684265, 6175889514960966632, 14589793957555542580, 14265798105578142981, 10496299851528383138, 1673941602359060947, 12457797630805936798, 5403674698641749417, 9622532320553866056, 17370012232119283780, 6290576329329722011, 17925490021925618381, 7470738222456663623, 10109125153128483574, 9654570476655551236, 6782606558515080387, 12599216227562552247, 3176277794713328180, 9299976837204979973, 12446969999102878458, 6327782990052761193, 1968582272839019336, 12896965942543193744, 17625759342293271525, 6623031307106419027, 7840906065074638932, 8171300499663138712, 17466411193246296202, 8089840276266082213, 16560686158962356140, 13625499817957750513, 8898153815849317051, 16130445128145526883, 7400552633665060410, 4869446370559749919, 8011291917942766415, 16227898552230552292, 7632864242467792876, 5036666000833534109, 4077630963607406879)
pts = (5001005247085758579, 2245463110619682731, 35011482615031800, 1114119030478631523, 18115269021817231287, 7000152231312204567, 13667172193821122758, 14127261529459164737, 1905266638534399137, 9385043134716455575, 15532814201731698218, 11111168285037334356, 17942983143933786947, 9654491825700945894, 7310766990858037345, 13161836541872390293, 9080767504941825792, 10361217086521049040, 1305864822924943016, 3104241778062688965, 9312282330647496228, 16188852780279796210, 9093866940495283536, 5745187328111018265, 3966297851433713948, 1799245932296632083, 1340091586322163936, 6754394895907979895, 7686752340268939819, 10213860971268924275, 18389974725313153455, 7732679677798854985, 9946248639545613234, 475947844427849173, 18351141931636206478, 11315649493583915014, 5666457988152415277, 5539108900392680940, 3323911762935645548, 3455452699083614393, 17743700969384926700, 5087194355679351523, 5762237383443535346, 7175364512302678452, 14936732873416670755, 2696164682582741374, 7171009696373597332, 4481767002268297966, 3901681673003634165, 8025587892981238450, 709377645118799060, 13391923707598319221, 13204470968535225129, 9262047695153392985, 10918540333776111852, 3137974352002555377, 5486225456525261926, 4733008752670418819, 9079190530308913942, 1349064953915608628, 15026549141309665379, 1883734462129733848, 2685700332754987224, 12427512789953747877)
cts = (13277957157595732414, 9716474002895064634, 6249229006458122683, 771315841116446929, 16729303538494391690, 17418040705482520202, 14008761039991615776, 872277659343133958, 14202484464478084884, 3416599470104779143, 13508474842563861604, 7858089103291818625, 15257195183227519304, 17335817958334062478, 696712308830179302, 3331166871529349549, 11269350548184572498, 7252586694171245662, 15880972847328004824, 8497421722514628659, 16656391494693967884, 12576779427178239028, 5516867553848255767, 1461989758296429240, 7833503067836187039, 8064163987634288281, 4209441899865669620, 7553353872603688488, 17996319365788125575, 17567432336343687989, 14345648102322474029, 6905598625532032440, 2646864515286579306, 6501960874303289352, 15539881408696401277, 6475229497214528762, 11201722479438274702, 15667320946329090597, 17381203624221067253, 11678418154153820500, 16596411258911306470, 2503503385507141305, 3316194388416459135, 13491739731856042585, 6130609910844569168, 4431994733613785304, 12259653946804096875, 3813587737594830471, 17383094792580398502, 11296090842937401597, 15132635082854705093, 17493667206227628694, 6584558218104252435, 8635263610884550673, 6934132176580118834, 12758658360502291178, 3984225675656617610, 3158831349361133177, 3409588099976832825, 2278695338421288971, 1344985620588775226, 8618945852227522726, 917174834701982627, 1424318996578969176)
def permute(val, table, name):
8180def permute(val, table, name):
8181    '''Permutate val with permutation table named name, internal, do not use.'''
8182
8183    res = 0
8184    tmp = val
8185    b = len(table) // 256
8186    assert (tmp >> 8*b) == 0, '\nInvalid input value for {name} permutation: 0x{value:016x}'.format(name=name, value=val)
8187    for i in range(b):
8188        idx = i*256 + (tmp & 0xff)
8189        res |= table[idx]
8190        tmp >>= 8
8191    return res

Permutate val with permutation table named name, internal, do not use.

def ip(val):
8193def ip(val):
8194    """
8195Initial permutation (64 to 64 bits). Same as n_fp().
8196
8197Args:
8198    val (long): 64 bits input
8199
8200Returns:
8201    The permutated input as a 64 bits integer
8202
8203"""
8204    return permute(val, IP_K, "IP")

Initial permutation (64 to 64 bits). Same as n_fp().

Args: val (long): 64 bits input

Returns: The permutated input as a 64 bits integer

def n_ip(val):
8206def n_ip(val):
8207    """
8208Inverse of initial permutation (64 to 64 bits). Same as fp().
8209
8210Args:
8211    val (long): 64 bits input
8212
8213Returns:
8214    The permutated input as a 64 bits integer
8215
8216"""
8217    return permute(val, N_IP_K, "N_IP")

Inverse of initial permutation (64 to 64 bits). Same as fp().

Args: val (long): 64 bits input

Returns: The permutated input as a 64 bits integer

def fp(val):
8219def fp(val):
8220    """
8221Final permutation (64 to 64 bits). Inverse of initial permutation, same as n_ip().
8222
8223Args:
8224    val (long): 64 bits input
8225
8226Returns:
8227    The permutated input as a 64 bits integer
8228
8229"""
8230    return permute(val, N_IP_K, "FP")

Final permutation (64 to 64 bits). Inverse of initial permutation, same as n_ip().

Args: val (long): 64 bits input

Returns: The permutated input as a 64 bits integer

def n_fp(val):
8232def n_fp(val):
8233    """
8234Inverse of final permutation (64 to 64 bits). Same as ip().
8235
8236Args:
8237    val (long): 64 bits input
8238
8239Returns:
8240    The permutated input as a 64 bits integer
8241
8242"""
8243    return permute(val, IP_K, "N_FP")

Inverse of final permutation (64 to 64 bits). Same as ip().

Args: val (long): 64 bits input

Returns: The permutated input as a 64 bits integer

def e(val):
8245def e(val):
8246    """
8247E expansion - permutation (32 to 48 bits).
8248
8249Args:
8250    val (long): 32 bits input
8251
8252Returns:
8253    The expanded and permutated input as a 48 bits integer
8254
8255"""
8256    return permute(val, E_K, "E")

E expansion - permutation (32 to 48 bits).

Args: val (long): 32 bits input

Returns: The expanded and permutated input as a 48 bits integer

def n_e(val):
8258def n_e(val):
8259    """
8260Inverse of E expansion - permutation (48 to 32 bits).
8261
8262Duplicated bits must have the same value. If they do not, an error is raised.
8263
8264Args:
8265    val (long): 48 bits input
8266
8267Returns:
8268    The permutated and selected input as a 32 bits integer
8269"""
8270    tmp = (val << 2) | (val >> 46)
8271    assert (tmp & 0x0c30c30c30c3) == ((tmp >> 2) & 0x0c30c30c30c3), '\nInvalid input value for N_E permutation: 0x{value:016x}'.format(value=val);
8272    return permute(val, N_E_K, "N_E")

Inverse of E expansion - permutation (48 to 32 bits).

Duplicated bits must have the same value. If they do not, an error is raised.

Args: val (long): 48 bits input

Returns: The permutated and selected input as a 32 bits integer

def p(val):
8274def p(val):
8275    """
8276P permutation (32 to 32 bits).
8277
8278Args:
8279    val (long): 32 bits input
8280
8281Returns:
8282    The permutated input as a 32 bits integer
8283
8284"""
8285    return permute(val, P_K, "P")

P permutation (32 to 32 bits).

Args: val (long): 32 bits input

Returns: The permutated input as a 32 bits integer

def n_p(val):
8287def n_p(val):
8288    """
8289Inverse of P permutation (32 to 32 bits).
8290
8291Args:
8292    val (long): 32 bits input
8293
8294Returns:
8295    The permutated input as a 32 bits integer
8296
8297"""
8298    return permute(val, N_P_K, "N_P")

Inverse of P permutation (32 to 32 bits).

Args: val (long): 32 bits input

Returns: The permutated input as a 32 bits integer

def hamming_weight(v):
8300def hamming_weight(v):
8301    """
8302Hamming weight.
8303
8304Args:
8305    val: N-bits input
8306
8307Returns:
8308    The Hamming weight of the input (number of 1's)
8309
8310"""
8311    v = v - ((v>>1) & 0x5555555555555555)
8312    v = (v & 0x3333333333333333) + ((v>>2) & 0x3333333333333333)
8313    return (((v + (v>>4) & 0xF0F0F0F0F0F0F0F) * 0x101010101010101) >> 56) & 0xFF

Hamming weight.

Args: val: N-bits input

Returns: The Hamming weight of the input (number of 1's)

def pc1(val):
8315def pc1(val):
8316    """
8317PC1 permutation - selection (64 to 56 bits). No parity check.
8318
8319Args:
8320    val (long): 64 bits input
8321
8322Returns:
8323    The permutated and selected input as a 56 bits integer
8324
8325"""
8326    return permute(val, PC1_K, "PC1")

PC1 permutation - selection (64 to 56 bits). No parity check.

Args: val (long): 64 bits input

Returns: The permutated and selected input as a 56 bits integer

def set_parity_bits(val):
8328def set_parity_bits(val):
8329    """
8330Computes the 8 parity bits of a 64 bits word.
8331
8332Parity bits are the rightmost bit of each byte. Once computed, the number of
8333set bits of each byte is odd, as specified in the DES standard.
8334
8335Args:
8336    val (long): 64 bits input
8337
8338Returns:
8339    The input with odd parity bits, as a 64 bits integer
8340
8341"""
8342    res = 0
8343    mask1 = 0xfe
8344    mask2 = 0x1
8345    for i in range(8):
8346        tmp = val & mask1
8347        if hamming_weight(tmp) % 2 == 0:
8348            tmp |= mask2
8349        res |= tmp
8350        mask1 <<= 8
8351        mask2 <<= 8
8352    return res

Computes the 8 parity bits of a 64 bits word.

Parity bits are the rightmost bit of each byte. Once computed, the number of set bits of each byte is odd, as specified in the DES standard.

Args: val (long): 64 bits input

Returns: The input with odd parity bits, as a 64 bits integer

def n_pc1(val):
8354def n_pc1(val):
8355    """
8356Inverse of PC1 permutation - selection (56 to 64 bits).
8357
8358Parity bits are computed.
8359
8360Args:
8361    val (long): 56 bits input
8362
8363Returns:
8364    The permutated and expanded input as a 64 bits integer
8365
8366"""
8367    res = permute(val, N_PC1_K, "N_PC1")
8368    return set_parity_bits(res)

Inverse of PC1 permutation - selection (56 to 64 bits).

Parity bits are computed.

Args: val (long): 56 bits input

Returns: The permutated and expanded input as a 64 bits integer

def pc2(val):
8370def pc2(val):
8371    """
8372PC2 permutation - selection (56 to 48 bits). No parity check.
8373
8374Args:
8375    val (long): 56 bits input
8376
8377Returns:
8378    The permutated and selected input as a 48 bits integer
8379
8380"""
8381    return permute(val, PC2_K, "PC2")

PC2 permutation - selection (56 to 48 bits). No parity check.

Args: val (long): 56 bits input

Returns: The permutated and selected input as a 48 bits integer

def n_pc2(val):
8383def n_pc2(val):
8384    """
8385Inverse of PC2 permutation - selection (48 to 56 bits). Missing
8386bits are set to 0.
8387
8388Args:
8389    val (long): 48 bits input
8390
8391Returns:
8392    The permutated and expanded input as a 56 bits integer
8393
8394"""
8395    return permute(val, N_PC2_K, "N_PC2")

Inverse of PC2 permutation - selection (48 to 56 bits). Missing bits are set to 0.

Args: val (long): 48 bits input

Returns: The permutated and expanded input as a 56 bits integer

def sbox(sbox, val):
8397def sbox(sbox, val):
8398    """"
8399Single SBox computation (6 to 4 bits).
8400
8401Args:
8402    sbox (int): SBox number, from 1 to 8
8403    val (long): 6 bits input
8404
8405Returns:
8406    The 4 bits output of SBox number `sbox` corresponding to the
8407    6 bits input, as a 4 bits integer
8408
8409"""
8410    assert (sbox >= 1 and sbox <= 8), '\nInvalid sbox number: {value:d}'.format(value=sbox)
8411    assert (val <= 0x3f), '\nInvalid sbox input value: 0x{value:016x}'.format(value=val)
8412    return SBOX_K[sbox - 1][val]

" Single SBox computation (6 to 4 bits).

Args: sbox (int): SBox number, from 1 to 8 val (long): 6 bits input

Returns: The 4 bits output of SBox number sbox corresponding to the 6 bits input, as a 4 bits integer

def sboxes(val):
8414def sboxes(val):
8415    """
8416All SBoxes computation (48 to 32 bits).
8417
8418Args:
8419    val (long): 48 bits input
8420
8421Returns:
8422    The 32 bits output of all SBoxes corresponding to the 48 bits
8423    input, as a 32 bits integer
8424
8425"""
8426    assert (val >> 48) == 0, '\nInvalid sboxes input value: 0x{value:016x}'.format(value=val)
8427    res = 0
8428    for i in range(1, 9):
8429        res = (res << 4) | sbox(i, (val >> ((8 - i) * 6)) & 0x3f)
8430    return res

All SBoxes computation (48 to 32 bits).

Args: val (long): 48 bits input

Returns: The 32 bits output of all SBoxes corresponding to the 48 bits input, as a 32 bits integer

def right_half(val):
8432def right_half(val):
8433    """
8434Returns the 32 bits right half of a 64 bits word.
8435
8436Args:
8437    val (long): 64 bits input
8438
8439Returns:
8440    The 32 bits right half of a 64 bits word, as a 32 bits integer
8441
8442"""
8443    return val & 0xffffffff

Returns the 32 bits right half of a 64 bits word.

Args: val (long): 64 bits input

Returns: The 32 bits right half of a 64 bits word, as a 32 bits integer

def left_half(val):
8445def left_half(val):
8446    """
8447Returns the 32 bits left half of a 64 bits word.
8448
8449Args:
8450    val (long): 64 bits input
8451
8452Returns:
8453    The 32 bits left half of a 64 bits word, as a 32 bits integer
8454
8455"""
8456    return val >> 32

Returns the 32 bits left half of a 64 bits word.

Args: val (long): 64 bits input

Returns: The 32 bits left half of a 64 bits word, as a 32 bits integer

def ls(val):
8458def ls(val):
8459    """
8460Applies the **left shift** rotation of the standard (56 to 56 bits).
8461
8462Args:
8463    val (long): 56 bits input
8464
8465Returns:
8466    The rotated input, as a 56 bits integer
8467
8468"""
8469    assert (val >> 56) == 0, '\nInvalid left shift input value: 0x{value:016x}'.format(value=val)
8470    c = val & 0xfffffff0000000
8471    d = val & 0xfffffff
8472    c = ((c << 1) | (c >> 27)) & 0xfffffff0000000
8473    d = ((d << 1) | (d >> 27)) & 0xfffffff
8474    return c | d

Applies the left shift rotation of the standard (56 to 56 bits).

Args: val (long): 56 bits input

Returns: The rotated input, as a 56 bits integer

def rs(val):
8476def rs(val):
8477    """
8478Applies the **right shift** rotation of the standard (56 to 56 bits).
8479
8480Args:
8481    val (long): 56 bits input
8482
8483Returns:
8484    The rotated input, as a 56 bits integer
8485
8486"""
8487    assert (val >> 56) == 0, '\nInvalid right shift input value: 0x{value:016x}'.format(value=val)
8488    c = val & 0xfffffff0000000
8489    d = val & 0xfffffff
8490    c = ((c >> 1) | (c << 27)) & 0xfffffff0000000
8491    d = ((d >> 1) | (d << 27)) & 0xfffffff
8492    return c | d

Applies the right shift rotation of the standard (56 to 56 bits).

Args: val (long): 56 bits input

Returns: The rotated input, as a 56 bits integer

def f(rk, val):
8494def f(rk, val):
8495    """
8496The F function of the standard (48+32 bits to 32 bits).
8497
8498Args:
8499    rk (long): 48 bits round key
8500    val (long): 32 bits data input
8501
8502Returns:
8503    The transformed input as a 32 bits integer
8504
8505"""
8506    assert (val >> 32) == 0, '\nInvalid R input value for F function: 0x{value:016x}'.format(value=val)
8507    assert (rk >> 48) == 0, '\nInvalid RK input value for F function: 0x{value:016x}'.format(value=rk)
8508    return p (sboxes (e (val) ^ rk))

The F function of the standard (48+32 bits to 32 bits).

Args: rk (long): 48 bits round key val (long): 32 bits data input

Returns: The transformed input as a 32 bits integer

def key_schedule(val):
8510def key_schedule(val):
8511    """
8512Computes the whole key schedule from a 64 bits secret key and
8513stores the sixteen 48 bits round keys in a list.
8514
8515Args:
8516    val (long): 64 bits key
8517
8518Returns:
8519    The sixteen 48 bits round keys in a list
8520
8521"""
8522    ks = [0 for i in range(16)]
8523    cd = pc1(val)
8524    for i in range(16):
8525        cd = ls(cd)
8526        if (left_shifts[i] == 1):
8527            cd = ls(cd)
8528        ks[i] = pc2(cd)
8529    return ks

Computes the whole key schedule from a 64 bits secret key and stores the sixteen 48 bits round keys in a list.

Args: val (long): 64 bits key

Returns: The sixteen 48 bits round keys in a list

def enc(ks, val):
8531def enc(ks, val):
8532    """
8533Enciphers a 64 bits plaintext with a pre-computed key schedule.
8534
8535Args:
8536    ks (List[long]): The pre-computed key schedule
8537    val (long): The 64 bits plaintext
8538
8539Returns:
8540    The enciphered plaintext as a 64 bits integer
8541
8542"""
8543    lr = ip(val)
8544    r = right_half(lr)
8545    l = left_half(lr)
8546    for i in range(16):
8547        tmp = r
8548        r = l ^ f(ks[i], r)
8549        l = tmp
8550    return fp ((r << 32) | l)

Enciphers a 64 bits plaintext with a pre-computed key schedule.

Args: ks (List[long]): The pre-computed key schedule val (long): The 64 bits plaintext

Returns: The enciphered plaintext as a 64 bits integer

def dec(ks, val):
8552def dec(ks, val):
8553    """
8554Deciphers a 64 bits ciphertext with a pre-computed key schedule.
8555
8556Args:
8557    ks (List[long]): The pre-computed key schedule
8558    val (long): The 64 bits ciphertext
8559
8560Returns:
8561    The deciphered ciphertext as a 64 bits integer
8562
8563"""
8564    lr = ip(val)
8565    r = right_half(lr)
8566    l = left_half(lr)
8567    for i in range(15, -1, -1):
8568        tmp = r
8569        r = l ^ f(ks[i], r)
8570        l = tmp
8571    return fp((r << 32) | l)

Deciphers a 64 bits ciphertext with a pre-computed key schedule.

Args: ks (List[long]): The pre-computed key schedule val (long): The 64 bits ciphertext

Returns: The deciphered ciphertext as a 64 bits integer

def check():
8573def check():
8574    """
8575A functional verification of the DES implementation. Runs a
8576number of encipherments with enc() and the corresponding
8577decipherments with dec() and checks the results against
8578pre-computed plaintexts, ciphertexts and secret keys.
8579
8580Returns:
8581    `True` on success, `False` on errors
8582
8583"""
8584    ok = 1
8585    for i in range(NUM_TEST_VECTORS):
8586        ks = key_schedule(keys[i])
8587        tmp = enc(ks, pts[i])
8588        if tmp != cts[i]:
8589            print('encryption {i:2d}\nk=0x{k:016x} p=0x{p:016x} o=0x{o:016x} act=0x{act:016x}\n'.format(i=i+1, k=keys[i], p=pts[i], o=cts[i], act=tmp), file=sys.stderr)
8590            ok = 0
8591        tmp = dec(ks, cts[i])
8592        if tmp != pts[i]:
8593            print('decryption {i:2d}\nk=0x{k:016x} c=0x{c:016x} o=0x{o:016x} act=0x{act:016x}\n'.format(i=i+1, k=keys[i], c=cts[i], o=pts[i], act=tmp), file=sys.stderr)
8594            ok = 0
8595    return ok

A functional verification of the DES implementation. Runs a number of encipherments with enc() and the corresponding decipherments with dec() and checks the results against pre-computed plaintexts, ciphertexts and secret keys.

Returns: True on success, False on errors