diff --git a/python/tflite_micro/python_ops_resolver.cc b/python/tflite_micro/python_ops_resolver.cc index e6f9cf7f290..a47a2613004 100644 --- a/python/tflite_micro/python_ops_resolver.cc +++ b/python/tflite_micro/python_ops_resolver.cc @@ -53,6 +53,10 @@ PythonOpsResolver::PythonOpsResolver() { AddExpandDims(); AddFftAutoScale(); AddFill(); + AddFilterBank(); + AddFilterBankLog(); + AddFilterBankSquareRoot(); + AddFilterBankSpectralSubtraction(); AddFloor(); AddFloorDiv(); AddFloorMod(); diff --git a/python/tflite_micro/signal/BUILD b/python/tflite_micro/signal/BUILD index 742fd4ecc45..2bf5a94ccc0 100644 --- a/python/tflite_micro/signal/BUILD +++ b/python/tflite_micro/signal/BUILD @@ -18,8 +18,10 @@ cc_library( ":delay_op_cc", ":energy_op_cc", ":fft_ops_cc", + ":filter_bank_ops_cc", ":framer_op_cc", ":overlap_add_op_cc", + ":stacker_op_cc", ":window_op_cc", ], ) @@ -36,8 +38,10 @@ py_library( ":delay_op", ":energy_op", ":fft_ops", + ":filter_bank_ops", ":framer_op", ":overlap_add_op", + ":stacker_op", ":window_op", ], ) @@ -117,6 +121,40 @@ py_test( ], ) +py_tflm_signal_library( + name = "filter_bank_ops", + srcs = ["ops/filter_bank_ops.py"], + cc_op_defs = ["//signal/tensorflow_core/ops:filter_bank_ops"], + cc_op_kernels = [ + "//signal/tensorflow_core/kernels:filter_bank_kernels", + ], + deps = [ + "//python/tflite_micro/signal/utils:freq_to_mel", + ], +) + +py_test( + name = "filter_bank_ops_test", + size = "small", + srcs = ["ops/filter_bank_ops_test.py"], + data = [ + "//python/tflite_micro/signal/ops/testdata:filter_bank_accumulation_16k.txt", + "//python/tflite_micro/signal/ops/testdata:filter_bank_accumulation_44k.txt", + "//python/tflite_micro/signal/ops/testdata:filter_bank_accumulation_8k.txt", + "//python/tflite_micro/signal/ops/testdata:filter_bank_spectral_subtraction_test1.txt", + "//python/tflite_micro/signal/ops/testdata:filter_bank_square_root_test1.txt", + "//python/tflite_micro/signal/ops/testdata:filter_bank_test1.txt", + ], + python_version = "PY3", + srcs_version = "PY3", + deps = [ + ":filter_bank_ops", + "//python/tflite_micro/signal/utils:util", + requirement("numpy"), + requirement("tensorflow-cpu"), + ], +) + py_tflm_signal_library( name = "framer_op", srcs = ["ops/framer_op.py"], @@ -167,6 +205,32 @@ py_test( ], ) +py_tflm_signal_library( + name = "stacker_op", + srcs = ["ops/stacker_op.py"], + cc_op_defs = ["//signal/tensorflow_core/ops:stacker_op"], + cc_op_kernels = [ + "//signal/tensorflow_core/kernels:stacker_kernel", + ], +) + +py_test( + name = "stacker_op_test", + size = "small", + srcs = ["ops/stacker_op_test.py"], + data = [ + "//python/tflite_micro/signal/ops/testdata:stacker_test1.txt", + ], + python_version = "PY3", + srcs_version = "PY3", + deps = [ + ":stacker_op", + "//python/tflite_micro/signal/utils:util", + requirement("numpy"), + requirement("tensorflow-cpu"), + ], +) + py_tflm_signal_library( name = "window_op", srcs = ["ops/window_op.py"], diff --git a/python/tflite_micro/signal/ops/filter_bank_ops.py b/python/tflite_micro/signal/ops/filter_bank_ops.py new file mode 100644 index 00000000000..d89ae991f5c --- /dev/null +++ b/python/tflite_micro/signal/ops/filter_bank_ops.py @@ -0,0 +1,351 @@ +# Copyright 2023 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Use filter bank ops in python.""" + +import numpy as np +import tensorflow as tf + +from tflite_micro.python.tflite_micro.signal.utils import util +from tflite_micro.python.tflite_micro.signal.utils.freq_to_mel_wrapper import freq_to_mel + +gen_filter_bank_ops = util.load_custom_op('filter_bank_ops.so') + +# A note about precision: +# The code to calculate center frequencies and weights uses floating point +# extensively. The original speech micro code is written in C and uses +# 32-bit 'float' C types. Python's floating point type is 64-bit by default, +# which resulted in slight differences that made verification harder. +# In order to establish parity with speech micro, and recognizing the slight +# loss in precision, numpy.float32 was used throughout this code instead of +# the default Python 'float' type. For the same reason, the function freq_to_mel +# wraps the same FreqToMel() C function used by Speech Micro. + +FILTER_BANK_ALIGNMENT = 1 +FILTER_BANK_CHANNEL_BLOCK_SIZE = 1 +FILTER_BANK_WEIGHT_SCALING_BITS = 12 + + +def _calc_center_freq(channel_num, lower_freq_limit, upper_freq_limit): + """Calculate the center frequencies of mel spectrum filter banks.""" + if lower_freq_limit < 0: + raise ValueError("Lower frequency limit must be non negative") + if lower_freq_limit > upper_freq_limit: + raise ValueError("Lower frequency limit can't be larger than upper limit") + mel_lower = np.float32(freq_to_mel(lower_freq_limit)) + mel_upper = np.float32(freq_to_mel(upper_freq_limit)) + mel_span = mel_upper - mel_lower + mel_spacing = mel_span / np.float32(channel_num) + channels = np.arange(1, channel_num + 1, dtype=np.float32) + return mel_lower + (mel_spacing * channels) + + +def _quantize_filterbank_weight(float_weight, scale_bits): + """Scale float filterbank weights return the integer weights and unweights.""" + weight = int(float_weight * (1 << scale_bits)) + unweight = int((1 - float_weight) * (1 << scale_bits)) + return weight, unweight + + +def _init_filter_bank_weights(spectrum_size, sample_rate, alignment, + channel_block_size, num_channels, + lower_band_limit, upper_band_limit): + """Initialize mel-spectrum filter bank weights.""" + # How should we align things to index counts given the byte alignment? + item_size = np.dtype("int16").itemsize + if alignment < item_size: + index_alignment = 1 + else: + index_alignment = int(alignment / item_size) + + channel_frequency_starts = np.zeros(num_channels + 1, dtype=np.int16) + channel_weight_starts = np.zeros(num_channels + 1, dtype=np.int16) + channel_widths = np.zeros(num_channels + 1, dtype=np.int16) + + actual_channel_starts = np.zeros(num_channels + 1, dtype=np.int16) + actual_channel_widths = np.zeros(num_channels + 1, dtype=np.int16) + + center_mel_freqs = _calc_center_freq(num_channels + 1, lower_band_limit, + upper_band_limit) + + # (spectrum_size - 1) to exclude DC. Emulate Hidden Markov Model Toolkit (HTK) + hz_per_sbin = (sample_rate / 2) / (spectrum_size - 1) + # (1 + ...) to exclude DC. + start_index = round(1 + (lower_band_limit / hz_per_sbin)) + + # For each channel, we need to figure out what frequencies belong to it, and + # how much padding we need to add so that we can efficiently multiply the + # weights and unweights for accumulation. To simplify the multiplication + # logic, all channels will have some multiplication to do (even if there are + # no frequencies that accumulate to that channel) - they will be directed to + # a set of zero weights. + chan_freq_index_start = start_index + weight_index_start = 0 + needs_zeros = 0 + + for chan in range(num_channels + 1): + # Keep jumping frequencies until we overshoot the bound on this channel. + freq_index = chan_freq_index_start + while freq_to_mel(freq_index * hz_per_sbin) <= center_mel_freqs[chan]: + freq_index += 1 + + width = freq_index - chan_freq_index_start + actual_channel_starts[chan] = chan_freq_index_start + actual_channel_widths[chan] = width + + if width == 0: + # This channel doesn't actually get anything from the frequencies, it's + # always zero. We need then to insert some 'zero' weights into the + # output, and just redirect this channel to do a single multiplication at + # this point. For simplicity, the zeros are placed at the beginning of + # the weights arrays, so we have to go and update all the other + # weight_starts to reflect this shift (but only once). + channel_frequency_starts[chan] = 0 + channel_weight_starts[chan] = 0 + channel_widths[chan] = channel_block_size + if needs_zeros == 0: + needs_zeros = 1 + for j in range(chan): + channel_weight_starts[j] += channel_block_size + weight_index_start += channel_block_size + else: + # How far back do we need to go to ensure that we have the proper + # alignment? + aligned_start = int( + chan_freq_index_start / index_alignment) * index_alignment + aligned_width = (chan_freq_index_start - aligned_start + width) + padded_width = (int( + (aligned_width - 1) / channel_block_size) + 1) * channel_block_size + + channel_frequency_starts[chan] = aligned_start + channel_weight_starts[chan] = weight_index_start + channel_widths[chan] = padded_width + weight_index_start += padded_width + chan_freq_index_start = freq_index + + # Allocate the two arrays to store the weights - weight_index_start contains + # the index of what would be the next set of weights that we would need to + # add, so that's how many weights we need to allocate. + num_weights = weight_index_start + weights = np.zeros(num_weights, dtype=np.int16) + unweights = np.zeros(num_weights, dtype=np.int16) + + # Next pass, compute all the weights. Since everything has been memset to + # zero, we only need to fill in the weights that correspond to some frequency + # for a channel. + end_index = 0 + mel_low = freq_to_mel(lower_band_limit) + for chan in range(num_channels + 1): + frequency = actual_channel_starts[chan] + num_frequencies = actual_channel_widths[chan] + frequency_offset = frequency - channel_frequency_starts[chan] + weight_start = channel_weight_starts[chan] + if chan == 0: + denom_val = mel_low + else: + denom_val = center_mel_freqs[chan - 1] + for j in range(num_frequencies): + num = np.float32(center_mel_freqs[chan] - + freq_to_mel(frequency * hz_per_sbin)) + den = np.float32(center_mel_freqs[chan] - denom_val) + weight = num / den + # Make the float into an integer for the weights (and unweights). + weight_index = weight_start + frequency_offset + j + weights[weight_index], unweights[ + weight_index] = _quantize_filterbank_weight( + weight, FILTER_BANK_WEIGHT_SCALING_BITS) + frequency += 1 + if frequency > end_index: + end_index = frequency + + if end_index >= spectrum_size: + raise ValueError("Lower frequency limit can't be larger than upper limit") + + return (start_index, end_index, weights, unweights, channel_frequency_starts, + channel_weight_starts, channel_widths) + + +def calc_start_end_indices(fft_length, sample_rate, num_channels, + lower_band_limit, upper_band_limit): + """Returns the range of FFT indices needed by mel-spectrum filter bank. + + The caller can use the indices to avoid calculating the energy of FFT bins + that won't be used. + + Args: + fft_length: Length of FFT, in bins. + sample_rate: Sample rate, in Hz. + num_channels: Number of mel-spectrum filter bank channels. + lower_band_limit: lower limit of mel-spectrum filterbank, in Hz. + upper_band_limit: upper limit of mel-spectrum filterbank, in Hz. + + Returns: + A pair: start and end indices, in the range [0, fft_length) + + Raises: + ValueError: If fft_length isn't a power of 2 + """ + if fft_length % 2 != 0: + raise ValueError("FFT length must be an even number") + spectrum_size = fft_length / 2 + 1 + (start_index, end_index, _, _, _, _, + _) = _init_filter_bank_weights(spectrum_size, sample_rate, + FILTER_BANK_ALIGNMENT, + FILTER_BANK_CHANNEL_BLOCK_SIZE, num_channels, + lower_band_limit, upper_band_limit) + return start_index, end_index + + +def _filter_bank_wrapper(filter_bank_fn, default_name): + """Wrapper around gen_filter_bank_ops.filter_bank*.""" + + def _filter_bank(input_tensor, + sample_rate, + num_channels, + lower_band_limit, + upper_band_limit, + name=default_name): + with tf.name_scope(name) as name: + input_tensor = tf.convert_to_tensor(input_tensor, dtype=tf.uint32) + dim_list = input_tensor.shape.as_list() + if len(dim_list) != 1: + raise ValueError("Input tensor must have a rank of 1") + spectrum_size = dim_list[0] + + (_, _, weights, unweights, channel_frequency_starts, + channel_weight_starts, channel_widths) = _init_filter_bank_weights( + spectrum_size, sample_rate, FILTER_BANK_ALIGNMENT, + FILTER_BANK_CHANNEL_BLOCK_SIZE, num_channels, lower_band_limit, + upper_band_limit) + weights_tensor = tf.convert_to_tensor(weights, dtype=tf.int16) + unweights_tensor = tf.convert_to_tensor(unweights, dtype=tf.int16) + channel_frequency_starts_tensor = tf.convert_to_tensor( + channel_frequency_starts, dtype=tf.int16) + channel_weight_starts_tensor = tf.convert_to_tensor( + channel_weight_starts, dtype=tf.int16) + channel_widths_tensor = tf.convert_to_tensor(channel_widths, + dtype=tf.int16) + + return filter_bank_fn(input_tensor, + weights_tensor, + unweights_tensor, + channel_frequency_starts_tensor, + channel_weight_starts_tensor, + channel_widths_tensor, + num_channels=num_channels, + name=name) + + return _filter_bank + + +def _filter_bank_square_root_wrapper(filter_bank_square_root_fn, default_name): + """Wrapper around gen_filter_bank_ops.filter_bank_square_root*.""" + + def _filter_bank_square_root(input_tensor, scale_bits, name=default_name): + with tf.name_scope(name) as name: + input_tensor = tf.convert_to_tensor(input_tensor, dtype=tf.uint64) + dim_list = input_tensor.shape.as_list() + if len(dim_list) != 1: + raise ValueError("Input tensor must have a rank of 1") + scale_bits_tensor = tf.convert_to_tensor(scale_bits, dtype=tf.int32) + return filter_bank_square_root_fn(input_tensor, + scale_bits_tensor, + name=name) + + return _filter_bank_square_root + + +def _filter_bank_spectral_subtraction_wrapper( + filter_bank_spectral_subtraction_fn, default_name): + """Wrapper around gen_filter_bank_ops.filter_bank_spectral_subtraction*.""" + + def _filter_bank_spectral_subtraction(input_tensor, + num_channels, + smoothing, + alternate_smoothing, + smoothing_bits, + min_signal_remaining, + clamping, + spectral_subtraction_bits=14, + name=default_name): + with tf.name_scope(name) as name: + input_tensor = tf.convert_to_tensor(input_tensor, dtype=tf.uint32) + dim_list = input_tensor.shape.as_list() + if len(dim_list) != 1: + raise ValueError("Input tensor must have a rank of 1") + + min_signal_remaining = int(min_signal_remaining * + (1 << spectral_subtraction_bits)) + # Alternate smoothing may be disabled + if alternate_smoothing == 0: + alternate_smoothing = smoothing + + smoothing = int(smoothing * (1 << spectral_subtraction_bits)) + one_minus_smoothing = int((1 << spectral_subtraction_bits) - smoothing) + alternate_smoothing = int(alternate_smoothing * + (1 << spectral_subtraction_bits)) + alternate_one_minus_smoothing = int((1 << spectral_subtraction_bits) - + alternate_smoothing) + return filter_bank_spectral_subtraction_fn( + input_tensor, + num_channels=num_channels, + smoothing=smoothing, + one_minus_smoothing=one_minus_smoothing, + alternate_smoothing=alternate_smoothing, + alternate_one_minus_smoothing=alternate_one_minus_smoothing, + smoothing_bits=smoothing_bits, + min_signal_remaining=min_signal_remaining, + clamping=clamping, + spectral_subtraction_bits=spectral_subtraction_bits, + name=name) + + return _filter_bank_spectral_subtraction + + +def _filter_bank_log_wrapper(filter_bank_log_fn, default_name): + """Wrapper around gen_filter_bank_ops.filter_bank_log*.""" + + def _filter_bank_log(input_tensor, + output_scale, + input_correction_bits, + name=default_name): + with tf.name_scope(name) as name: + input_tensor = tf.convert_to_tensor(input_tensor, dtype=tf.uint32) + dim_list = input_tensor.shape.as_list() + if len(dim_list) != 1: + raise ValueError("Input tensor must have a rank of 1") + + return filter_bank_log_fn(input_tensor, + output_scale=output_scale, + input_correction_bits=input_correction_bits, + name=name) + + return _filter_bank_log + + +filter_bank = _filter_bank_wrapper(gen_filter_bank_ops.signal_filter_bank, + "signal_filter_bank") +filter_bank_square_root = _filter_bank_square_root_wrapper( + gen_filter_bank_ops.signal_filter_bank_square_root, + "signal_filter_bank_square_root") +filter_bank_spectral_subtraction = _filter_bank_spectral_subtraction_wrapper( + gen_filter_bank_ops.signal_filter_bank_spectral_subtraction, + "signal_filter_bank_spectral_subtraction") +filter_bank_log = _filter_bank_log_wrapper( + gen_filter_bank_ops.signal_filter_bank_log, "signal_filter_bank_log") + +tf.no_gradient("signal_filter_bank") +tf.no_gradient("signal_filter_bank_square_root") +tf.no_gradient("signal_filter_bank_spectral_subtraction") +tf.no_gradient("signal_filter_bank_log") diff --git a/python/tflite_micro/signal/ops/filter_bank_ops_test.py b/python/tflite_micro/signal/ops/filter_bank_ops_test.py new file mode 100644 index 00000000000..3d7a4338e3e --- /dev/null +++ b/python/tflite_micro/signal/ops/filter_bank_ops_test.py @@ -0,0 +1,1194 @@ +# Copyright 2023 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Tests for filter bank ops.""" +import os + +import numpy as np +import tensorflow as tf + +from tensorflow.python.platform import resource_loader +from tflite_micro.python.tflite_micro.signal.ops import filter_bank_ops +from tflite_micro.python.tflite_micro.signal.utils import util + + +class FilterBankOpTest(tf.test.TestCase): + + _PREFIX_PATH = resource_loader.get_path_to_datafile('') + + def GetResource(self, filepath): + full_path = os.path.join(self._PREFIX_PATH, filepath) + with open(full_path, 'rt') as f: + file_text = f.read() + return file_text + + def testFilterBankCenterFreq(self): + center_freq = filter_bank_ops._calc_center_freq(41, 125, 7800) + center_freq_exp = [ + 249.2831420898437500, 313.3967285156250000, 377.5103454589843750, + 441.6239624023437500, 505.7375488281250000, 569.8511352539062500, + 633.9647827148437500, 698.0783691406250000, 762.1919555664062500, + 826.3055419921875000, 890.4191894531250000, 954.5327758789062500, + 1018.6463623046875000, 1082.7600097656250000, 1146.8735351562500000, + 1210.9871826171875000, 1275.1008300781250000, 1339.2143554687500000, + 1403.3280029296875000, 1467.4415283203125000, 1531.5551757812500000, + 1595.6688232421875000, 1659.7823486328125000, 1723.8959960937500000, + 1788.0096435546875000, 1852.1231689453125000, 1916.2368164062500000, + 1980.3504638671875000, 2044.4639892578125000, 2108.5776367187500000, + 2172.6911621093750000, 2236.8046875000000000, 2300.9182128906250000, + 2365.0319824218750000, 2429.1455078125000000, 2493.2590332031250000, + 2557.3728027343750000, 2621.4863281250000000, 2685.5998535156250000, + 2749.7133789062500000, 2813.8271484375000000 + ] + self.assertAllEqual(center_freq_exp, center_freq) + + center_freq = filter_bank_ops._calc_center_freq(33, 125, 3800) + center_freq_exp = [ + 243.1058502197265625, 301.0421752929687500, 358.9784851074218750, + 416.9147949218750000, 474.8511352539062500, 532.7874145507812500, + 590.7237548828125000, 648.6600341796875000, 706.5963745117187500, + 764.5327148437500000, 822.4689941406250000, 880.4053344726562500, + 938.3416137695312500, 996.2779541015625000, 1054.2142333984375000, + 1112.1505126953125000, 1170.0869140625000000, 1228.0231933593750000, + 1285.9594726562500000, 1343.8958740234375000, 1401.8321533203125000, + 1459.7684326171875000, 1517.7047119140625000, 1575.6411132812500000, + 1633.5773925781250000, 1691.5136718750000000, 1749.4500732421875000, + 1807.3863525390625000, 1865.3226318359375000, 1923.2589111328125000, + 1981.1953125000000000, 2039.1315917968750000, 2097.0678710937500000 + ] + self.assertAllEqual(center_freq_exp, center_freq) + + center_freq = filter_bank_ops._calc_center_freq(41, 100, 7500) + center_freq_exp = [ + 214.4616394042968750, 278.4334106445312500, 342.4051513671875000, + 406.3768920898437500, 470.3486328125000000, 534.3204345703125000, + 598.2921752929687500, 662.2639160156250000, 726.2356567382812500, + 790.2073974609375000, 854.1791992187500000, 918.1509399414062500, + 982.1226806640625000, 1046.0944824218750000, 1110.0662841796875000, + 1174.0379638671875000, 1238.0097656250000000, 1301.9814453125000000, + 1365.9532470703125000, 1429.9249267578125000, 1493.8967285156250000, + 1557.8685302734375000, 1621.8402099609375000, 1685.8120117187500000, + 1749.7838134765625000, 1813.7554931640625000, 1877.7272949218750000, + 1941.6990966796875000, 2005.6707763671875000, 2069.6425781250000000, + 2133.6142578125000000, 2197.5861816406250000, 2261.5578613281250000, + 2325.5297851562500000, 2389.5014648437500000, 2453.4731445312500000, + 2517.4450683593750000, 2581.4167480468750000, 2645.3884277343750000, + 2709.3601074218750000, 2773.3320312500000000 + ] + self.assertAllLess(abs(center_freq_exp - center_freq), 0.00025) + + def testFilterBankStartEndIndices(self): + start_index, end_index = filter_bank_ops.calc_start_end_indices( + 512, 16000, 32, 125, 3800) + self.assertEqual(start_index, 5) + self.assertEqual(end_index, 122) + + start_index, end_index = filter_bank_ops.calc_start_end_indices( + 2048, 44000, 25, 125, 3800) + self.assertEqual(start_index, 7) + self.assertEqual(end_index, 177) + + start_index, end_index = filter_bank_ops.calc_start_end_indices( + 512, 16000, 40, 100, 7500) + self.assertEqual(start_index, 4) + self.assertEqual(end_index, 241) + + def testFilterBankInitWeight(self): + (start_index, end_index, weights, unweights, channel_frequency_starts, + channel_weight_starts, + channel_widths) = filter_bank_ops._init_filter_bank_weights( + 257, 16000, 1, 1, 32, 125, 3800) + weights_exp = [ + 1133, 2373, 3712, 1047, 2564, 66, 1740, 3486, 1202, 3079, 919, 2913, + 865, 2964, 1015, 3210, 1352, 3633, 1859, 123, 2520, 856, 3323, 1726, + 161, 2722, 1215, 3833, 2382, 956, 3652, 2276, 923, 3689, 2380, 1093, + 3922, 2676, 1448, 239, 3144, 1970, 814, 3770, 2646, 1538, 445, 3463, + 2399, 1349, 313, 3386, 2376, 1379, 394, 3517, 2556, 1607, 668, 3837, + 2920, 2013, 1117, 231, 3450, 2583, 1725, 877, 37, 3302, 2480, 1666, + 861, 63, 3369, 2588, 1813, 1046, 287, 3630, 2885, 2147, 1415, 690, + 4067, 3355, 2650, 1950, 1257, 569, 3984, 3308, 2638, 1973, 1314, 661, + 12, 3465, 2827, 2194, 1566, 944, 325, 3808, 3199, 2595, 1996, 1401, + 810, 224, 3738, 3160, 2586, 2017, 1451, 890, 332 + ] + unweights_exp = [ + 2962, + 1722, + 383, + 3048, + 1531, + 4029, + 2355, + 609, + 2893, + 1016, + 3176, + 1182, + 3230, + 1131, + 3080, + 885, + 2743, + 462, + 2236, + 3972, + 1575, + 3239, + 772, + 2369, + 3934, + 1373, + 2880, + 262, + 1713, + 3139, + 443, + 1819, + 3172, + 406, + 1715, + 3002, + 173, + 1419, + 2647, + 3856, + 951, + 2125, + 3281, + 325, + 1449, + 2557, + 3650, + 632, + 1696, + 2746, + 3782, + 709, + 1719, + 2716, + 3701, + 578, + 1539, + 2488, + 3427, + 258, + 1175, + 2082, + 2978, + 3864, + 645, + 1512, + 2370, + 3218, + 4058, + 793, + 1615, + 2429, + 3234, + 4032, + 726, + 1507, + 2282, + 3049, + 3808, + 465, + 1210, + 1948, + 2680, + 3405, + 28, + 740, + 1445, + 2145, + 2838, + 3526, + 111, + 787, + 1457, + 2122, + 2781, + 3434, + 4083, + 630, + 1268, + 1901, + 2529, + 3151, + 3770, + 287, + 896, + 1500, + 2099, + 2694, + 3285, + 3871, + 357, + 935, + 1509, + 2078, + 2644, + 3205, + 3763, + ] + channel_frequency_starts_exp = [ + 5, 6, 7, 9, 11, 12, 14, 16, 18, 20, 22, 25, 27, 30, 32, 35, 38, 41, 45, + 48, 52, 56, 60, 64, 69, 74, 79, 84, 89, 95, 102, 108, 115 + ] + channel_weight_starts_exp = [ + 0, 1, 2, 4, 6, 7, 9, 11, 13, 15, 17, 20, 22, 25, 27, 30, 33, 36, 40, + 43, 47, 51, 55, 59, 64, 69, 74, 79, 84, 90, 97, 103, 110 + ] + channel_widths_exp = [ + 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 3, 2, 3, 2, 3, 3, 3, 4, 3, 4, 4, 4, 4, 5, + 5, 5, 5, 5, 6, 7, 6, 7, 7 + ] + self.assertEqual(start_index, 5) + self.assertEqual(end_index, 122) + self.assertEqual(weights.size, 117) + self.assertAllEqual(weights, weights_exp) + self.assertAllEqual(unweights, unweights_exp) + self.assertAllEqual(channel_frequency_starts, channel_frequency_starts_exp) + self.assertAllEqual(channel_weight_starts, channel_weight_starts_exp) + self.assertAllEqual(channel_widths, channel_widths_exp) + ################################## + (start_index, end_index, weights, unweights, channel_frequency_starts, + channel_weight_starts, + channel_widths) = filter_bank_ops._init_filter_bank_weights( + 257, 16000, 1, 1, 40, 125, 7800) + weights_exp = [ + 1419, 2934, 442, 2130, 3896, 1638, 3546, 1422, 3454, 1449, 3593, 1693, + 3938, 2134, 373, 2751, 1073, 3528, 1925, 356, 2917, 1414, 4037, 2594, + 1180, 3888, 2527, 1191, 3976, 2688, 1422, 179, 3052, 1850, 668, 3601, + 2456, 1329, 220, 3223, 2147, 1087, 42, 3108, 2092, 1091, 103, 3225, + 2263, 1315, 378, 3550, 2638, 1736, 846, 4063, 3195, 2337, 1489, 650, + 3918, 3099, 2289, 1488, 696, 4008, 3233, 2466, 1708, 957, 214, 3575, + 2846, 2126, 1412, 706, 6, 3409, 2723, 2043, 1369, 702, 41, 3482, 2832, + 2189, 1551, 919, 292, 3767, 3151, 2540, 1935, 1334, 739, 148, 3658, + 3077, 2501, 1929, 1362, 799, 240, 3782, 3232, 2686, 2144, 1606, 1073, + 543, 17, 3591, 3072, 2558, 2047, 1539, 1035, 535, 38, 3641, 3151, 2664, + 2180, 1700, 1223, 749, 278, 3906, 3441, 2979, 2520, 2064, 1611, 1161, + 714, 269, 3923, 3484, 3047, 2613, 2182, 1753, 1326, 903, 481, 62, 3742, + 3328, 2916, 2507, 2100, 1695, 1293, 893, 495, 99, 3801, 3410, 3020, + 2633, 2248, 1864, 1483, 1104, 727, 352, 4075, 3703, 3334, 2966, 2601, + 2237, 1875, 1515, 1156, 800, 445, 92, 3836, 3487, 3139, 2792, 2448, + 2105, 1763, 1423, 1085, 749, 414, 80, 3844, 3514, 3185, 2857, 2531, + 2207, 1884, 1562, 1242, 923, 606, 290, 4072, 3758, 3447, 3136, 2827, + 2519, 2213, 1907, 1604, 1301, 999, 699, 400, 103, 3902, 3607, 3313, + 3020, 2729, 2438, 2149, 1861, 1574, 1288, 1003, 720, 437, 156, 3972, + 3693, 3415, 3137, 2862, 2587, 2313, 2040, 1768, 1497, 1228, 959, 691, + 424, 158 + ] + unweights_exp = [ + 2676, 1161, 3653, 1965, 199, 2457, 549, 2673, 641, 2646, 502, 2402, + 157, 1961, 3722, 1344, 3022, 567, 2170, 3739, 1178, 2681, 58, 1501, + 2915, 207, 1568, 2904, 119, 1407, 2673, 3916, 1043, 2245, 3427, 494, + 1639, 2766, 3875, 872, 1948, 3008, 4053, 987, 2003, 3004, 3992, 870, + 1832, 2780, 3717, 545, 1457, 2359, 3249, 32, 900, 1758, 2606, 3445, + 177, 996, 1806, 2607, 3399, 87, 862, 1629, 2387, 3138, 3881, 520, 1249, + 1969, 2683, 3389, 4089, 686, 1372, 2052, 2726, 3393, 4054, 613, 1263, + 1906, 2544, 3176, 3803, 328, 944, 1555, 2160, 2761, 3356, 3947, 437, + 1018, 1594, 2166, 2733, 3296, 3855, 313, 863, 1409, 1951, 2489, 3022, + 3552, 4078, 504, 1023, 1537, 2048, 2556, 3060, 3560, 4057, 454, 944, + 1431, 1915, 2395, 2872, 3346, 3817, 189, 654, 1116, 1575, 2031, 2484, + 2934, 3381, 3826, 172, 611, 1048, 1482, 1913, 2342, 2769, 3192, 3614, + 4033, 353, 767, 1179, 1588, 1995, 2400, 2802, 3202, 3600, 3996, 294, + 685, 1075, 1462, 1847, 2231, 2612, 2991, 3368, 3743, 20, 392, 761, + 1129, 1494, 1858, 2220, 2580, 2939, 3295, 3650, 4003, 259, 608, 956, + 1303, 1647, 1990, 2332, 2672, 3010, 3346, 3681, 4015, 251, 581, 910, + 1238, 1564, 1888, 2211, 2533, 2853, 3172, 3489, 3805, 23, 337, 648, + 959, 1268, 1576, 1882, 2188, 2491, 2794, 3096, 3396, 3695, 3992, 193, + 488, 782, 1075, 1366, 1657, 1946, 2234, 2521, 2807, 3092, 3375, 3658, + 3939, 123, 402, 680, 958, 1233, 1508, 1782, 2055, 2327, 2598, 2867, + 3136, 3404, 3671, 3937 + ] + channel_frequency_starts_exp = [ + 5, 6, 8, 9, 11, 13, 15, 17, 20, 22, 25, 27, 30, 33, 37, 40, 44, 48, 52, + 56, 60, 65, 70, 76, 82, 88, 94, 101, 108, 116, 124, 132, 141, 151, 161, + 171, 183, 195, 207, 221, 235 + ] + channel_weight_starts_exp = [ + 0, 1, 3, 4, 6, 8, 10, 12, 15, 17, 20, 22, 25, 28, 32, 35, 39, 43, 47, + 51, 55, 60, 65, 71, 77, 83, 89, 96, 103, 111, 119, 127, 136, 146, 156, + 166, 178, 190, 202, 216, 230 + ] + channel_widths_exp = [ + 1, 2, 1, 2, 2, 2, 2, 3, 2, 3, 2, 3, 3, 4, 3, 4, 4, 4, 4, 4, 5, 5, 6, 6, + 6, 6, 7, 7, 8, 8, 8, 9, 10, 10, 10, 12, 12, 12, 14, 14, 15 + ] + self.assertEqual(start_index, 5) + self.assertEqual(end_index, 250) + self.assertEqual(weights.size, 245) + self.assertAllEqual(weights, weights_exp) + self.assertAllEqual(unweights, unweights_exp) + self.assertAllEqual(channel_frequency_starts, channel_frequency_starts_exp) + self.assertAllEqual(channel_weight_starts, channel_weight_starts_exp) + self.assertAllEqual(channel_widths, channel_widths_exp) + ################################## + (start_index, end_index, weights, unweights, channel_frequency_starts, + channel_weight_starts, + channel_widths) = filter_bank_ops._init_filter_bank_weights( + 129, 8000, 1, 1, 25, 125, 3800) + weights_exp = [ + 1762, 3607, 1435, 3431, 1399, 3527, 1619, 3863, 2064, 316, 2710, 1054, + 3536, 1963, 428, 3025, 1562, 132, 2830, 1462, 123, 2909, 1625, 367, + 3230, 2020, 833, 3765, 2621, 1498, 395, 3407, 2341, 1293, 262, 3344, + 2346, 1363, 396, 3539, 2601, 1676, 765, 3963, 3078, 2205, 1343, 494, + 3752, 2925, 2108, 1303, 507, 3817, 3041, 2275, 1517, 769, 30, 3395, + 2673, 1958, 1252, 554, 3959, 3276, 2601, 1932, 1270, 616, 4064, 3423, + 2788, 2160, 1538, 921, 311, 3803, 3205, 2612, 2025, 1443, 866, 295, + 3825, 3264, 2708, 2157, 1611, 1069, 532, 0, 3568, 3044, 2525, 2010, + 1499, 992, 490, 4087, 3592, 3102, 2615, 2131, 1652, 1176, 703, 235, + 3865, 3403, 2945, 2490, 2038, 1589, 1143, 701, 262 + ] + unweights_exp = [ + 2333, 488, 2660, 664, 2696, 568, 2476, 232, 2031, 3779, 1385, 3041, + 559, 2132, 3667, 1070, 2533, 3963, 1265, 2633, 3972, 1186, 2470, 3728, + 865, 2075, 3262, 330, 1474, 2597, 3700, 688, 1754, 2802, 3833, 751, + 1749, 2732, 3699, 556, 1494, 2419, 3330, 132, 1017, 1890, 2752, 3601, + 343, 1170, 1987, 2792, 3588, 278, 1054, 1820, 2578, 3326, 4065, 700, + 1422, 2137, 2843, 3541, 136, 819, 1494, 2163, 2825, 3479, 31, 672, + 1307, 1935, 2557, 3174, 3784, 292, 890, 1483, 2070, 2652, 3229, 3800, + 270, 831, 1387, 1938, 2484, 3026, 3563, 4095, 527, 1051, 1570, 2085, + 2596, 3103, 3605, 8, 503, 993, 1480, 1964, 2443, 2919, 3392, 3860, 230, + 692, 1150, 1605, 2057, 2506, 2952, 3394, 3833 + ] + channel_frequency_starts_exp = [ + 5, 6, 8, 10, 12, 15, 17, 20, 23, 26, 29, 32, 36, 40, 44, 48, 53, 58, + 64, 69, 75, 82, 89, 97, 104, 113 + ] + channel_weight_starts_exp = [ + 0, 1, 3, 5, 7, 10, 12, 15, 18, 21, 24, 27, 31, 35, 39, 43, 48, 53, 59, + 64, 70, 77, 84, 92, 99, 108 + ] + channel_widths_exp = [ + 1, 2, 2, 2, 3, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 5, 6, 7, 7, 8, 7, + 9, 9 + ] + self.assertEqual(start_index, 5) + self.assertEqual(end_index, 122) + self.assertEqual(weights.size, 117) + self.assertAllEqual(weights, weights_exp) + self.assertAllEqual(unweights, unweights_exp) + self.assertAllEqual(channel_frequency_starts, channel_frequency_starts_exp) + self.assertAllEqual(channel_weight_starts, channel_weight_starts_exp) + self.assertAllEqual(channel_widths, channel_widths_exp) + ################################## + (start_index, end_index, weights, unweights, channel_frequency_starts, + channel_weight_starts, + channel_widths) = filter_bank_ops._init_filter_bank_weights( + 257, 16000, 2, 1, 25, 125, 3800) + weights_exp = [ + 1762, 3607, 1435, 3431, 1399, 3527, 1619, 3863, 2064, 316, 2710, 1054, + 3536, 1963, 428, 3025, 1562, 132, 2830, 1462, 123, 2909, 1625, 367, + 3230, 2020, 833, 3765, 2621, 1498, 395, 3407, 2341, 1293, 262, 3344, + 2346, 1363, 396, 3539, 2601, 1676, 765, 3963, 3078, 2205, 1343, 494, + 3752, 2925, 2108, 1303, 507, 3817, 3041, 2275, 1517, 769, 30, 3395, + 2673, 1958, 1252, 554, 3959, 3276, 2601, 1932, 1270, 616, 4064, 3423, + 2788, 2160, 1538, 921, 311, 3803, 3205, 2612, 2025, 1443, 866, 295, + 3825, 3264, 2708, 2157, 1611, 1069, 532, 0, 3568, 3044, 2525, 2010, + 1499, 992, 490, 4087, 3592, 3102, 2615, 2131, 1652, 1176, 703, 235, + 3865, 3403, 2945, 2490, 2038, 1589, 1143, 701, 262 + ] + unweights_exp = [ + 2333, 488, 2660, 664, 2696, 568, 2476, 232, 2031, 3779, 1385, 3041, + 559, 2132, 3667, 1070, 2533, 3963, 1265, 2633, 3972, 1186, 2470, 3728, + 865, 2075, 3262, 330, 1474, 2597, 3700, 688, 1754, 2802, 3833, 751, + 1749, 2732, 3699, 556, 1494, 2419, 3330, 132, 1017, 1890, 2752, 3601, + 343, 1170, 1987, 2792, 3588, 278, 1054, 1820, 2578, 3326, 4065, 700, + 1422, 2137, 2843, 3541, 136, 819, 1494, 2163, 2825, 3479, 31, 672, + 1307, 1935, 2557, 3174, 3784, 292, 890, 1483, 2070, 2652, 3229, 3800, + 270, 831, 1387, 1938, 2484, 3026, 3563, 4095, 527, 1051, 1570, 2085, + 2596, 3103, 3605, 8, 503, 993, 1480, 1964, 2443, 2919, 3392, 3860, 230, + 692, 1150, 1605, 2057, 2506, 2952, 3394, 3833 + ] + channel_frequency_starts_exp = [ + 5, 6, 8, 10, 12, 15, 17, 20, 23, 26, 29, 32, 36, 40, 44, 48, 53, 58, + 64, 69, 75, 82, 89, 97, 104, 113 + ] + channel_weight_starts_exp = [ + 0, 1, 3, 5, 7, 10, 12, 15, 18, 21, 24, 27, 31, 35, 39, 43, 48, 53, 59, + 64, 70, 77, 84, 92, 99, 108 + ] + channel_widths_exp = [ + 1, 2, 2, 2, 3, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 5, 6, 7, 7, 8, 7, + 9, 9 + ] + self.assertEqual(start_index, 5) + self.assertEqual(end_index, 122) + self.assertEqual(weights.size, 117) + self.assertAllEqual(weights, weights_exp) + self.assertAllEqual(unweights, unweights_exp) + self.assertAllEqual(channel_frequency_starts, channel_frequency_starts_exp) + self.assertAllEqual(channel_weight_starts, channel_weight_starts_exp) + self.assertAllEqual(channel_widths, channel_widths_exp) + ################################## + (start_index, end_index, weights, unweights, channel_frequency_starts, + channel_weight_starts, + channel_widths) = filter_bank_ops._init_filter_bank_weights( + 257, 16000, 1, 1, 40, 100, 7500) + weights_exp = [ + 1875, + 3288, + 702, + 2300, + 3983, + 1647, + 3481, + 1288, + 3255, + 1187, + 3273, + 1317, + 3509, + 1654, + 3941, + 2177, + 455, + 2869, + 1225, + 3714, + 2142, + 603, + 3192, + 1717, + 271, + 2949, + 1558, + 194, + 2951, + 1637, + 346, + 3174, + 1928, + 702, + 3594, + 2409, + 1243, + 96, + 3063, + 1951, + 856, + 3873, + 2810, + 1763, + 731, + 3809, + 2805, + 1815, + 839, + 3971, + 3021, + 2082, + 1156, + 241, + 3434, + 2542, + 1661, + 791, + 4027, + 3177, + 2337, + 1506, + 685, + 3970, + 3167, + 2373, + 1588, + 811, + 43, + 3378, + 2626, + 1881, + 1144, + 414, + 3788, + 3073, + 2365, + 1663, + 969, + 281, + 3696, + 3021, + 2352, + 1689, + 1033, + 382, + 3833, + 3194, + 2560, + 1932, + 1310, + 692, + 80, + 3570, + 2968, + 2371, + 1779, + 1192, + 609, + 32, + 3554, + 2986, + 2422, + 1862, + 1306, + 755, + 208, + 3761, + 3222, + 2687, + 2156, + 1629, + 1106, + 586, + 70, + 3654, + 3146, + 2641, + 2139, + 1641, + 1147, + 656, + 168, + 3779, + 3298, + 2819, + 2344, + 1872, + 1404, + 938, + 475, + 15, + 3654, + 3200, + 2749, + 2300, + 1854, + 1411, + 971, + 534, + 99, + 3762, + 3332, + 2905, + 2480, + 2058, + 1638, + 1221, + 806, + 394, + 4079, + 3671, + 3266, + 2862, + 2461, + 2062, + 1666, + 1271, + 879, + 489, + 100, + 3810, + 3426, + 3044, + 2664, + 2286, + 1910, + 1536, + 1164, + 794, + 425, + 59, + 3790, + 3428, + 3067, + 2707, + 2350, + 1994, + 1640, + 1288, + 938, + 589, + 242, + 3992, + 3649, + 3307, + 2966, + 2627, + 2290, + 1954, + 1620, + 1287, + 956, + 626, + 298, + 4067, + 3742, + 3418, + 3096, + 2775, + 2456, + 2138, + 1821, + 1506, + 1192, + 880, + 568, + 259, + 4046, + 3739, + 3433, + 3128, + 2825, + 2523, + 2222, + 1923, + 1624, + 1327, + 1031, + 737, + 443, + 151, + 3956, + 3666, + 3377, + 3090, + 2803, + 2518, + 2234, + 1951, + 1669, + 1388, + 1108, + 829, + 552, + 275, + 0, + ] + unweights_exp = [ + 2220, + 807, + 3393, + 1795, + 112, + 2448, + 614, + 2807, + 840, + 2908, + 822, + 2778, + 586, + 2441, + 154, + 1918, + 3640, + 1226, + 2870, + 381, + 1953, + 3492, + 903, + 2378, + 3824, + 1146, + 2537, + 3901, + 1144, + 2458, + 3749, + 921, + 2167, + 3393, + 501, + 1686, + 2852, + 3999, + 1032, + 2144, + 3239, + 222, + 1285, + 2332, + 3364, + 286, + 1290, + 2280, + 3256, + 124, + 1074, + 2013, + 2939, + 3854, + 661, + 1553, + 2434, + 3304, + 68, + 918, + 1758, + 2589, + 3410, + 125, + 928, + 1722, + 2507, + 3284, + 4052, + 717, + 1469, + 2214, + 2951, + 3681, + 307, + 1022, + 1730, + 2432, + 3126, + 3814, + 399, + 1074, + 1743, + 2406, + 3062, + 3713, + 262, + 901, + 1535, + 2163, + 2785, + 3403, + 4015, + 525, + 1127, + 1724, + 2316, + 2903, + 3486, + 4063, + 541, + 1109, + 1673, + 2233, + 2789, + 3340, + 3887, + 334, + 873, + 1408, + 1939, + 2466, + 2989, + 3509, + 4025, + 441, + 949, + 1454, + 1956, + 2454, + 2948, + 3439, + 3927, + 316, + 797, + 1276, + 1751, + 2223, + 2691, + 3157, + 3620, + 4080, + 441, + 895, + 1346, + 1795, + 2241, + 2684, + 3124, + 3561, + 3996, + 333, + 763, + 1190, + 1615, + 2037, + 2457, + 2874, + 3289, + 3701, + 16, + 424, + 829, + 1233, + 1634, + 2033, + 2429, + 2824, + 3216, + 3606, + 3995, + 285, + 669, + 1051, + 1431, + 1809, + 2185, + 2559, + 2931, + 3301, + 3670, + 4036, + 305, + 667, + 1028, + 1388, + 1745, + 2101, + 2455, + 2807, + 3157, + 3506, + 3853, + 103, + 446, + 788, + 1129, + 1468, + 1805, + 2141, + 2475, + 2808, + 3139, + 3469, + 3797, + 28, + 353, + 677, + 999, + 1320, + 1639, + 1957, + 2274, + 2589, + 2903, + 3215, + 3527, + 3836, + 49, + 356, + 662, + 967, + 1270, + 1572, + 1873, + 2172, + 2471, + 2768, + 3064, + 3358, + 3652, + 3944, + 139, + 429, + 718, + 1005, + 1292, + 1577, + 1861, + 2144, + 2426, + 2707, + 2987, + 3266, + 3543, + 3820, + 4096, + ] + channel_frequency_starts_exp = [ + 4, 5, 7, 8, 10, 12, 14, 16, 18, 21, 23, 26, 29, 32, 35, 38, 42, 45, 49, + 53, 58, 62, 67, 73, 78, 84, 90, 97, 104, 111, 119, 127, 136, 145, 154, + 165, 176, 187, 199, 212, 226 + ] + channel_weight_starts_exp = [ + 0, + 1, + 3, + 4, + 6, + 8, + 10, + 12, + 14, + 17, + 19, + 22, + 25, + 28, + 31, + 34, + 38, + 41, + 45, + 49, + 54, + 58, + 63, + 69, + 74, + 80, + 86, + 93, + 100, + 107, + 115, + 123, + 132, + 141, + 150, + 161, + 172, + 183, + 195, + 208, + 222, + ] + channel_widths_exp = [ + 1, + 2, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 3, + 3, + 3, + 3, + 3, + 4, + 3, + 4, + 4, + 5, + 4, + 5, + 6, + 5, + 6, + 6, + 7, + 7, + 7, + 8, + 8, + 9, + 9, + 9, + 11, + 11, + 11, + 12, + 13, + 14, + 15, + ] + self.assertEqual(start_index, 4) + self.assertEqual(end_index, 241) + self.assertEqual(weights.size, 237) + self.assertAllLessEqual(abs(weights - weights_exp), 1) + self.assertAllLessEqual(abs(unweights - unweights_exp), 1) + self.assertAllEqual(channel_frequency_starts, channel_frequency_starts_exp) + self.assertAllEqual(channel_weight_starts, channel_weight_starts_exp) + self.assertAllEqual(channel_widths, channel_widths_exp) + + def SingleFilterBankSpectralSubtractionVectorTest(self, filename): + lines = self.GetResource(filename).splitlines() + args = lines[0].split() + num_channels = int(args[0]) + smoothing = float(args[1]) + alternate_smoothing = float(args[2]) + smoothing_bits = int(args[3]) + min_signal_remaining = float(args[4]) + clamping = bool(int(args[5])) + + func = tf.function(filter_bank_ops.filter_bank_spectral_subtraction) + input_size = len(lines[1].split()) + concrete_function = func.get_concrete_function( + tf.TensorSpec(input_size, dtype=tf.uint32), num_channels, smoothing, + alternate_smoothing, smoothing_bits, min_signal_remaining, clamping) + interpreter = util.get_tflm_interpreter(concrete_function, func) + # Skip line 0, which contains the configuration params. + # Read lines in triplets + i = 1 + while i < len(lines): + in_frame = np.array([int(j) for j in lines[i].split()], dtype=np.uint32) + out_frame_exp = [int(j) for j in lines[i + 1].split()] + noise_estimate_exp = [int(j) for j in lines[i + 2].split()] + # TFLM + interpreter.set_input(in_frame, 0) + interpreter.invoke() + out_frame = interpreter.get_output(0) + noise_estimate = interpreter.get_output(1) + self.assertAllEqual(out_frame, out_frame_exp) + self.assertAllEqual(noise_estimate, noise_estimate_exp) + # TF + [out_frame, noise_estimate] = self.evaluate( + filter_bank_ops.filter_bank_spectral_subtraction( + in_frame, num_channels, smoothing, alternate_smoothing, + smoothing_bits, min_signal_remaining, clamping)) + self.assertAllEqual(out_frame, out_frame_exp) + self.assertAllEqual(noise_estimate, noise_estimate_exp) + i += 3 + + def SingleFilterBankSquareRootVectorTest(self, filename): + lines = self.GetResource(filename).splitlines() + func = tf.function(filter_bank_ops.filter_bank_square_root) + input_size = len(lines[0].split()) + concrete_function = func.get_concrete_function( + tf.TensorSpec(input_size, dtype=tf.uint64), + tf.TensorSpec([], dtype=tf.int32)) + interpreter = util.get_tflm_interpreter(concrete_function, func) + # Read lines in triplets + i = 0 + while i < len(lines): + in_frame = np.array([int(j) for j in lines[i].split()], dtype=np.uint64) + scale_bits = np.array(int(lines[i + 1]), dtype=np.int32) + out_frame_exp = [int(j) for j in lines[i + 2].split()] + # TFLM + interpreter.set_input(in_frame, 0) + interpreter.set_input(scale_bits, 1) + interpreter.invoke() + out_frame = interpreter.get_output(0) + self.assertAllEqual(out_frame, out_frame_exp) + # TF + out_frame = self.evaluate( + filter_bank_ops.filter_bank_square_root(in_frame, scale_bits)) + self.assertAllEqual(out_frame, out_frame_exp) + i += 3 + + def SingleFilterBankVectorTest(self, filename): + lines = self.GetResource(filename).splitlines() + args = lines[0].split() + sample_rate = int(args[0]) + num_channels = int(args[1]) + lower_band_limit = float(args[2]) + upper_band_limit = float(args[3]) + func = tf.function(filter_bank_ops.filter_bank) + input_size = len(lines[1].split()) + concrete_function = func.get_concrete_function( + tf.TensorSpec(input_size, dtype=tf.uint32), sample_rate, num_channels, + lower_band_limit, upper_band_limit) + interpreter = util.get_tflm_interpreter(concrete_function, func) + # Skip line 0, which contains the configuration params. + # Read lines in pairs + i = 1 + while i < len(lines): + in_frame = np.array([int(j) for j in lines[i].split()], dtype=np.uint32) + out_frame_exp = [int(j) for j in lines[i + 1].split()] + # TFLM + interpreter.set_input(in_frame, 0) + interpreter.invoke() + out_frame = interpreter.get_output(0) + self.assertAllEqual(out_frame_exp, out_frame) + # TF + out_frame = self.evaluate( + filter_bank_ops.filter_bank(in_frame, sample_rate, num_channels, + lower_band_limit, upper_band_limit)) + self.assertAllEqual(out_frame_exp, out_frame) + i += 2 + + def SingleFilterBankTest(self, filename): + lines = self.GetResource(filename).splitlines() + args = lines[0].split() + input_tensor = np.arange(int(args[0]), dtype=np.uint32) + output_exp = [int(i) for i in lines[1:]] + output_tensor = self.evaluate( + filter_bank_ops.filter_bank(input_tensor, int(args[1]), int(args[4]), + float(args[2]), float(args[3]))) + self.assertAllLessEqual(abs(output_exp - output_tensor), 144) + + def testFilterBank(self): + self.SingleFilterBankTest('testdata/filter_bank_accumulation_8k.txt') + self.SingleFilterBankTest('testdata/filter_bank_accumulation_16k.txt') + self.SingleFilterBankTest('testdata/filter_bank_accumulation_44k.txt') + self.SingleFilterBankVectorTest('testdata/filter_bank_test1.txt') + + def testFilterBankSpectralSubtractionVector(self): + self.SingleFilterBankSpectralSubtractionVectorTest( + 'testdata/filter_bank_spectral_subtraction_test1.txt') + + def testFilterBankSquareRootVector(self): + self.SingleFilterBankSquareRootVectorTest( + 'testdata/filter_bank_square_root_test1.txt') + + def testFilterBankSquareRoot(self): + fft_scale_bits = 7 + input_array = [ + 632803382, 3322331443, 7096652410, 7915374281, 1173754459, 305980674, + 2000536077, 1168558488, 5076475823, 15976754090, 3805664731, 613998164, + 1697378269, 2775934843, 3579468406, 2317762617, 2025182819, 3166301049, + 1937595023, 1774351019, 2085308695, 3187965791, 2871034131, 4396421345, + 8203017514, 4506083115, 3159809690, 750384531, 243621165, 61552427, + 794881, 285365, 324568, 209218, 212215, 311565, 183541, 223754, 201098, + 385031 + ] + output_exp = [ + 196, 450, 658, 695, 267, 136, 349, 267, 556, 987, 481, 193, 321, 411, + 467, 376, 351, 439, 343, 329, 356, 441, 418, 518, 707, 524, 439, 214, + 121, 61, 6, 4, 4, 3, 3, 4, 3, 3, 3, 4 + ] + output_array = self.evaluate( + filter_bank_ops.filter_bank_square_root(input_array, fft_scale_bits)) + self.assertAllEqual(output_array, output_exp) + + fft_scale_bits = 2 + input_array = [ + 1384809583, 3253852150, 7271882261, 4247132793, 165951197, 106924444, + 334793989, 1186792065, 683710887, 328783218, 1777824058, 859450346, + 384515125, 118491239, 29264336, 324188526, 1925807083, 2591551091, + 1170412774, 393317159, 1003847215, 1375415668, 1272433002, 5102945913, + 5527301760, 3564304855, 4171837220, 4252817101, 2886468276, 1293586339, + 867722874, 137636997 + ] + output_exp = [ + 9303, 14260, 21318, 16292, 3220, 2585, 4574, 8612, 6537, 4533, 10541, + 7329, 4902, 2721, 1352, 4501, 10971, 12726, 8552, 4958, 7921, 9271, + 8917, 17858, 18586, 14925, 16147, 16303, 13431, 8991, 7364, 2933 + ] + output_array = self.evaluate( + filter_bank_ops.filter_bank_square_root(input_array, fft_scale_bits)) + self.assertAllEqual(output_array, output_exp) + + def testFilterBankLog(self): + output_scale = 1600 + correction_bits = 3 + input_array = [ + 29, 21, 29, 40, 19, 11, 13, 23, 13, 11, 25, 17, 5, 4, 46, 14, 17, 14, + 20, 14, 10, 10, 15, 11, 17, 12, 15, 16, 19, 18, 6, 2 + ] + output_exp = [ + 8715, 8198, 8715, 9229, 8038, 7164, 7431, 8344, 7431, 7164, 8477, 7860, + 5902, 5545, 9453, 7550, 7860, 7550, 8120, 7550, 7011, 7011, 7660, 7164, + 7860, 7303, 7660, 7763, 8038, 7952, 6194, 4436 + ] + output_array = self.evaluate( + filter_bank_ops.filter_bank_log(input_array, output_scale, + correction_bits)) + self.assertAllEqual(output_array, output_exp) + + +if __name__ == '__main__': + tf.test.main() diff --git a/python/tflite_micro/signal/ops/stacker_op.py b/python/tflite_micro/signal/ops/stacker_op.py new file mode 100644 index 00000000000..3f87fc79736 --- /dev/null +++ b/python/tflite_micro/signal/ops/stacker_op.py @@ -0,0 +1,51 @@ +# Copyright 2023 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Use stacker op in python.""" + +import tensorflow as tf +from tflite_micro.python.tflite_micro.signal.utils import util + +gen_stacker_op = util.load_custom_op('stacker_op.so') + + +def _stacker_wrapper(stacker_fn, default_name): + """Wrapper around gen_stacker_op.stacker*.""" + + def _stacker(input_tensor, + num_channels, + stacker_left_context, + stacker_right_context, + stacker_step, + name=default_name): + with tf.name_scope(name) as name: + input_tensor = tf.convert_to_tensor(input_tensor, dtype=tf.int16) + dim_list = input_tensor.shape.as_list() + if len(dim_list) != 1: + raise ValueError("Input tensor must have a rank of 1") + + return stacker_fn(input_tensor, + num_channels=num_channels, + stacker_left_context=stacker_left_context, + stacker_right_context=stacker_right_context, + stacker_step=stacker_step, + name=name) + + return _stacker + + +# TODO(b/286250473): change back name after name clash resolved +stacker = _stacker_wrapper(gen_stacker_op.signal_stacker, "signal_stacker") + +tf.no_gradient("signal_stacker") diff --git a/python/tflite_micro/signal/ops/stacker_op_test.py b/python/tflite_micro/signal/ops/stacker_op_test.py new file mode 100644 index 00000000000..5943952b424 --- /dev/null +++ b/python/tflite_micro/signal/ops/stacker_op_test.py @@ -0,0 +1,80 @@ +# Copyright 2023 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Tests for stacker ops.""" +import os + +import numpy as np +import tensorflow as tf + +from tensorflow.python.platform import resource_loader +from tflite_micro.python.tflite_micro.signal.ops import stacker_op +from tflite_micro.python.tflite_micro.signal.utils import util + + +class StackerOpTest(tf.test.TestCase): + + _PREFIX_PATH = resource_loader.get_path_to_datafile('') + + def GetResource(self, filepath): + full_path = os.path.join(self._PREFIX_PATH, filepath) + with open(full_path, 'rt') as f: + file_text = f.read() + return file_text + + def SingleStackerTest(self, filename): + lines = self.GetResource(filename).splitlines() + args = lines[0].split() + num_channels = int(args[0]) + stacker_left_context = int(args[1]) + stacker_right_context = int(args[2]) + stacker_step = int(args[3]) + func = tf.function(stacker_op.stacker) + input_size = len(lines[1].split()) + concrete_function = func.get_concrete_function( + tf.TensorSpec(input_size, dtype=tf.int16), num_channels, + stacker_left_context, stacker_right_context, stacker_step) + interpreter = util.get_tflm_interpreter(concrete_function, func) + # Skip line 0, which contains the configuration params. + # Read lines in triplets + i = 1 + while i < len(lines): + input_array = np.array([int(j) for j in lines[i].split()], + dtype=np.int16) + output_array_exp = [int(j) for j in lines[i + 1].split()] + output_valid_exp = [int(j) for j in lines[i + 2].split()] + # TFLM + interpreter.set_input(input_array, 0) + interpreter.invoke() + out_frame = interpreter.get_output(0) + out_valid = interpreter.get_output(1) + self.assertEqual(out_valid, output_valid_exp) + if out_valid: + self.assertAllEqual(out_frame, output_array_exp) + # TF + [out_frame, out_valid] = self.evaluate( + stacker_op.stacker(input_array, num_channels, stacker_left_context, + stacker_right_context, stacker_step)) + self.assertEqual(out_valid, output_valid_exp) + if out_valid: + self.assertAllEqual(out_frame, output_array_exp) + i += 3 + + def testStacker(self): + self.SingleStackerTest('testdata/stacker_test1.txt') + + +if __name__ == '__main__': + np.random.seed(0) + tf.test.main() diff --git a/python/tflite_micro/signal/ops/testdata/BUILD b/python/tflite_micro/signal/ops/testdata/BUILD index beb8123163d..87fd9f239a8 100644 --- a/python/tflite_micro/signal/ops/testdata/BUILD +++ b/python/tflite_micro/signal/ops/testdata/BUILD @@ -9,7 +9,14 @@ package( exports_files([ "energy_test1.txt", "fft_auto_scale_test1.txt", + "filter_bank_accumulation_8k.txt", + "filter_bank_accumulation_16k.txt", + "filter_bank_accumulation_44k.txt", + "filter_bank_test1.txt", + "filter_bank_square_root_test1.txt", + "filter_bank_spectral_subtraction_test1.txt", "framer_test1.txt", "rfft_test1.txt", + "stacker_test1.txt", "window_test1.txt", ]) diff --git a/python/tflite_micro/signal/ops/testdata/filter_bank_accumulation_16k.txt b/python/tflite_micro/signal/ops/testdata/filter_bank_accumulation_16k.txt new file mode 100644 index 00000000000..5d98e9bbd3a --- /dev/null +++ b/python/tflite_micro/signal/ops/testdata/filter_bank_accumulation_16k.txt @@ -0,0 +1,26 @@ +257 16000 125.0 3800.0 25 5 122 +43352 +61587 +82655 +110528 +139607 +173009 +213758 +265032 +321372 +382003 +460187 +545621 +649849 +761362 +904955 +1052886 +1230922 +1448884 +1674101 +1960672 +2262187 +2621637 +3048830 +3522818 +4055575 \ No newline at end of file diff --git a/python/tflite_micro/signal/ops/testdata/filter_bank_accumulation_44k.txt b/python/tflite_micro/signal/ops/testdata/filter_bank_accumulation_44k.txt new file mode 100644 index 00000000000..372ba6bfd34 --- /dev/null +++ b/python/tflite_micro/signal/ops/testdata/filter_bank_accumulation_44k.txt @@ -0,0 +1,26 @@ +1025 44100 125.0 3800.0 25 7 177 +88928 +130900 +177498 +229636 +290802 +366442 +455869 +557023 +666091 +811407 +972244 +1144538 +1367988 +1616725 +1889658 +2224246 +2601615 +3033067 +3541380 +4113125 +4774754 +5532980 +6404370 +7413694 +8552917 \ No newline at end of file diff --git a/python/tflite_micro/signal/ops/testdata/filter_bank_accumulation_8k.txt b/python/tflite_micro/signal/ops/testdata/filter_bank_accumulation_8k.txt new file mode 100644 index 00000000000..fa6b061be06 --- /dev/null +++ b/python/tflite_micro/signal/ops/testdata/filter_bank_accumulation_8k.txt @@ -0,0 +1,26 @@ +129 8000 125.000000 3800.000000 25 5 122 +43352 +61587 +82655 +110528 +139607 +173009 +213758 +265032 +321372 +382003 +460187 +545621 +649849 +761362 +904955 +1052886 +1230922 +1448884 +1674101 +1960672 +2262187 +2621637 +3048830 +3522818 +4055575 \ No newline at end of file diff --git a/python/tflite_micro/signal/ops/testdata/filter_bank_spectral_subtraction_test1.txt b/python/tflite_micro/signal/ops/testdata/filter_bank_spectral_subtraction_test1.txt new file mode 100644 index 00000000000..93ce31f05b8 --- /dev/null +++ b/python/tflite_micro/signal/ops/testdata/filter_bank_spectral_subtraction_test1.txt @@ -0,0 +1,550 @@ +32 0.04 0.0 0 0.05 0 +322 308 210 212 181 251 403 259 65 48 76 48 50 46 53 52 112 191 136 59 70 51 39 64 33 44 41 49 74 107 262 479 +310 296 202 204 174 241 387 249 63 47 73 47 49 45 51 50 108 184 131 57 68 49 38 62 32 43 40 48 72 103 252 460 +12 12 8 8 7 10 16 10 2 1 3 1 1 1 2 2 4 7 5 2 2 2 1 2 1 1 1 1 2 4 10 19 +623 526 846 734 378 235 191 179 84 84 81 71 95 35 33 66 291 323 109 56 91 79 53 50 42 39 40 62 54 60 252 338 +587 494 805 697 357 217 169 163 79 80 75 68 91 33 30 62 276 304 100 52 86 74 50 47 40 37 38 59 50 54 233 307 +36 32 41 37 21 18 22 16 5 4 6 3 4 2 3 4 15 19 9 4 5 5 3 3 2 2 2 3 4 6 19 31 +3398 3141 2038 2192 1621 708 416 267 85 149 131 52 46 39 56 52 81 93 116 49 52 56 55 38 36 48 46 63 40 33 34 51 +3228 2985 1918 2069 1537 663 379 241 77 140 121 48 41 36 51 47 64 72 103 44 46 49 50 34 33 45 43 58 35 26 15 20 +170 156 120 123 84 45 37 26 8 9 10 4 5 3 5 5 17 21 13 5 6 7 5 4 3 3 3 5 5 7 19 31 +1684 1443 2981 3969 1468 542 202 222 114 83 66 84 53 19 29 81 162 134 68 73 76 63 44 61 52 59 43 70 81 84 184 228 +1454 1236 2747 3693 1329 478 159 189 102 72 54 77 47 16 24 73 140 109 53 66 68 54 38 55 48 54 39 63 73 74 159 190 +230 207 234 276 139 64 43 33 12 11 12 7 6 3 5 8 22 25 15 7 8 9 6 6 4 5 4 7 8 10 25 38 +243 2069 3060 2731 1212 353 175 145 146 118 165 95 108 26 21 78 97 56 87 58 52 49 60 82 49 51 63 87 87 109 382 572 +13 1788 2714 2357 1031 278 127 108 129 103 147 85 98 23 16 68 73 30 70 49 43 39 52 73 44 45 57 77 76 96 343 513 +230 281 346 374 181 75 48 37 17 15 18 10 10 3 5 10 24 26 17 9 9 10 8 9 5 6 6 10 11 13 39 59 +888 1076 1306 1079 550 361 309 228 162 72 66 96 87 33 116 550 1095 778 335 161 51 62 45 38 58 38 66 58 80 77 70 55 +632 764 922 677 355 275 251 184 140 55 47 83 74 29 107 519 1029 722 306 146 41 50 36 28 51 31 58 47 67 62 30 2 +256 312 384 402 195 86 58 44 22 17 19 13 13 4 9 31 66 56 29 15 10 12 9 10 7 7 8 11 13 15 40 58 +1058 702 636 809 1001 577 220 221 109 112 66 106 53 41 73 742 1432 564 216 49 62 42 32 68 72 70 85 46 65 85 54 43 +770 375 242 391 774 472 156 170 84 92 46 90 39 36 62 683 1312 488 180 33 50 29 23 56 63 61 74 34 50 68 14 2 +288 327 394 418 227 105 64 51 25 20 20 16 14 5 11 59 120 76 36 16 12 13 9 12 9 9 11 12 15 17 40 57 +842 739 1397 1451 762 416 334 291 169 126 59 54 62 31 84 101 250 234 68 57 80 62 69 48 40 48 48 42 70 72 50 37 +532 396 963 992 514 299 260 231 139 102 38 37 47 25 71 41 125 152 31 40 66 48 58 35 30 38 36 29 53 53 10 1 +310 343 434 459 248 117 74 60 30 24 21 17 15 6 13 60 125 82 37 17 14 14 11 13 10 10 12 13 17 19 40 56 +744 1226 2470 2022 340 256 354 378 182 95 160 82 74 69 78 154 247 137 106 116 48 21 26 45 48 51 33 38 35 35 30 29 +417 848 1955 1501 89 134 269 306 146 69 134 63 57 61 63 91 118 53 67 96 33 7 15 31 37 40 21 25 18 16 1 1 +327 378 515 521 251 122 85 72 36 26 26 19 17 8 15 63 129 84 39 20 15 14 11 14 11 11 12 13 17 19 39 54 +801 1315 1704 718 597 378 427 401 177 129 169 58 41 26 49 64 105 140 84 50 39 27 33 37 69 57 39 51 41 30 35 33 +456 900 1142 190 333 246 329 316 136 99 138 38 24 18 33 3 5 54 44 29 24 13 22 23 56 45 26 37 24 11 1 1 +345 415 562 528 264 132 98 85 41 30 31 20 17 8 16 63 128 86 40 21 15 14 11 14 13 12 13 14 17 19 38 53 +949 1178 1882 1655 900 491 351 462 174 56 108 58 36 37 50 52 129 132 86 67 35 35 72 55 65 41 48 43 46 42 46 35 +580 733 1268 1082 611 345 243 362 128 25 74 37 19 28 33 2 6 45 45 45 20 21 59 40 50 28 34 28 28 23 8 1 +369 445 614 573 289 146 108 100 46 31 34 21 17 9 17 62 128 87 41 22 15 14 13 15 15 13 14 15 18 19 38 52 +573 536 1285 2035 829 652 472 405 173 173 90 56 42 33 60 62 51 61 90 82 35 46 41 74 38 26 31 23 63 39 34 23 +196 88 645 1404 519 486 350 293 122 137 54 34 25 24 42 3 2 3 48 58 20 31 27 57 23 13 17 8 44 20 1 1 +377 448 640 631 310 166 122 112 51 36 36 22 17 9 18 62 124 85 42 24 15 15 14 17 15 13 14 15 19 19 37 50 +734 307 766 1520 1020 552 277 351 188 250 154 78 88 34 64 57 78 130 82 58 39 43 43 39 57 76 43 48 63 49 40 26 +343 15 121 854 682 371 149 230 132 206 114 54 69 25 45 2 3 44 39 33 24 27 28 22 41 61 28 32 43 29 3 1 +391 442 645 666 338 181 128 121 56 44 40 24 19 9 19 61 122 86 43 25 15 16 15 17 16 15 15 16 20 20 37 49 +822 593 756 437 422 311 432 310 260 500 273 68 76 74 57 81 42 81 96 66 86 68 80 70 72 60 50 36 38 54 54 34 +414 145 107 21 81 125 292 182 196 438 224 43 55 63 37 20 2 4 51 40 69 50 63 51 54 44 34 20 18 33 17 1 +408 448 649 656 341 186 140 128 64 62 49 25 21 11 20 61 118 85 45 26 17 18 17 19 18 16 16 16 20 21 37 48 +121 412 463 1013 793 417 469 582 452 502 227 145 154 85 63 77 132 101 121 75 78 91 56 90 84 92 63 77 62 66 79 48 +6 20 23 343 434 222 316 436 373 423 171 116 128 72 42 16 14 16 73 48 59 71 38 69 64 73 46 59 41 44 41 2 +396 446 641 670 359 195 153 146 79 79 56 29 26 13 21 61 118 85 48 27 19 20 18 21 20 19 17 18 21 22 38 48 +1414 691 1001 1419 833 711 351 405 191 213 183 179 102 69 49 88 89 54 69 70 36 67 80 63 97 83 50 87 82 70 53 65 +978 236 346 720 456 496 191 249 108 129 122 145 73 54 27 26 4 2 21 42 17 46 60 41 74 62 32 67 59 47 15 17 +436 455 655 699 377 215 160 156 83 84 61 34 29 15 22 62 116 83 48 28 19 21 20 22 23 21 18 20 23 23 38 48 +1243 1015 622 986 925 366 485 619 365 348 426 129 63 20 45 78 107 148 135 116 74 102 121 89 119 71 75 80 118 88 41 48 +775 538 31 276 527 145 313 445 271 254 351 92 33 5 23 16 5 63 84 85 53 78 97 65 93 49 55 58 92 63 3 2 +468 477 653 710 398 221 172 174 94 94 75 37 30 15 22 62 115 85 51 31 21 24 24 24 26 22 20 22 26 25 38 48 +7596 7556 4147 5224 4491 1996 1562 1725 1321 1107 569 235 192 108 93 278 1256 2074 1348 713 200 92 144 181 183 109 87 125 138 82 54 61 +6844 6796 3355 4334 3930 1705 1335 1489 1178 973 475 191 156 90 69 208 1096 1910 1246 655 172 66 116 151 151 84 65 99 108 55 16 13 +752 760 792 890 561 291 227 236 143 134 94 44 36 18 24 70 160 164 102 58 28 26 28 30 32 25 22 26 30 27 38 48 +19368 14371 9997 18196 11384 8150 9028 7222 3398 2926 2634 813 493 203 436 808 4641 5206 2305 1451 501 258 238 812 680 222 169 180 122 120 246 352 +17872 13067 8838 16615 10391 7545 8450 6707 3125 2681 2439 739 439 178 396 709 4302 4841 2115 1338 455 223 202 751 623 190 142 148 89 90 200 292 +1496 1304 1159 1581 993 605 578 515 273 245 195 74 54 25 40 99 339 365 190 113 46 35 36 61 57 32 27 32 33 30 46 60 +16386 11154 31366 36892 19623 39608 29073 9880 7609 5195 5929 1670 1120 141 1052 2860 4247 1615 1475 750 743 360 327 754 663 259 232 422 406 272 440 589 +14295 9457 29000 33900 17886 37444 27356 8991 7043 4753 5505 1533 1024 112 972 2651 3752 1201 1234 612 670 313 280 666 582 218 197 375 359 233 379 508 +2091 1697 2366 2992 1737 2164 1717 889 566 442 424 137 96 29 80 209 495 414 241 138 73 47 47 88 81 41 35 47 47 39 61 81 +12308 16170 46360 47914 33313 59356 30850 11434 9573 6031 5623 2352 1869 228 1762 2413 3675 1919 627 385 513 230 348 645 421 312 533 738 771 555 693 689 +9809 13895 42236 43127 30314 54906 27969 10124 8647 5366 4992 2127 1703 192 1615 2116 3053 1445 371 238 423 176 289 535 327 261 479 664 696 496 607 584 +2499 2275 4124 4787 2999 4450 2881 1310 926 665 631 225 166 36 147 297 622 474 256 147 90 54 59 110 94 51 54 74 75 59 86 105 +17388 19064 58582 64313 40955 75268 41548 6891 7075 3746 4683 1447 1043 487 1518 3587 3768 2300 939 457 350 284 330 432 329 265 477 1025 1330 507 511 834 +14294 16118 52281 57147 36439 67987 37122 5358 5904 2958 3891 1174 842 433 1317 3159 3021 1754 656 298 250 221 261 310 226 206 407 913 1205 431 409 700 +3094 2946 6301 7166 4516 7281 4426 1533 1171 788 792 273 201 54 201 428 747 546 283 159 100 63 69 122 103 59 70 112 125 76 102 134 +16537 26767 71089 74236 37432 53868 28774 2183 3692 3031 3617 1413 799 790 1908 2965 3409 2971 521 702 282 265 140 235 266 209 454 843 1059 398 658 989 +12906 22869 62198 64389 31601 44725 23375 625 2421 2154 2713 1095 575 707 1639 2436 2556 2329 229 522 175 194 69 109 157 145 369 702 897 310 534 821 +3631 3898 8891 9847 5831 9143 5399 1558 1271 877 904 318 224 83 269 529 853 642 292 180 107 71 71 126 109 64 85 141 162 88 124 168 +7697 22317 36009 28903 19334 14170 9881 7144 4700 2809 1720 1067 1068 750 702 743 1623 1468 482 452 230 205 118 259 268 284 308 358 467 308 145 201 +3904 17683 26034 18295 12964 4827 4303 5363 3292 1855 784 720 811 641 416 206 740 793 183 262 119 129 46 128 153 212 215 209 293 212 21 32 +3793 4634 9975 10608 6370 9343 5578 1781 1408 954 936 347 257 109 286 537 883 675 299 190 111 76 72 131 115 72 93 149 174 96 124 169 +5797 4982 8684 8041 8540 14235 7774 1734 2574 1999 1785 797 828 674 627 594 517 1170 574 195 122 114 103 138 87 191 209 220 215 146 167 324 +1924 335 434 401 2084 4697 2109 86 1120 1004 816 433 549 543 328 55 25 476 265 9 11 37 30 7 4 115 112 69 40 49 42 149 +3873 4647 9923 10505 6456 9538 5665 1779 1454 995 969 364 279 131 299 539 868 694 309 190 111 77 73 131 113 76 97 151 175 97 125 175 +3515 1586 1658 2959 8500 12333 5629 2134 2415 869 1022 907 543 298 379 520 648 822 381 174 77 92 174 191 74 140 150 246 334 261 237 230 +175 79 82 147 1963 2684 281 341 923 43 51 522 254 161 77 25 32 123 70 8 3 15 97 58 3 62 51 92 153 158 108 53 +3858 4524 9592 10203 6537 9649 5663 1793 1492 989 971 385 289 137 302 538 859 699 311 189 109 77 77 133 111 78 99 154 181 103 129 177 +2224 3543 4543 3049 4432 6523 2778 1520 1493 609 749 473 300 160 307 367 172 814 799 242 111 109 168 162 126 104 173 199 353 269 203 173 +111 177 227 152 221 326 138 75 74 30 37 85 14 23 15 18 8 111 469 51 5 31 88 28 15 25 72 44 166 160 72 8 +3792 4484 9390 9916 6452 9524 5547 1782 1492 973 962 388 289 137 302 531 831 703 330 191 109 78 80 134 111 79 101 155 187 109 131 176 +1235 4576 5823 2907 2588 3966 1494 413 560 305 389 537 434 203 250 344 251 613 918 281 145 204 199 106 97 149 161 196 164 104 94 77 +61 228 291 145 129 198 74 20 27 15 19 144 140 64 12 17 12 30 565 87 35 121 115 5 4 68 58 40 8 5 4 3 +3689 4487 9247 9635 6297 9301 5384 1727 1454 946 939 393 294 139 299 523 807 699 353 194 110 83 84 132 110 81 103 156 186 108 129 172 +1073 2081 1805 3243 3076 4169 2073 542 498 946 765 434 382 98 116 209 362 1329 1554 476 376 244 192 205 171 84 120 151 221 183 121 75 +53 104 90 162 153 208 103 27 24 47 38 40 85 4 5 10 18 605 1153 271 256 155 104 71 59 4 17 7 34 73 6 3 +3584 4390 8949 9379 6168 9095 5251 1679 1415 946 932 394 297 137 291 510 789 724 401 205 120 89 88 134 112 81 103 155 187 110 128 168 +2436 2480 4256 3867 2805 3807 2884 1712 1276 1361 1028 734 390 254 872 1373 2454 3335 4896 8146 10159 7203 1494 856 804 291 205 395 475 606 1013 578 +121 123 212 193 140 190 144 85 63 399 93 327 90 113 558 829 1599 2507 4316 7624 9638 6830 1350 694 665 202 98 231 277 477 850 394 +3538 4313 8761 9158 6033 8883 5156 1680 1409 962 935 407 300 141 314 544 855 828 580 522 521 373 144 162 139 89 107 164 198 129 163 184 +888 919 1524 1657 3008 6417 9674 9419 4806 2316 1283 879 1422 620 1495 1272 1934 3748 5666 7715 13043 7161 4938 1514 1730 1199 359 355 2311 3368 3008 1759 +44 45 76 82 150 320 4338 7430 3262 1300 335 454 1078 460 1134 699 1036 2804 4883 6906 12022 6517 4603 1298 1528 1066 242 184 2029 3110 2732 1513 +3432 4177 8471 8858 5912 8784 5336 1989 1544 1016 948 425 344 160 361 573 898 944 783 809 1021 644 335 216 202 133 117 171 282 258 276 246 +1978 1707 3491 7036 8527 8027 7337 5010 1004 916 1424 1691 1024 568 1175 1065 1748 2932 3303 2677 3235 3383 2563 1918 2265 1165 423 576 1940 2490 1455 1716 +98 85 174 351 2511 401 1922 2901 50 45 457 1216 653 392 782 473 817 1909 2420 1794 2126 2630 2139 1634 1981 991 294 389 1592 2143 1132 1412 +3373 4078 8271 8785 6016 8753 5415 2109 1522 1012 967 475 371 176 393 592 931 1023 883 883 1109 753 424 284 284 174 129 187 348 347 323 304 +20917 28069 21895 12010 14010 15767 12106 4142 2772 3069 2396 1007 611 416 1041 698 1055 2082 2192 3116 2613 2802 2723 3497 4473 1352 596 540 2244 2627 1644 1456 +16843 23032 13080 3097 7675 6734 6424 1952 1201 1975 1372 511 231 231 623 102 120 1017 1257 2144 1444 1968 2208 3085 4022 1131 449 339 1821 2189 1269 1106 +4074 5037 8815 8913 6335 9033 5682 2190 1571 1094 1024 496 380 185 418 596 935 1065 935 972 1169 834 515 412 451 221 147 201 423 438 375 350 +35861 32225 28979 68360 68654 38455 33954 27091 7850 7293 4286 3294 1764 989 614 1729 3611 7096 5992 8290 11745 11808 11950 11491 13422 6014 1045 1138 2705 1061 576 993 +30517 26102 19358 57071 59828 28246 27142 23906 6028 5952 3132 2687 1329 772 189 1088 2570 5790 4855 7026 10154 10536 10978 10637 12453 5562 863 900 2191 599 193 618 +5344 6123 9621 11289 8826 10209 6812 3185 1822 1341 1154 607 435 217 425 641 1041 1306 1137 1264 1591 1272 972 854 969 452 182 238 514 462 383 375 +27149 14111 40871 103642 57934 42056 73468 36226 10127 6884 2733 2738 2476 1416 812 2591 6200 4503 7927 13940 12303 31441 22214 16455 24114 8687 1717 1867 4008 1625 470 1109 +20934 7669 30001 88661 47145 30574 63992 31721 7973 5322 1516 2046 1960 1152 372 1873 4953 3070 6519 12170 10284 28963 20393 14978 22220 7906 1474 1564 3355 1117 84 705 +6215 6442 10870 14981 10789 11482 9476 4505 2154 1562 1217 692 516 264 440 718 1247 1433 1408 1770 2019 2478 1821 1477 1894 781 243 303 653 508 386 404 +24252 15511 53706 99669 46122 76770 100934 31158 14246 7214 3191 1583 3422 1828 862 2979 4090 4461 8899 10528 17571 41240 14701 16711 14591 6799 1863 1576 3493 1885 526 1046 +17316 8707 41124 81303 33921 62678 87802 25588 11609 5427 1896 856 2790 1502 406 2171 2730 2907 7192 8408 14931 37213 12366 14625 12190 5778 1556 1223 2727 1322 135 617 +6936 6804 12582 18366 12201 14092 13132 5570 2637 1787 1295 727 632 326 456 808 1360 1554 1707 2120 2640 4027 2335 2086 2401 1021 307 353 766 563 391 429 +15140 18054 63457 82138 32589 114830 111204 27831 13905 5843 5504 2754 2940 1096 1046 2324 3871 4943 6839 7482 22113 28244 14756 12446 18007 12857 1393 2325 4451 1533 677 1251 +7877 10801 48842 61223 19573 96711 94152 21372 10818 3894 4041 1946 2216 740 567 1456 2411 3254 4927 5148 18695 23249 11925 9946 14983 11363 1043 1894 3538 932 275 790 +7263 7253 14615 20915 13016 18119 17052 6459 3087 1949 1463 808 724 356 479 868 1460 1689 1912 2334 3418 4995 2831 2500 3024 1494 350 431 913 601 402 461 +15272 19289 60997 69570 49748 128392 92234 24464 21627 6264 6889 2903 1842 615 936 1576 3981 4263 5662 7533 13443 22028 16316 8626 24416 12788 1684 2644 3869 1075 395 878 +7689 11555 44528 46710 35264 105865 72177 17286 17799 4143 5210 2012 1074 249 439 680 2421 2472 3601 4992 9625 16353 12946 5882 20537 10843 1281 2125 2838 456 19 401 +7583 7734 16469 22860 14484 22527 20057 7178 3828 2121 1679 891 768 366 497 896 1560 1791 2061 2541 3818 5675 3370 2744 3879 1945 403 519 1031 619 401 477 +9279 26152 71124 66975 58297 103291 60335 21451 13716 6186 3244 4608 3795 618 827 1993 2896 2724 5365 5711 12045 20914 14421 9725 18907 4027 1294 2105 3347 979 896 958 +1629 17682 52471 42352 42062 77536 38668 13703 9493 3903 1503 3569 2906 242 317 1054 1283 896 3172 3044 7899 14630 10610 6702 14428 1999 856 1523 2224 346 476 462 +7650 8470 18653 24623 16235 25755 21667 7748 4223 2283 1741 1039 889 376 510 939 1613 1828 2193 2667 4146 6284 3811 3023 4479 2028 438 582 1123 633 420 496 +8165 30378 62039 43952 67894 67766 19339 21922 11165 4359 3103 3721 1663 871 757 1326 1771 2179 5907 3767 12113 13729 10502 7232 10397 3575 977 1336 1689 900 794 1327 +495 21033 41652 18557 49594 40332 966 13608 6665 1994 1308 2575 744 476 238 372 152 337 3566 1057 7649 7148 6424 4041 5682 1486 518 724 544 257 360 798 +7670 9345 20387 25395 18300 27434 21573 8314 4500 2365 1795 1146 919 395 519 954 1619 1842 2341 2710 4464 6581 4078 3191 4715 2089 459 612 1145 643 434 529 +11299 34791 60771 42562 77890 75125 23008 9915 7608 3395 2329 1594 1264 1008 608 1088 1652 2013 2148 3541 5412 15045 10239 7366 10037 2229 440 805 1444 1013 743 419 +3484 24429 38770 16481 57208 45785 1378 1537 2984 989 513 431 332 589 86 129 82 165 107 798 911 8126 5915 4009 5110 135 21 186 288 356 297 20 +7815 10362 22001 26081 20682 29340 21630 8378 4624 2406 1816 1163 932 419 522 959 1620 1848 2333 2743 4501 6919 4324 3357 4927 2094 458 619 1156 657 446 524 +12771 46445 60739 47014 77842 40653 11109 11952 5136 2314 1972 943 409 458 619 1326 2632 1521 2442 2036 3231 7034 14984 8088 7018 2517 856 1210 1459 533 453 345 +4758 34641 37190 20097 54875 10861 555 3432 492 115 150 47 20 38 94 353 972 76 122 101 161 351 10234 4542 2008 407 383 568 291 26 22 17 +8013 11804 23549 26917 22967 29792 21209 8520 4644 2402 1822 1154 911 420 525 973 1660 1834 2337 2714 4450 6923 4750 3546 5010 2110 473 642 1168 652 446 516 +10420 49801 57616 49540 77904 45571 8842 7629 2356 2393 1790 1077 451 274 308 345 868 1231 2012 2114 4809 7463 13168 12272 6894 2685 773 1428 2085 687 512 532 +2311 36478 32706 21719 52741 15149 441 381 117 119 89 53 22 13 15 17 43 61 100 105 345 519 8082 8378 1809 553 289 755 881 34 64 26 +8109 13323 24910 27821 25163 30422 20714 8484 4552 2401 1820 1150 892 414 516 947 1628 1809 2324 2690 4464 6944 5086 3894 5085 2132 484 673 1204 653 448 516 +12147 38439 38883 23703 23068 21535 10519 3112 2200 1889 1071 815 720 178 270 339 462 836 801 671 867 2232 4759 7507 3275 1278 589 454 472 282 165 355 +3877 24112 13415 1184 1153 1076 525 155 109 94 53 40 35 8 13 16 23 41 40 33 43 111 237 3469 163 63 101 22 23 14 8 17 +8270 14327 25468 27656 25079 30066 20306 8269 4457 2380 1790 1136 885 404 506 922 1581 1770 2263 2609 4320 6755 5072 4038 5012 2097 488 664 1174 638 436 509 +8803 18678 16222 9579 9850 5791 4505 2293 1577 1224 902 384 471 229 323 328 516 766 1670 1055 1402 3403 2131 2715 1345 660 385 391 318 233 201 293 +512 4178 810 478 492 289 225 114 78 61 45 19 23 11 16 16 25 38 83 52 70 170 106 135 67 32 19 19 15 11 10 14 +8291 14500 25098 26933 24470 29095 19674 8030 4341 2333 1754 1105 868 397 498 898 1538 1729 2239 2546 4203 6620 4954 3985 4865 2039 483 653 1139 621 426 500 +8397 7480 5635 4412 11096 9623 5687 2448 693 973 844 508 466 223 390 598 456 486 390 579 929 1749 1731 2816 1161 777 413 647 504 353 137 130 +419 373 281 220 554 481 284 122 34 48 42 25 23 11 19 29 22 24 19 28 46 87 86 140 58 38 20 32 25 17 6 6 +8295 14219 24319 26032 23935 28316 19114 7806 4195 2278 1717 1081 851 390 493 886 1494 1679 2165 2467 4072 6425 4825 3938 4716 1988 480 652 1113 610 414 485 +9211 16898 15369 7302 4178 7014 5725 1879 1000 616 447 822 397 193 197 283 362 542 209 366 563 890 1400 1626 1059 430 247 338 215 230 95 135 +880 2572 768 365 208 350 286 93 49 30 22 41 19 9 9 14 18 27 10 18 28 44 69 81 52 21 12 16 10 11 4 6 +8331 14326 23961 25283 23145 27464 18578 7569 4067 2211 1666 1070 832 382 481 861 1448 1633 2086 2383 3931 6203 4688 3845 4569 1925 470 639 1077 594 401 471 +7784 20827 21073 7215 5467 8578 6695 2060 1439 1502 1552 2022 1857 851 1648 2556 3842 3797 2314 853 1892 4583 4980 3868 2423 1257 2463 3215 1309 789 848 581 +389 6242 1053 360 273 428 334 102 71 75 77 914 985 451 1121 1628 2299 2078 219 42 94 229 281 193 121 62 1914 2474 223 188 430 106 +8309 14585 23845 24560 22438 26708 18102 7348 3961 2182 1661 1108 872 400 527 928 1543 1719 2095 2321 3849 6138 4699 3845 4483 1898 549 741 1086 601 418 475 +9100 18042 14711 5410 6234 8707 7660 5476 2716 5137 5825 2852 2854 3154 4490 6012 6126 4014 3001 2264 2337 3706 3957 2080 1775 808 1851 2319 1344 678 1123 1116 +760 3319 735 270 311 435 382 273 135 2837 3998 1675 1903 2644 3805 4881 4400 2204 870 113 116 185 197 103 88 40 1250 1515 248 74 677 616 +8340 14723 23479 23794 21790 25988 17684 7273 3911 2300 1827 1177 951 510 685 1131 1726 1810 2131 2318 3788 6040 4669 3774 4374 1854 601 804 1096 604 446 500 +5289 17130 18776 10048 16830 9455 2296 1820 944 3773 5453 1858 982 1283 3380 3050 3963 2820 1547 1768 1930 2211 1768 1852 2056 1987 1375 986 1896 1381 891 591 +264 2311 938 502 841 472 114 90 47 1415 3482 654 49 743 2588 1843 2148 970 77 88 96 110 88 92 102 128 744 175 769 746 428 88 +8218 14819 23290 23244 21591 25327 17068 7054 3792 2358 1971 1204 952 540 792 1207 1815 1850 2107 2296 3713 5886 4553 3697 4281 1859 631 811 1127 635 463 503 +8138 29771 30222 18484 20533 7010 3056 1814 1869 961 1215 728 1417 877 1710 2369 1495 1427 3266 2182 1554 1026 1305 1370 1084 748 1188 1210 1276 660 578 424 +406 14355 6655 923 1026 350 152 90 93 48 60 36 447 324 882 1116 74 71 1113 109 77 51 65 68 54 37 535 384 144 32 111 21 +8214 15416 23567 23053 21548 24594 16507 6844 3715 2302 1940 1184 970 553 828 1253 1802 1833 2153 2291 3626 5691 4423 3603 4153 1814 653 826 1132 635 467 499 +14914 47749 53488 27267 31063 13479 4464 2230 1798 979 485 537 897 846 1298 1829 1380 2056 3512 1499 1539 765 1216 1126 1096 849 989 1011 1151 744 555 554 +6433 31041 28725 4046 9135 673 223 111 89 48 24 26 44 282 452 553 68 215 1305 74 76 38 60 56 54 42 323 178 57 105 85 53 +8481 16708 24763 23221 21928 24149 16025 6659 3638 2249 1881 1158 967 564 846 1276 1785 1841 2207 2259 3542 5494 4294 3503 4030 1775 666 833 1132 639 470 501 +17160 56980 57221 39549 48300 18813 4356 2024 995 1228 1864 785 979 687 676 1642 2760 3568 1842 1036 708 1491 2273 1961 1532 803 1651 972 1303 1005 491 731 +8333 38663 31161 15676 25318 940 217 101 49 61 93 39 48 119 33 352 937 1658 92 51 35 74 113 98 76 40 946 134 165 352 24 221 +8827 18317 26060 23873 22982 23935 15558 6473 3532 2208 1880 1143 967 568 839 1290 1823 1910 2192 2210 3428 5333 4213 3441 3930 1736 705 838 1138 653 470 510 +17616 55090 50203 46994 59809 22046 5036 3969 1895 923 1280 956 257 388 762 1064 2665 2809 1918 981 1043 1870 2249 1414 1332 945 1285 1228 813 737 559 1098 +8438 35303 23178 22197 35355 1102 251 198 94 46 63 47 12 19 38 53 809 864 95 49 52 93 112 70 66 47 557 375 40 81 86 565 +9178 19787 27025 24797 24454 23859 15137 6372 3466 2156 1856 1135 938 560 835 1280 1856 1945 2181 2160 3332 5194 4134 3359 3826 1704 728 853 1125 656 473 533 +17236 48129 38425 52926 62127 20314 2190 782 1397 1297 1586 828 399 367 514 1664 2902 1406 470 511 655 897 1262 815 987 562 524 544 616 365 428 1099 +7736 27209 10945 27005 36167 1015 109 39 69 64 79 41 19 18 25 369 1005 70 23 25 32 44 63 40 49 28 26 27 30 18 21 544 +9500 20920 27480 25921 25960 23717 14619 6148 3383 2121 1845 1122 916 552 822 1295 1897 1923 2112 2094 3224 5022 4019 3257 3712 1658 719 840 1104 644 471 555 +18273 49195 36818 56227 61522 18405 3501 2218 1489 1324 1509 528 207 219 233 800 1954 2259 985 370 521 1003 1301 2091 1518 892 926 493 345 270 473 607 +8423 27145 8965 29095 34141 920 175 110 74 66 75 26 10 10 11 39 97 323 49 18 26 50 65 104 75 44 199 24 17 13 23 50 +9850 22050 27853 27132 27381 23504 14174 5990 3307 2089 1831 1098 887 538 798 1275 1899 1936 2066 2025 3115 4861 3910 3210 3624 1627 727 826 1073 629 471 557 +19326 53554 40046 60840 63515 18458 2765 1270 1045 713 937 782 465 233 419 712 1144 1202 1166 463 443 590 1110 1428 925 548 720 433 477 243 310 332 +9098 30245 11706 32361 34690 922 138 63 52 35 46 39 23 11 20 35 57 60 58 23 22 29 55 71 46 27 35 21 23 12 15 16 +10228 23309 28340 28479 28825 23302 13717 5801 3216 2033 1795 1085 870 525 782 1252 1868 1906 2030 1962 3008 4690 3798 3138 3516 1583 726 810 1049 613 464 548 +22407 59763 45869 60784 60523 16737 2157 771 831 1077 804 422 557 380 673 694 1004 441 421 386 477 563 702 664 558 508 586 460 469 313 259 558 +11693 34997 16829 31014 30431 836 107 38 41 53 40 21 27 18 33 34 50 22 21 19 23 28 35 33 27 25 29 22 23 15 12 27 +10714 24766 29040 29770 30092 23039 13254 5599 3120 1994 1755 1058 857 519 777 1229 1833 1847 1965 1898 2906 4525 3674 3039 3397 1540 720 796 1025 601 455 548 +26454 57958 39931 57281 51865 13310 2228 1725 1042 803 759 360 384 267 215 347 894 864 542 283 230 313 655 501 468 334 380 501 495 294 172 240 +15111 31866 10456 26412 20903 665 111 86 52 40 37 17 19 13 10 17 44 43 27 14 11 15 32 25 23 16 18 25 24 14 8 11 +11343 26092 29475 30869 30962 22650 12813 5444 3036 1946 1715 1030 838 508 754 1193 1795 1807 1908 1833 2799 4356 3553 2937 3279 1491 706 784 1003 588 443 535 +24590 50530 33633 44280 36796 9424 611 919 871 962 530 430 248 262 381 794 1025 392 237 300 324 252 365 556 352 338 512 614 548 344 199 166 +12718 23462 3992 12875 5601 471 30 45 43 48 26 21 12 13 19 39 51 19 11 14 16 12 18 27 17 16 25 30 27 17 9 8 +11872 27068 29641 31405 31195 22121 12325 5263 2949 1906 1667 1006 814 498 739 1177 1764 1750 1841 1771 2700 4191 3425 2841 3161 1444 698 777 984 578 433 520 +20856 39429 24614 22279 15851 3851 1229 1114 601 760 602 302 181 250 352 230 581 503 215 271 215 170 218 242 202 278 282 381 441 197 85 165 +8625 11867 1230 1113 792 192 61 55 30 37 30 15 9 12 17 11 29 25 10 13 10 8 10 12 10 13 14 19 22 9 4 8 +12231 27562 29440 31040 30581 21390 11881 5097 2855 1860 1624 977 788 488 723 1139 1716 1700 1775 1711 2600 4030 3296 2737 3042 1397 681 761 962 562 419 505 +13236 23501 15502 10918 3869 1305 1051 487 382 286 644 347 283 78 111 223 277 423 386 330 137 161 190 203 165 248 306 331 292 131 77 102 +965 1174 774 545 193 65 52 24 19 14 32 17 14 3 5 11 13 21 19 16 6 8 9 10 8 12 15 16 14 6 3 5 +12271 27399 28882 30235 29513 20587 11448 4912 2756 1797 1584 951 767 471 698 1102 1658 1648 1719 1655 2501 3875 3171 2635 2926 1351 666 743 935 544 405 488 +4027 10035 9049 14424 9730 2034 877 1070 655 331 350 245 360 208 269 346 231 402 285 222 165 143 91 130 156 237 163 278 239 142 131 116 +201 501 452 721 486 101 43 53 32 16 17 12 17 10 13 17 11 20 14 11 8 7 4 6 7 11 8 13 11 7 6 5 +11941 26704 28089 29602 28722 19845 11025 4758 2672 1738 1534 922 750 460 680 1071 1600 1598 1661 1597 2407 3725 3047 2534 2815 1306 645 724 907 527 394 473 +2767 6760 8292 16184 15261 3865 1934 1186 585 316 474 605 390 336 192 489 464 318 243 200 216 209 293 271 307 165 73 164 270 189 139 140 +138 337 414 809 762 193 96 59 29 15 23 30 19 16 9 24 23 15 12 9 10 10 14 13 15 8 3 8 13 9 6 6 +11574 25906 27297 29065 28183 19206 10661 4615 2588 1681 1491 909 735 455 660 1047 1554 1546 1604 1541 2319 3584 2936 2443 2714 1260 622 701 881 513 383 459 +6416 12419 15082 19610 25929 10026 5531 2111 918 467 384 626 632 372 225 326 437 579 352 179 116 111 198 292 366 237 103 194 252 204 305 286 +320 620 753 980 1296 501 276 105 45 23 19 31 31 18 11 16 21 28 17 8 5 5 9 14 18 11 5 9 12 10 15 14 +11367 25366 26808 28687 28092 18839 10455 4514 2521 1632 1446 897 730 451 642 1018 1509 1507 1553 1486 2230 3445 2826 2357 2620 1219 601 680 855 500 379 452 +12873 32740 30072 29194 45602 21222 10483 4227 2301 1233 1223 1134 1987 1475 258 409 498 599 351 266 77 101 187 467 576 359 193 298 179 147 569 457 +1446 7080 3134 1459 16810 2288 524 211 115 61 61 228 1207 984 12 20 24 29 17 13 3 5 9 23 28 17 9 14 8 7 183 22 +11427 25660 26938 28707 28792 18934 10456 4502 2512 1616 1437 906 780 491 626 993 1468 1470 1504 1437 2143 3311 2720 2281 2538 1184 584 664 827 485 386 452 +14856 39645 34256 35786 52797 24229 18076 8789 4674 1806 1241 1799 2802 1610 254 305 305 456 437 255 253 183 201 385 489 235 247 384 491 275 293 223 +3292 13426 7026 6796 23046 5084 7316 4116 2076 183 62 858 1942 1075 12 15 15 22 21 12 12 9 10 19 24 11 12 19 24 13 14 11 +11564 26219 27230 28990 29751 19145 10760 4673 2598 1623 1429 941 860 535 611 965 1421 1429 1461 1389 2067 3185 2619 2205 2456 1146 570 652 813 476 382 442 +12964 33405 29124 28106 40165 22134 25776 12009 5401 3644 3062 2702 3579 2565 924 510 276 305 358 254 248 231 188 440 737 236 209 430 608 166 131 132 +1345 6899 1819 1404 9998 2870 14416 7043 2691 1941 1568 1691 2611 1949 301 25 13 15 17 12 12 11 9 21 36 11 10 21 30 8 6 6 +11619 26506 27305 28954 30167 19264 11360 4966 2710 1703 1494 1011 968 616 623 946 1375 1384 1416 1343 1994 3066 2521 2134 2387 1109 555 643 804 463 371 429 +12419 29992 25630 22291 29283 22453 32643 14005 5547 5325 4539 4022 4291 2329 807 656 488 385 350 402 283 222 211 482 740 284 115 524 533 261 116 100 +769 3347 1281 1114 1463 3062 20433 8678 2724 3478 2924 2891 3191 1645 177 32 24 19 17 20 14 11 10 24 36 14 5 26 26 13 5 4 +11650 26645 27238 28687 30131 19391 12210 5327 2823 1847 1615 1131 1100 684 630 934 1339 1344 1373 1305 1925 2952 2428 2067 2321 1076 537 638 793 454 360 415 +10985 26685 24363 22948 29584 22779 36145 16307 5961 6117 6491 5373 4321 2365 462 651 637 368 229 290 297 187 169 355 761 589 255 413 947 772 224 85 +549 1333 1217 1147 1478 3253 22979 10542 3013 4100 4682 4073 3093 1614 23 32 31 18 11 14 14 9 8 17 38 29 12 20 148 306 11 4 +11623 26646 27123 28457 30109 19526 13166 5765 2948 2017 1809 1300 1228 751 623 922 1310 1304 1327 1264 1859 2841 2337 1998 2258 1056 525 629 799 466 354 401 +9112 22674 23148 17882 29719 23340 38157 19050 6766 5623 7496 7706 4237 1556 428 535 567 366 314 217 151 174 138 206 514 692 176 532 898 520 159 117 +455 1133 1157 893 1485 3662 23992 12754 3666 3462 5460 6150 2889 773 21 26 28 18 15 10 7 8 6 10 25 34 8 26 96 52 7 5 +11522 26487 26964 28034 30093 19678 14165 6296 3100 2161 2036 1556 1348 783 615 906 1280 1266 1286 1222 1790 2734 2249 1926 2188 1041 511 625 802 468 346 389 +8416 16304 24353 17837 31094 24208 37413 23971 7817 7064 10520 9202 4653 1352 580 811 524 476 323 301 127 120 162 160 429 561 306 808 2028 1590 324 91 +420 815 1217 891 1554 4349 22319 16969 4529 4707 8145 7341 3173 547 28 40 26 23 16 15 6 5 8 7 21 28 15 176 1177 1078 16 4 +11397 26079 26859 27626 30133 19859 15094 7002 3288 2357 2375 1861 1480 805 613 902 1249 1234 1247 1185 1723 2629 2165 1855 2117 1021 502 632 851 512 345 377 +9979 16341 17148 15434 19482 20854 33649 15175 4948 5398 7862 6756 4121 1568 572 612 514 362 353 191 139 179 242 110 221 282 217 527 1444 1507 324 105 +498 816 857 771 973 1042 17814 7847 1594 2920 5268 4700 2536 733 28 30 25 18 17 9 6 8 12 5 11 14 10 26 570 956 16 5 +11340 25689 26470 27138 29707 19898 15835 7328 3354 2478 2594 2056 1585 835 611 890 1219 1199 1211 1145 1659 2531 2088 1785 2041 991 490 627 874 551 344 366 +7268 12505 17644 9847 8354 10078 15178 7092 3159 8622 9133 5100 4386 1321 808 955 1133 1396 801 373 340 188 251 154 378 393 156 323 695 1162 302 92 +363 625 881 492 417 503 758 354 157 5899 6278 2923 2690 467 190 63 56 190 40 18 16 9 12 7 18 19 7 16 34 587 15 4 +11177 25161 26117 26446 28853 19505 15808 7318 3346 2723 2855 2177 1696 854 618 892 1215 1206 1194 1114 1606 2437 2014 1719 1974 967 476 614 866 575 342 355 +4476 6609 7654 5117 7174 5030 7718 4347 2194 2318 4062 1750 1957 1064 339 323 282 250 153 167 172 126 119 100 61 273 154 108 506 521 220 90 +223 330 382 255 358 251 385 217 109 115 1159 87 251 202 16 16 14 12 7 8 8 6 5 4 3 13 7 5 25 26 10 4 +10909 24419 25378 25593 27986 18926 15484 7199 3299 2706 2903 2159 1706 862 606 869 1177 1167 1152 1076 1548 2344 1938 1654 1897 939 463 593 851 572 337 344 +2170 3966 6677 4572 5279 5034 7029 3925 1733 1648 2689 1281 1212 711 533 593 1329 2368 2118 1660 988 440 162 119 116 278 245 122 273 299 168 114 +108 198 333 228 263 251 351 196 86 82 134 64 60 35 26 29 146 1153 928 561 49 21 8 5 5 13 12 6 13 14 8 5 +10559 23601 24630 24752 27078 18370 15145 7068 3236 2663 2894 2123 1686 855 603 857 1183 1215 1190 1099 1525 2267 1866 1592 1825 912 454 574 827 561 330 334 +1213 3911 3586 4212 4132 2489 3382 2946 845 1174 2202 1097 769 447 335 361 658 881 485 418 297 153 96 60 127 160 232 168 299 196 116 65 +60 195 179 210 206 124 169 147 42 58 110 54 38 22 16 18 32 44 24 20 14 7 4 2 6 7 11 8 14 9 5 3 +10185 22813 23788 23930 26160 17735 14674 6903 3140 2603 2866 2081 1649 838 592 837 1162 1201 1161 1071 1475 2182 1795 1530 1757 881 445 557 805 546 321 323 +1075 3044 3585 1961 970 681 1296 862 432 456 807 1177 916 173 225 270 428 823 654 458 222 187 179 102 161 213 311 290 147 158 90 62 +53 152 179 98 48 34 64 43 21 22 40 58 45 8 11 13 21 41 32 22 11 9 8 5 8 10 15 14 7 7 4 3 +9820 22022 22980 23051 25152 17053 14139 6661 3031 2517 2783 2044 1619 811 577 814 1132 1185 1140 1046 1424 2102 1730 1472 1693 854 439 546 778 530 311 312 +1465 2065 2824 2440 1440 1793 993 473 895 1041 529 664 558 178 132 115 284 421 202 184 161 118 124 96 119 162 144 99 101 86 71 52 +73 103 141 121 71 89 49 23 44 52 26 33 27 8 6 5 14 21 10 9 8 5 6 4 5 8 7 4 5 4 3 2 +9485 21224 22174 22227 24204 16442 13613 6413 2945 2457 2692 1988 1576 785 559 786 1098 1154 1102 1011 1373 2022 1665 1416 1630 826 427 528 750 512 301 301 +1089 1069 2188 2786 1099 1483 2001 1505 627 971 815 318 302 115 137 263 524 257 340 189 73 68 83 88 119 84 159 162 159 118 114 61 +54 53 109 139 54 74 100 75 31 48 40 15 15 5 6 13 26 12 16 9 3 3 4 4 5 4 7 8 7 5 5 3 +9149 20418 21374 21449 23280 15843 13148 6216 2852 2397 2616 1921 1525 758 542 765 1075 1118 1071 978 1321 1943 1601 1362 1569 796 416 513 726 496 293 291 +1337 2013 1807 2311 2636 1614 2307 1391 318 398 533 351 262 197 102 363 285 149 159 108 100 65 89 98 102 158 165 131 166 123 107 72 +66 100 90 115 131 80 115 69 15 19 26 17 13 9 5 18 14 7 7 5 4 3 4 4 5 7 8 6 8 6 5 3 +8836 19682 20591 20683 22454 15274 12714 6023 2750 2317 2532 1858 1474 735 524 748 1043 1079 1034 943 1272 1867 1540 1311 1510 770 405 497 703 481 285 282 +781 2881 3560 1620 1289 1432 1919 901 191 402 449 163 237 144 55 160 123 69 190 234 164 87 151 148 143 121 177 169 122 100 116 94 +39 144 177 80 64 71 95 45 9 20 22 8 11 7 2 7 6 3 9 11 8 4 7 7 7 6 8 8 6 4 5 4 +8513 19010 19910 19920 21607 14720 12282 5818 2647 2240 2448 1790 1424 711 505 724 1006 1038 1000 914 1227 1795 1484 1264 1455 744 395 483 679 465 278 274 +1392 1750 3040 2323 900 910 1538 760 569 583 279 157 204 131 106 184 195 145 84 121 150 122 90 119 163 124 93 118 93 140 87 77 +69 87 151 116 44 45 76 37 28 29 13 7 10 6 5 9 9 7 4 6 7 6 4 5 8 6 4 5 4 6 4 3 +8228 18319 19235 19216 20779 14167 11852 5615 2563 2173 2361 1724 1375 687 489 702 973 1002 963 882 1183 1728 1428 1218 1403 719 382 468 655 452 270 266 +661 1290 1704 862 676 689 1023 451 197 189 208 134 119 124 47 116 131 117 134 117 75 68 119 108 147 140 107 100 86 113 56 61 +33 64 85 43 33 34 51 22 9 9 10 6 5 6 2 5 6 5 6 5 3 3 5 5 7 6 5 4 4 5 2 3 +7925 17638 18534 18482 19975 13628 11419 5408 2468 2093 2274 1660 1324 664 471 678 939 966 929 851 1138 1661 1375 1173 1352 695 371 453 632 438 261 257 +755 1335 1900 1323 443 359 492 310 227 252 231 114 92 90 75 119 116 116 176 114 129 132 96 121 95 88 43 101 116 59 108 88 +37 66 94 66 22 17 24 15 11 12 11 5 4 4 3 5 5 5 8 5 6 6 4 6 4 4 2 5 5 2 5 4 +7638 16986 17869 17796 19194 13097 10982 5204 2378 2019 2192 1598 1274 641 455 655 906 932 898 821 1097 1599 1323 1130 1301 670 357 438 611 422 254 250 +607 1241 1151 1147 695 413 521 380 170 286 236 160 172 134 90 109 119 137 68 100 81 76 79 122 123 84 104 97 81 88 95 87 +30 62 57 57 34 20 26 18 8 14 11 7 8 6 4 5 5 6 3 4 4 3 3 6 6 4 5 4 4 4 4 4 +7356 16356 17200 17130 18454 12589 10563 5011 2289 1949 2113 1540 1229 620 440 633 874 900 864 792 1056 1538 1273 1089 1253 646 346 424 589 408 247 243 +778 916 1977 2497 1167 345 371 365 205 332 230 141 51 78 112 204 216 122 137 151 133 133 124 119 156 105 90 227 181 154 105 98 +38 45 98 124 58 17 18 18 10 16 11 7 2 3 5 10 10 6 6 7 6 6 6 5 7 5 4 11 9 7 5 4 +7093 15738 16591 16545 17762 12099 10155 4825 2205 1884 2037 1484 1181 598 426 615 847 868 834 766 1019 1481 1227 1050 1209 624 335 416 572 397 241 237 +605 795 579 1071 1206 614 263 272 153 154 185 299 107 44 79 144 119 92 95 113 141 193 294 292 419 258 120 180 190 137 99 90 +30 39 28 53 60 30 13 13 7 7 9 14 5 2 3 7 5 4 4 5 7 9 14 14 20 12 5 8 9 6 4 4 +6833 15140 15950 15926 17100 11639 9759 4642 2122 1814 1962 1436 1138 575 412 596 817 836 804 739 983 1429 1189 1019 1177 609 326 406 556 386 235 231 +1102 2043 1472 487 409 175 256 421 283 413 692 490 198 111 104 86 135 124 74 110 172 148 187 176 243 236 272 356 313 247 244 109 +55 102 73 24 20 8 12 21 14 20 34 24 9 5 5 4 6 6 3 5 8 7 9 8 12 11 13 17 15 12 12 5 +6603 14616 15371 15308 16432 11180 9379 4473 2048 1757 1911 1398 1100 556 399 575 789 807 774 713 950 1377 1148 985 1139 594 323 404 546 380 235 226 +609 1109 1012 726 653 239 192 282 212 380 485 282 244 118 107 131 147 110 91 175 203 145 229 176 181 168 232 155 181 235 394 217 +30 55 50 36 32 11 9 14 10 18 24 14 12 5 5 6 7 5 4 8 10 7 11 8 9 8 11 7 9 11 153 10 +6363 14076 14796 14725 15801 10742 9011 4305 1974 1701 1853 1353 1065 538 387 557 763 779 746 691 920 1327 1111 952 1100 576 319 394 531 374 241 225 +443 514 889 1129 554 263 198 175 276 322 499 266 111 80 145 164 244 188 113 161 84 100 193 135 172 191 313 213 212 255 311 88 +22 25 44 56 27 13 9 8 13 16 24 13 5 3 7 8 12 9 5 8 4 4 9 6 8 9 15 10 10 12 68 4 +6126 13533 14240 14181 15191 10323 8658 4139 1906 1645 1798 1309 1026 519 377 541 742 755 720 669 886 1277 1074 919 1062 560 318 386 518 369 243 219 +258 236 227 539 711 432 209 130 219 159 379 219 76 55 93 185 85 112 111 90 126 115 169 129 118 129 153 116 203 202 149 75 +12 11 11 26 35 21 10 6 10 7 18 10 3 2 4 9 4 5 5 4 6 5 8 6 5 6 7 5 10 10 7 3 +5891 13001 13679 13635 14612 9927 8320 3978 1838 1585 1741 1265 988 500 365 526 715 729 695 645 855 1230 1037 887 1024 542 311 375 505 362 239 213 +503 399 537 566 673 594 340 278 189 131 142 199 84 66 53 108 95 47 146 204 133 76 133 141 113 113 141 104 216 226 112 65 +25 19 26 28 33 29 16 13 9 6 7 9 4 3 2 5 4 2 7 10 6 3 6 7 5 5 7 5 10 11 5 3 +5675 12497 13153 13112 14054 9553 8000 3830 1772 1526 1677 1222 951 482 352 509 690 701 673 627 826 1183 1000 857 987 524 304 364 493 356 233 207 +662 416 541 637 205 196 280 218 505 449 241 255 108 82 145 88 67 90 123 177 151 145 137 243 157 164 142 158 131 170 153 110 +33 20 27 31 10 9 13 10 25 22 12 12 5 4 7 4 3 4 6 8 7 7 6 12 7 8 7 7 6 8 7 5 +5474 12014 12648 12613 13500 9178 7691 3685 1721 1482 1619 1183 917 466 343 492 665 676 651 609 799 1141 965 832 953 509 297 355 478 348 229 203 +465 256 357 977 895 367 202 220 408 374 302 249 146 86 144 182 152 155 159 148 139 89 131 170 127 172 162 89 118 114 108 122 +23 12 17 48 44 18 10 10 20 18 15 12 7 4 7 9 7 7 7 7 6 4 6 8 6 8 8 4 5 5 5 6 +5273 11543 12156 12147 12996 8825 7391 3546 1668 1437 1566 1145 886 450 335 479 644 655 631 590 772 1098 931 805 919 495 291 344 463 338 224 199 +518 1204 2244 2763 1162 543 212 230 260 327 339 110 96 89 93 155 161 100 191 195 136 57 69 140 120 97 120 150 121 120 111 97 +25 60 112 138 58 27 10 11 12 16 16 5 4 4 4 7 8 4 9 9 6 2 3 6 5 4 5 7 6 5 5 4 +5082 11129 11759 11771 12522 8493 7103 3413 1611 1392 1516 1103 854 435 325 466 624 632 613 574 746 1056 896 778 887 479 284 336 449 329 219 194 +1037 1766 3195 3303 1057 713 324 219 185 163 138 172 160 52 64 99 161 199 154 147 138 137 120 69 134 179 107 127 169 204 92 56 +51 88 159 165 52 35 16 10 9 8 6 8 7 2 3 4 8 9 7 7 6 6 5 3 6 8 5 6 8 10 4 2 +4920 10754 11416 11432 12063 8181 6831 3285 1553 1342 1460 1065 826 419 314 451 605 614 594 556 721 1019 864 749 856 467 276 327 437 324 213 188 +420 481 822 1654 758 236 361 243 232 188 114 130 174 106 67 176 146 136 245 112 228 200 119 97 159 89 87 99 87 106 119 117 +20 24 41 82 37 11 18 12 11 9 5 6 8 5 3 8 7 6 12 5 11 9 5 4 7 4 4 4 4 5 5 5 +4740 10343 10992 11041 11611 7863 6572 3163 1500 1295 1406 1027 799 406 304 440 586 594 580 538 701 986 834 722 828 451 268 317 423 315 209 185 +405 628 1055 751 899 578 422 249 181 188 206 165 57 33 162 320 149 97 176 145 84 102 104 82 105 102 142 138 112 180 122 109 +20 31 52 37 44 28 21 12 9 9 10 8 2 1 8 15 7 4 8 7 4 5 5 4 5 5 7 6 5 8 6 5 +4566 9954 10594 10629 11182 7571 6326 3046 1447 1250 1358 992 769 391 298 435 568 574 563 522 676 950 804 696 799 437 262 309 410 309 205 181 +282 851 1217 1509 1173 490 334 286 136 111 253 160 179 197 210 208 101 93 102 195 108 96 117 123 87 86 98 107 93 110 134 103 +14 42 60 75 58 24 16 14 6 5 12 7 8 9 10 10 5 4 5 9 5 4 5 6 4 4 4 5 4 5 6 5 +4394 9590 10219 10264 10781 7287 6086 2935 1394 1204 1313 958 745 383 294 425 549 554 544 508 653 915 776 673 770 422 255 300 397 301 202 177 +819 855 1606 1515 506 337 374 150 227 391 236 213 155 142 177 122 127 133 145 164 175 73 56 110 155 103 65 96 105 153 100 76 +40 42 80 75 25 16 18 7 11 19 11 10 7 7 8 6 6 6 7 8 8 3 2 5 7 5 3 4 5 7 4 3 +4251 9240 9874 9914 10370 7009 5857 2823 1347 1171 1269 928 721 373 289 412 532 537 528 494 633 881 747 650 745 409 247 291 385 295 197 172 +711 1316 1455 1012 905 412 192 138 199 401 361 91 42 58 169 162 99 149 158 115 97 97 103 77 100 106 125 149 147 91 86 79 +35 65 72 50 45 20 9 6 9 20 18 4 2 2 8 8 4 7 7 5 4 4 5 3 4 5 6 7 7 4 4 3 +4109 8923 9537 9558 9991 6745 5630 2715 1301 1140 1232 894 693 360 284 402 514 521 513 478 611 849 721 627 719 396 242 285 375 286 192 168 +1094 1462 1938 1324 429 243 289 152 113 90 166 159 83 70 132 232 184 152 76 64 88 101 74 71 60 92 78 98 138 93 83 67 +54 73 96 66 21 12 14 7 5 4 8 7 4 3 6 11 9 7 3 3 4 5 3 3 2 4 3 4 6 4 4 3 +3988 8624 9233 9228 9608 6485 5416 2612 1253 1098 1189 864 668 348 277 395 500 506 495 461 590 819 695 604 692 383 235 277 365 278 187 163 +290 652 765 505 324 204 363 294 171 236 209 132 111 81 100 91 116 147 98 162 107 100 68 76 74 110 140 132 124 78 64 62 +14 32 38 25 16 10 18 14 8 11 10 6 5 4 4 4 5 7 4 8 5 4 3 3 3 5 6 6 6 3 3 3 +3840 8305 8894 8879 9236 6233 5213 2519 1209 1063 1149 834 645 337 269 382 484 491 479 449 570 790 669 582 667 372 231 271 355 270 182 158 +641 569 195 350 435 334 170 264 219 89 163 143 61 43 98 161 139 91 161 172 50 64 92 73 130 156 123 147 146 105 75 72 +32 28 9 17 21 16 8 13 10 4 8 7 3 2 4 8 6 4 8 8 2 3 4 3 6 7 6 7 7 5 3 3 +3712 7995 8546 8538 8884 5997 5011 2428 1169 1024 1109 806 621 325 262 373 470 475 466 437 549 760 645 561 645 363 226 266 346 263 177 154 +368 485 889 1611 1069 430 168 314 288 171 110 100 87 89 100 123 128 103 121 166 113 89 137 99 106 121 94 73 122 121 100 74 +18 24 44 80 53 21 8 15 14 8 5 4 4 4 4 6 6 5 6 8 5 4 6 4 5 6 4 3 6 6 4 3 +3578 7694 8239 8261 8571 5774 4817 2343 1133 989 1069 777 599 315 255 363 456 460 452 426 531 733 624 542 623 353 220 258 337 257 173 150 +489 670 1208 2033 1145 308 115 206 245 103 89 144 92 103 154 122 145 107 113 140 82 96 148 142 141 143 122 120 81 99 84 67 +24 33 60 101 57 15 5 10 12 5 4 7 4 5 7 6 7 5 5 6 4 4 7 7 7 7 6 5 4 4 4 3 +3454 7413 7957 8012 8274 5555 4629 2257 1097 953 1029 751 578 306 250 353 443 445 438 414 513 707 604 526 603 344 216 252 326 250 169 146 +542 875 893 717 171 302 394 403 198 147 235 250 138 105 191 152 185 149 238 169 60 152 185 90 126 271 170 169 122 126 81 61 +27 43 44 35 8 15 19 20 9 7 11 12 6 5 9 7 9 7 11 8 2 7 9 4 6 13 8 8 6 6 4 3 +3337 7151 7674 7720 7950 5344 4459 2182 1061 920 997 730 560 297 247 344 432 433 430 404 494 684 587 508 583 341 214 248 317 245 165 142 +324 728 813 1178 737 302 379 222 228 207 162 87 82 115 200 104 65 77 99 111 83 118 90 92 134 243 105 167 156 128 98 72 +16 36 40 58 36 15 18 11 11 10 8 4 4 5 9 5 3 3 4 5 4 5 4 4 6 12 5 8 7 6 4 3 +3216 6894 7399 7458 7661 5142 4295 2103 1027 891 963 704 540 289 245 334 417 418 416 392 477 661 567 491 565 337 209 244 310 240 162 139 +602 891 1011 1569 827 447 338 220 146 227 152 135 110 52 72 145 173 90 75 79 117 198 189 106 182 232 152 147 124 117 61 44 +30 44 50 78 41 22 16 10 7 11 7 6 5 2 3 7 8 4 3 3 5 9 9 5 9 11 7 7 6 5 3 2 +3111 6654 7143 7222 7387 4954 4136 2027 991 864 930 681 522 279 238 326 407 404 402 379 462 642 551 475 549 332 206 240 302 235 157 135 +850 1162 952 878 465 497 400 444 234 173 143 168 115 91 57 59 70 88 128 103 110 178 181 102 122 126 132 85 124 150 62 53 +42 58 47 43 23 24 19 22 11 8 7 8 5 4 2 2 3 4 6 5 5 8 9 5 6 6 6 4 6 7 3 2 +3020 6434 6895 6968 7110 4775 3986 1963 960 836 898 660 505 271 230 315 393 391 391 367 447 623 536 460 531 323 203 233 294 231 153 131 +672 775 726 537 356 333 387 209 214 213 205 83 95 87 85 102 86 119 155 183 166 158 148 107 110 107 134 97 150 217 200 172 +33 38 36 26 17 16 19 10 10 10 10 4 4 4 4 5 4 5 7 9 8 7 7 5 5 5 6 4 7 10 46 40 +2926 6207 6648 6710 6839 4597 3842 1892 930 811 870 636 488 263 224 306 380 380 381 359 435 604 520 445 514 314 200 227 288 230 154 132 +347 400 594 737 688 341 183 219 153 210 144 105 67 47 67 122 137 68 71 116 116 114 83 62 117 105 65 108 108 151 133 85 +17 19 29 36 34 17 9 10 7 10 7 5 3 2 3 6 6 3 3 5 5 5 4 3 5 5 3 5 5 7 6 4 +2822 5974 6405 6471 6593 4426 3695 1825 898 786 840 614 471 254 217 298 370 367 368 349 422 584 502 429 498 305 194 222 280 226 153 130 +1200 1469 931 306 589 388 271 362 156 79 190 123 92 28 120 187 89 68 96 154 117 131 163 68 124 100 109 93 96 133 115 99 +59 73 46 15 29 19 13 18 7 3 9 6 4 1 5 9 4 3 4 7 5 6 8 3 6 4 5 4 4 6 5 4 +2757 5793 6186 6224 6352 4264 3558 1766 868 757 814 594 455 244 213 293 358 355 357 341 409 565 488 414 483 296 190 216 272 222 151 128 +276 937 814 892 898 350 91 143 127 154 272 119 185 116 118 72 139 188 115 158 94 116 111 74 97 107 111 96 133 89 77 73 +13 46 40 44 44 17 4 7 6 7 13 5 9 5 5 3 6 9 5 7 4 5 5 3 4 5 5 4 6 4 3 3 +2657 5598 5971 6010 6133 4107 3419 1701 838 732 792 575 444 238 209 284 349 348 347 333 396 547 472 400 467 288 186 211 266 216 148 125 +704 596 648 1602 1071 278 154 137 184 309 313 160 183 91 89 171 134 90 70 107 74 81 58 78 107 92 129 118 139 95 112 86 +35 29 32 80 53 13 7 6 9 15 15 7 9 4 4 8 6 4 3 5 3 4 2 3 5 4 6 5 6 4 5 4 +2578 5398 5758 5833 5930 3953 3288 1638 811 715 772 558 433 232 204 279 340 337 335 323 383 528 455 387 452 280 183 207 260 211 146 123 +665 933 1123 1802 1475 749 254 89 85 302 254 87 85 130 93 203 98 82 153 226 184 238 89 100 123 154 95 129 169 149 101 104 +33 46 56 90 73 37 12 4 4 15 12 4 4 6 4 10 4 4 7 11 9 11 4 4 6 7 4 6 8 7 5 5 +2501 5219 5572 5671 5751 3824 3166 1576 781 698 751 539 419 227 199 275 330 326 327 319 375 516 440 375 438 274 179 203 256 208 144 122 +203 621 927 971 473 315 430 448 185 206 189 72 97 107 113 93 108 101 105 170 124 159 119 134 172 156 104 118 107 65 70 56 +10 31 46 48 23 15 21 22 9 10 9 3 4 5 5 4 5 5 5 8 6 7 5 6 8 7 5 5 5 3 3 2 +2409 5035 5386 5483 5539 3683 3056 1530 757 678 728 520 406 222 195 267 321 317 318 313 364 501 427 365 427 269 176 199 250 202 141 119 +319 459 521 479 349 254 297 306 155 110 141 206 131 105 181 196 153 179 128 144 105 113 116 99 164 266 169 108 102 80 46 57 +15 22 26 23 17 12 14 15 7 5 7 10 6 5 9 9 7 8 6 7 5 5 5 4 8 13 8 5 5 3 2 2 +2325 4852 5191 5282 5331 3545 2945 1481 732 655 704 507 395 217 194 264 314 311 310 306 353 485 414 354 416 268 175 195 244 197 137 116 +396 693 1320 1112 300 283 179 95 72 244 223 121 75 74 95 75 58 65 82 123 135 110 157 70 108 140 136 148 148 87 78 64 +19 34 65 55 14 14 8 4 3 12 11 6 3 3 4 3 2 3 4 6 6 5 7 3 5 6 6 7 7 4 3 3 +2247 4685 5036 5115 5129 3414 2834 1425 705 638 684 491 382 211 190 256 303 301 300 298 344 470 403 342 403 262 173 193 240 192 134 113 +435 970 989 556 342 429 334 159 96 194 195 92 113 101 120 191 142 72 110 118 138 85 80 63 119 140 95 122 117 110 110 42 +21 48 49 27 17 21 16 7 4 9 9 4 5 5 5 9 7 3 5 5 6 4 3 3 5 6 4 6 5 5 5 2 +2174 4536 4874 4932 4937 3294 2734 1374 680 620 664 475 371 206 187 253 296 291 292 290 335 454 390 330 391 257 169 190 235 188 133 110 +904 790 782 1026 761 430 399 236 167 149 148 86 117 108 101 299 250 88 128 171 62 58 53 74 137 111 99 77 136 93 92 73 +45 39 39 51 38 21 19 11 8 7 7 4 5 5 5 45 12 4 6 8 3 2 2 3 6 5 4 3 6 4 4 3 +2123 4386 4710 4775 4770 3179 2640 1328 659 601 643 459 360 202 183 254 294 282 285 285 324 438 376 319 380 251 166 185 231 184 131 108 +289 427 280 311 438 264 183 263 221 104 156 173 103 166 199 154 158 105 143 146 125 72 97 85 78 132 85 83 157 126 79 56 +14 21 13 15 21 13 9 13 11 5 7 8 5 8 16 7 7 5 7 7 6 3 4 4 3 6 4 4 7 6 3 2 +2049 4227 4532 4596 4596 3062 2541 1285 641 581 623 447 349 200 183 250 288 274 279 279 316 423 364 309 367 246 162 180 228 181 128 105 +254 210 166 222 172 253 378 328 156 226 190 101 146 78 93 90 78 162 105 110 76 75 70 99 147 185 97 86 99 81 85 81 +12 10 8 11 8 12 18 16 7 11 9 5 7 3 4 4 3 8 5 5 3 3 3 4 7 9 4 4 4 4 4 4 +1977 4066 4357 4421 4419 2949 2454 1246 621 566 605 433 340 195 179 243 279 269 272 272 306 409 352 300 358 243 159 176 222 177 126 104 +491 573 538 258 334 298 233 273 112 149 141 107 73 92 145 126 142 91 90 135 131 85 28 78 126 112 105 80 195 170 66 52 +24 28 26 12 16 14 11 13 5 7 7 5 3 4 7 6 7 4 4 6 6 4 1 3 6 5 5 3 9 8 3 2 +1917 3926 4204 4254 4255 2843 2365 1207 600 549 586 419 329 190 177 238 273 261 264 266 299 396 339 291 348 237 156 172 220 176 123 101 +653 1272 790 637 540 266 148 183 95 197 161 113 67 102 138 56 103 100 59 108 71 119 174 92 91 103 76 81 123 76 70 64 +32 63 39 31 26 13 7 9 4 9 8 5 3 5 6 2 5 4 2 5 3 5 8 4 4 5 3 4 6 3 3 3 +1866 3819 4067 4109 4106 2739 2276 1166 579 534 569 406 318 186 175 230 266 254 255 259 289 384 332 283 337 231 152 168 216 172 120 99 +492 1206 1335 752 388 292 238 391 310 229 244 99 54 92 130 146 153 110 163 182 84 84 122 180 224 124 110 87 119 83 89 72 +24 60 66 37 19 14 11 19 15 11 12 4 2 4 6 7 7 5 8 9 4 4 6 8 11 6 5 4 5 4 4 3 +1811 3714 3957 3974 3957 2641 2194 1135 568 521 556 393 307 182 173 226 261 248 251 255 280 372 323 278 332 226 150 164 212 168 118 97 +331 770 1338 869 539 219 175 199 174 283 286 168 152 98 123 111 60 87 68 146 140 111 74 78 156 185 126 83 88 103 71 77 +16 38 66 43 26 10 8 9 8 14 14 8 7 4 6 5 2 4 3 7 6 5 3 3 7 9 6 4 4 5 3 3 +1751 3596 3852 3849 3820 2544 2113 1097 552 511 545 384 300 178 171 221 252 241 243 250 274 361 313 270 324 224 149 160 207 165 116 96 +904 1724 1132 1057 632 536 278 243 204 255 322 105 51 112 67 202 165 60 96 102 140 101 82 90 94 88 83 76 139 135 88 85 +45 86 56 52 31 26 13 12 10 12 16 5 2 5 3 10 8 2 4 5 6 5 4 4 4 4 4 3 6 6 4 4 +1717 3521 3743 3737 3692 2463 2039 1062 538 500 536 372 290 175 166 220 248 233 237 244 268 350 303 262 314 218 146 156 204 163 114 95 +720 942 1489 1182 594 295 240 240 252 375 188 123 63 64 79 212 135 96 39 90 86 88 80 90 102 98 87 65 112 110 76 107 +35 47 74 59 29 14 11 11 12 18 9 6 3 3 3 10 6 4 1 4 4 4 3 4 5 4 4 3 5 5 3 12 +1677 3417 3652 3634 3568 2376 1967 1029 526 495 522 362 280 170 162 219 243 227 229 237 260 339 294 255 305 213 143 152 200 160 112 95 +348 534 312 284 443 323 245 155 137 290 197 60 59 67 71 63 145 140 155 124 133 102 146 116 93 72 86 122 149 123 50 54 +17 26 15 14 22 16 12 7 6 14 9 2 2 3 3 3 7 6 7 6 6 5 7 5 4 3 4 6 7 6 2 2 +1623 3301 3518 3500 3443 2293 1898 994 510 486 509 349 271 165 158 212 239 223 226 232 254 329 288 249 296 207 140 150 197 158 109 93 +512 772 1152 1137 666 281 148 100 65 203 302 115 51 66 99 140 119 79 128 189 120 86 123 109 141 122 91 135 145 122 125 87 +25 38 57 56 33 14 7 4 3 10 15 5 2 3 4 6 5 3 6 9 5 4 6 5 7 6 4 6 7 6 16 4 +1578 3199 3423 3405 3331 2212 1828 958 492 474 500 339 262 161 155 209 234 217 222 230 248 319 281 243 289 203 138 149 194 156 109 92 +321 464 547 255 348 251 195 210 200 358 311 78 59 56 69 233 257 71 83 188 128 112 126 131 159 112 167 105 77 104 119 81 +16 23 27 12 17 12 9 10 9 17 15 3 2 2 3 24 23 3 4 9 6 5 6 6 7 5 28 5 3 5 10 4 +1527 3089 3308 3279 3211 2133 1762 928 480 469 492 328 253 156 151 209 234 211 216 228 243 310 274 238 283 199 139 147 189 153 109 91 +720 920 981 1156 818 282 165 242 246 379 318 151 106 61 108 90 57 77 78 108 122 91 107 88 76 81 151 101 107 89 61 92 +35 45 49 57 40 14 8 12 12 18 15 7 5 3 5 4 2 3 3 5 6 4 5 4 3 4 12 5 5 4 3 4 +1494 3002 3214 3194 3115 2059 1698 900 470 465 485 320 247 152 149 204 226 205 210 223 238 301 267 232 274 194 139 145 185 150 107 91 +537 470 256 543 321 288 97 116 99 150 165 64 92 127 290 227 164 128 94 221 161 138 110 158 118 147 123 154 269 163 146 107 +26 23 12 27 16 14 4 5 4 7 8 3 4 6 136 23 8 6 4 11 8 6 5 7 5 7 6 9 81 13 38 16 +1455 2900 3095 3088 3003 1988 1633 868 455 452 472 309 240 151 154 204 223 201 205 222 234 294 260 229 267 192 138 145 188 150 108 91 +227 505 406 756 727 347 424 299 119 215 264 215 127 145 324 422 292 158 86 89 178 126 162 136 121 166 177 132 204 190 173 71 +11 25 20 37 36 17 21 14 5 10 13 10 6 7 164 210 67 7 4 4 8 6 8 6 6 8 38 6 16 39 63 3 +1405 2804 2987 2994 2912 1922 1584 845 441 442 463 305 235 150 160 212 225 199 200 216 231 287 256 225 261 190 139 144 188 151 110 90 +122 630 1075 653 385 210 190 220 108 111 225 107 65 110 153 298 218 135 103 102 154 115 134 165 205 159 121 130 144 251 113 77 +6 31 53 32 19 10 9 10 5 5 11 5 3 5 7 83 10 6 5 5 7 5 6 8 10 7 6 6 7 97 5 3 +1353 2717 2910 2900 2810 1853 1528 820 427 428 453 297 228 148 159 215 224 196 196 211 227 280 251 222 258 188 138 143 186 154 110 89 +732 591 736 902 225 170 165 228 87 132 133 200 166 107 136 87 73 206 121 91 101 89 110 123 132 134 118 105 169 159 120 97 +36 29 36 45 11 8 8 11 4 6 6 9 8 5 6 4 3 10 6 4 5 4 5 6 6 6 5 5 8 7 10 8 +1328 2632 2823 2820 2706 1785 1473 796 413 416 440 293 225 146 158 209 217 196 193 206 221 272 245 218 252 185 137 141 185 154 110 89 +264 565 1068 1338 898 395 168 226 98 174 154 84 115 76 145 145 102 92 92 105 78 86 129 102 157 131 140 119 131 150 202 125 +13 28 53 66 44 19 8 11 4 8 7 4 5 3 7 7 5 4 4 5 3 4 6 5 7 6 6 5 6 7 89 35 +1285 2549 2752 2760 2633 1729 1420 773 400 406 428 284 220 143 157 206 212 191 188 201 215 264 240 213 248 182 137 140 182 153 113 90 +649 799 1455 1305 861 403 293 410 294 253 220 146 140 91 197 280 169 187 167 96 143 84 91 92 136 186 118 85 120 182 163 86 +32 39 72 65 43 20 14 20 14 12 10 7 6 4 39 72 8 9 8 4 7 4 4 4 6 9 5 4 5 28 49 4 +1259 2479 2700 2701 2562 1675 1374 758 395 399 419 278 216 140 158 208 210 190 187 196 212 256 234 208 243 182 136 137 179 154 114 89 +613 777 397 354 301 291 422 534 258 111 144 198 189 70 75 137 167 196 123 83 112 76 59 114 94 126 145 66 74 109 113 62 +30 38 19 17 15 14 21 26 12 5 7 9 9 3 3 6 8 9 6 4 5 3 2 5 4 6 9 3 3 5 5 3 +1233 2410 2607 2607 2471 1619 1335 749 389 387 408 274 214 137 154 205 208 190 184 191 208 248 227 204 237 179 136 134 174 152 113 87 +391 758 918 804 378 308 338 374 141 185 217 106 126 93 57 115 111 126 141 163 66 78 137 101 105 117 111 132 166 73 111 62 +19 37 45 40 18 15 16 18 7 9 10 5 6 4 2 5 5 6 7 8 3 3 6 5 5 5 5 6 8 3 5 3 +1199 2343 2539 2534 2387 1566 1295 734 379 378 400 267 210 135 150 201 204 187 182 189 202 241 223 199 231 176 135 133 173 148 112 86 +748 740 1080 1199 431 171 325 396 231 473 280 77 155 113 132 117 107 71 119 147 167 88 97 118 120 109 75 87 106 88 115 52 +37 36 53 59 21 8 16 19 11 92 13 3 7 5 6 5 5 3 5 7 8 4 4 5 5 5 3 4 5 4 5 2 +1180 2278 2480 2480 2308 1510 1256 720 373 381 395 259 207 134 149 197 200 182 179 187 200 234 217 195 226 173 132 131 170 145 112 84 +257 301 674 1239 478 259 443 517 283 269 189 196 163 83 143 225 119 89 99 154 142 113 173 77 93 108 74 76 82 56 62 51 +12 15 33 61 23 12 22 25 14 13 9 9 8 4 7 27 5 4 4 7 7 5 8 3 4 5 3 3 4 2 3 2 +1143 2198 2407 2430 2234 1459 1223 711 369 376 386 256 205 131 148 198 196 178 175 185 197 229 215 190 220 170 129 128 166 141 110 82 +691 627 999 1028 272 329 356 219 137 105 222 101 54 58 119 155 85 90 84 87 105 97 123 101 140 141 69 74 115 90 65 67 +34 31 49 51 13 16 17 10 6 5 11 5 2 2 5 7 4 4 4 4 5 4 6 5 6 7 3 3 5 4 3 3 +1124 2135 2350 2373 2155 1413 1188 691 359 365 379 249 198 128 146 196 191 174 171 181 193 223 211 186 216 168 126 125 163 138 108 81 +353 317 247 779 406 354 302 212 171 146 147 95 87 91 89 92 113 94 112 91 79 97 75 119 227 325 498 761 762 297 85 63 +17 15 12 38 20 17 15 10 8 7 7 4 4 4 4 4 5 4 5 4 3 4 3 5 11 151 358 611 576 153 4 3 +1093 2062 2265 2309 2085 1370 1152 671 351 356 369 242 193 126 143 191 187 170 168 177 188 217 205 183 216 174 140 150 186 144 107 80 +314 378 1132 1498 774 512 230 102 137 217 339 153 125 197 278 232 133 141 129 219 144 270 299 279 318 376 961 1630 1239 458 208 182 +15 18 56 74 38 25 11 5 6 10 16 7 6 69 130 40 6 7 6 41 7 51 91 93 98 194 789 1421 1011 302 97 98 +1061 1994 2219 2276 2032 1335 1115 648 342 350 367 238 190 128 148 192 184 168 166 178 186 219 208 186 220 182 172 209 228 156 111 84 +354 573 1312 1853 1207 582 252 204 110 153 245 133 104 91 258 237 151 144 162 234 233 221 403 306 310 649 942 1080 779 477 447 214 +17 28 65 92 60 29 12 10 5 7 12 6 5 4 106 44 7 7 8 54 46 11 188 116 87 449 740 837 529 309 323 125 +1032 1937 2182 2259 1999 1304 1080 630 332 342 362 233 186 126 152 193 182 167 165 180 187 219 215 190 223 200 202 243 250 168 124 89 +456 260 435 527 870 467 443 405 125 369 340 116 190 200 102 129 72 65 78 156 174 215 599 981 751 1064 1383 1145 706 532 303 150 +22 12 21 26 43 23 22 20 6 26 16 5 9 72 5 6 3 3 3 7 8 10 369 760 507 830 1134 866 438 350 172 59 +1008 1869 2112 2189 1953 1270 1054 621 323 343 361 228 186 128 150 190 177 162 161 179 186 218 230 221 244 234 249 279 268 182 131 91 +562 729 623 942 885 511 340 247 153 265 162 235 241 67 82 133 132 100 59 99 195 317 444 495 425 632 617 585 667 327 198 140 +28 36 31 47 44 25 16 12 7 13 8 11 53 3 4 6 6 4 2 4 9 96 206 264 174 383 354 294 384 140 65 48 +990 1823 2052 2139 1910 1239 1025 606 316 339 353 228 188 125 147 187 175 159 156 175 186 221 238 231 251 249 263 291 283 187 133 92 +674 974 1124 816 505 288 155 257 223 164 164 142 83 76 153 202 146 90 118 89 109 65 212 329 468 388 189 458 459 265 99 82 +33 48 56 40 25 14 7 12 11 8 8 7 4 3 7 15 7 4 5 4 5 3 10 95 209 134 9 161 169 75 4 4 +977 1789 2014 2086 1853 1200 990 592 312 332 345 224 183 123 147 187 173 156 154 171 182 214 236 234 259 254 260 297 290 190 131 91 +600 1131 1190 839 454 474 196 251 204 218 310 148 101 59 72 108 158 109 169 218 158 94 291 314 184 328 235 401 335 142 106 83 +29 56 59 41 22 23 9 12 10 10 15 7 5 2 3 5 7 5 15 46 7 4 53 77 9 72 11 100 44 7 5 4 +961 1762 1981 2036 1797 1170 958 578 307 327 343 220 179 120 144 183 172 154 154 172 181 209 238 237 256 256 259 301 291 188 130 90 +611 1620 1606 1747 901 329 200 361 267 471 345 58 72 106 121 145 120 130 206 174 116 95 182 234 289 521 288 283 231 108 139 92 +30 80 80 87 45 16 9 18 13 139 17 2 3 5 6 7 5 6 50 8 5 4 9 11 32 255 28 14 11 5 9 4 +947 1756 1966 2024 1761 1136 927 569 305 332 343 213 174 119 143 181 169 153 156 172 178 204 235 236 257 266 260 300 288 184 130 90 +481 1334 1408 831 240 170 209 295 150 286 268 68 102 98 56 128 104 61 105 251 95 59 96 169 222 110 230 326 333 142 113 128 +24 66 70 41 11 8 10 14 7 14 13 3 5 4 2 6 5 3 5 76 4 2 4 8 11 5 11 25 44 7 5 37 +928 1739 1943 1976 1700 1097 898 558 298 330 340 207 171 118 139 178 166 149 153 175 174 198 229 233 255 259 258 301 289 182 129 91 +644 647 653 360 566 434 85 66 155 245 231 98 117 123 63 82 59 82 119 126 75 85 141 128 195 136 143 186 119 97 124 75 +32 32 32 17 28 21 4 3 7 12 11 4 5 6 3 4 2 4 5 6 3 4 7 6 9 6 7 9 5 4 6 3 +916 1695 1891 1911 1654 1070 865 538 292 326 335 202 168 118 135 174 161 146 151 173 170 193 225 228 252 254 253 296 282 178 128 90 +836 835 739 1017 437 564 410 257 135 360 434 137 56 52 101 125 93 93 175 115 95 75 94 82 160 143 84 94 142 80 94 70 +41 41 36 50 21 28 20 12 6 33 96 6 2 2 5 6 4 4 24 5 4 3 4 4 7 7 4 4 7 3 4 3 +912 1660 1844 1875 1605 1049 846 526 285 327 338 199 163 115 133 172 158 143 151 170 167 188 219 222 248 249 246 287 276 174 126 89 +311 444 526 892 445 178 190 205 197 186 147 69 101 54 60 84 59 133 164 152 142 86 111 46 76 97 73 97 124 104 97 66 +15 22 26 44 22 8 9 10 9 9 7 3 5 2 2 4 2 6 13 7 7 4 5 2 3 4 3 4 6 5 4 3 +887 1611 1791 1835 1558 1014 819 513 281 321 330 193 160 112 130 168 154 142 151 169 166 183 214 214 241 242 239 279 269 171 124 88 +962 1348 1216 843 509 351 226 299 196 173 133 76 89 81 68 66 84 100 96 134 173 185 126 123 144 90 76 103 116 97 73 77 +73 67 60 42 25 17 11 14 9 8 6 3 4 4 3 3 4 4 4 6 8 9 6 6 7 4 3 5 5 4 3 3 +889 1600 1768 1795 1516 987 795 504 277 315 322 188 157 110 127 163 151 140 148 167 166 183 210 210 237 235 232 271 262 168 121 87 +535 615 381 620 689 450 214 147 93 218 299 121 50 55 154 156 77 48 101 164 110 120 103 102 139 120 74 81 61 96 79 60 +26 30 19 30 34 22 10 7 4 10 14 6 2 2 26 7 3 2 5 8 5 5 5 5 6 5 3 4 3 4 3 2 +874 1560 1712 1748 1482 965 771 489 269 311 321 185 152 107 128 162 148 136 146 166 163 180 205 205 233 230 225 263 253 165 119 85 +253 906 1251 1046 313 208 212 122 61 66 109 110 59 86 206 223 144 58 114 129 87 140 190 134 137 172 65 67 103 89 49 43 +12 45 62 52 15 10 10 6 3 3 5 5 2 4 75 59 7 2 5 6 4 6 9 6 6 8 3 3 5 4 2 2 +849 1533 1693 1719 1435 934 748 474 260 301 312 182 148 106 131 164 147 132 144 164 159 178 204 202 229 227 218 255 247 161 116 83 +189 375 477 595 242 389 437 382 212 158 124 85 148 162 178 231 137 39 88 116 122 120 86 82 98 157 124 120 94 91 93 52 +9 18 23 29 12 19 21 19 10 7 6 4 7 54 46 65 6 1 4 5 6 5 4 4 4 7 6 5 4 4 4 2 +822 1486 1644 1674 1387 912 735 470 258 295 304 178 148 108 132 166 146 128 141 162 157 175 199 197 223 224 214 249 240 158 115 81 +138 524 516 672 487 230 209 207 181 282 162 138 121 102 101 160 188 117 95 117 162 118 118 122 127 215 180 137 179 108 56 62 +6 26 25 33 24 11 10 10 9 14 8 6 6 5 5 7 41 5 4 5 8 5 5 6 6 10 8 6 8 5 2 3 +794 1447 1598 1633 1351 884 713 459 254 294 298 176 146 107 130 165 147 127 139 160 157 172 195 194 219 223 212 244 237 156 112 80 +713 1171 1945 1938 629 489 332 165 117 134 195 189 111 51 62 113 141 122 104 77 102 50 50 73 149 103 81 67 74 91 115 62 +35 58 334 293 31 24 16 8 5 6 9 13 5 2 3 5 7 6 5 3 5 2 2 3 7 5 4 3 3 4 5 3 +790 1435 1611 1645 1322 868 697 447 248 287 293 176 144 104 127 162 146 126 137 156 154 167 189 189 216 218 206 236 230 153 112 79 +325 426 840 1858 985 271 188 238 216 244 154 38 57 58 104 88 59 85 75 52 47 89 95 68 96 96 102 87 123 78 77 51 +16 21 41 205 49 13 9 11 10 12 7 1 2 2 5 4 2 4 3 2 2 4 4 3 4 4 5 4 6 3 3 2 +771 1394 1580 1653 1308 844 676 438 246 285 287 170 140 102 126 159 142 124 134 151 149 163 185 184 211 213 201 230 225 150 110 77 +264 309 570 1022 534 199 258 225 126 127 115 99 75 53 79 168 126 122 64 73 83 83 112 71 88 99 101 121 158 95 68 37 +13 15 28 51 26 9 12 11 6 6 5 4 3 2 3 9 6 6 3 3 4 4 5 3 4 4 5 6 7 4 3 1 +750 1350 1539 1627 1277 818 659 429 241 278 280 167 137 100 124 159 141 123 131 147 146 159 182 179 206 208 197 225 222 147 108 75 +579 372 428 1313 1056 296 319 331 185 309 264 55 67 49 61 61 81 96 68 76 57 82 80 66 104 35 42 58 111 95 63 71 +28 18 21 65 52 14 15 16 9 30 13 2 3 2 3 3 4 4 3 3 2 4 3 3 5 1 2 2 5 4 3 3 +743 1310 1494 1614 1268 797 645 425 238 279 279 162 134 97 121 155 138 121 128 144 142 155 177 174 201 201 190 218 217 144 106 74 +393 1062 1888 2099 707 216 71 188 296 298 164 90 56 65 131 131 133 163 86 42 90 89 55 89 139 149 83 77 133 102 92 82 +19 53 379 466 35 10 3 9 56 19 8 4 2 3 10 6 6 41 4 2 4 4 2 4 6 7 4 3 6 5 4 8 +729 1300 1509 1633 1245 773 622 415 240 279 274 159 130 95 121 154 137 122 126 139 139 152 172 170 198 198 185 212 213 142 105 74 +1016 1057 642 1347 751 189 109 150 251 344 163 176 106 47 96 96 135 155 89 180 94 72 56 71 133 175 91 76 158 131 75 52 +276 52 32 67 37 9 5 7 12 63 8 17 5 2 4 4 6 32 4 40 4 3 2 3 6 8 4 3 7 6 3 2 +740 1290 1474 1621 1225 749 601 404 240 281 269 159 129 93 120 151 136 123 124 140 137 148 167 166 195 197 181 206 210 141 103 73 +584 592 454 341 448 248 307 200 105 101 98 157 99 64 99 59 64 93 90 131 62 75 92 122 193 128 79 88 127 142 90 69 +29 29 22 17 22 12 15 9 5 5 4 7 4 3 4 2 3 4 4 6 3 3 4 6 9 6 3 4 6 7 4 3 +733 1262 1433 1569 1193 728 589 395 234 273 262 158 127 91 119 147 133 121 122 139 134 145 164 164 194 194 176 201 206 141 102 72 +510 567 977 680 215 241 351 333 135 211 185 94 211 197 92 75 91 131 99 38 43 62 112 155 238 223 134 226 224 77 52 62 +25 28 48 33 10 12 17 16 6 10 9 4 81 102 4 3 4 10 4 1 2 3 5 7 43 28 6 25 18 3 2 3 +724 1234 1414 1533 1153 708 579 392 230 270 258 155 130 95 117 144 131 121 121 134 130 141 161 163 195 195 174 201 206 138 100 71 +453 553 601 853 348 174 233 172 157 157 238 153 135 93 55 126 182 105 132 118 100 58 105 119 168 309 168 215 150 114 123 82 +22 27 30 42 17 8 11 8 7 7 11 7 6 4 2 6 49 5 11 5 4 2 5 5 8 110 8 14 7 5 23 11 +713 1206 1381 1505 1120 686 565 383 227 265 257 154 130 94 114 143 133 120 121 133 128 137 158 161 193 199 173 201 203 137 100 71 +728 726 486 902 546 220 250 393 197 139 153 69 79 100 135 146 154 157 162 187 138 98 151 142 138 281 318 151 164 99 80 77 +36 36 24 45 27 10 12 19 9 6 7 3 3 6 21 7 21 36 40 52 10 4 7 7 6 79 140 7 8 4 3 6 +713 1186 1345 1480 1097 667 552 383 225 259 252 150 127 94 114 143 133 121 122 135 128 135 157 160 190 202 178 199 201 135 99 71 +1795 998 739 1209 690 219 448 658 425 238 207 133 188 114 96 76 197 170 109 70 81 63 110 159 290 241 233 132 106 86 70 45 +1039 49 36 60 34 10 22 265 193 11 10 6 59 20 4 3 62 48 5 3 4 3 5 7 97 38 53 6 5 4 3 2 +756 1178 1320 1469 1080 649 547 393 232 258 250 149 129 94 113 140 135 122 121 132 126 132 155 159 193 203 180 196 197 133 97 69 +852 443 644 425 235 316 408 363 215 164 73 86 70 43 87 121 79 85 103 108 68 84 130 107 129 116 83 61 136 91 88 36 +93 22 32 21 11 15 20 18 10 8 3 4 3 2 4 6 3 4 5 5 3 4 6 5 6 5 4 3 6 4 4 1 +759 1148 1292 1427 1046 635 541 391 231 254 242 146 126 91 111 139 132 120 120 131 123 130 154 156 190 199 176 190 194 131 96 67 +3852 5589 5618 5255 3047 2897 3928 4843 4855 4377 4879 4303 3013 1819 1146 1223 4155 6248 4420 3126 5333 6712 6764 9664 12147 12942 11993 11181 10118 6528 3383 2268 +2970 4264 4154 3675 1922 2172 3252 4275 4440 3959 4452 3991 2772 1659 994 1041 3863 5884 4129 2876 5002 6319 6346 9128 11479 12234 11345 10552 9528 6142 3156 2114 +882 1325 1464 1580 1125 725 676 568 415 418 427 312 241 160 152 182 292 364 291 250 331 393 418 536 668 708 648 629 590 386 227 154 +9303 14260 21318 16292 3220 2585 4574 8612 6537 4533 10541 7329 4902 2721 1352 4501 10971 12726 8552 4958 7921 9271 8917 17858 18586 14925 16147 16303 13431 8991 7364 2933 +8085 12418 19061 14124 2012 1786 3743 7723 5878 3951 9710 6737 4475 2459 1153 4147 10253 11868 7931 4520 7287 8524 8160 16630 17202 13649 14880 15048 12328 8261 6852 2668 +1218 1842 2257 2168 1208 799 831 889 659 582 831 592 427 262 199 354 718 858 621 438 634 747 757 1228 1384 1276 1267 1255 1103 730 512 265 +5599 7777 8948 8459 3630 1370 1663 2038 1322 1958 2180 1294 1668 1159 1346 2583 1540 699 783 992 885 1079 1252 1144 998 440 575 968 1533 1327 834 481 +4206 5698 6424 6040 2326 549 799 1104 637 1321 1296 674 1192 862 1102 2140 790 34 156 532 241 319 476 57 49 21 28 48 413 574 310 208 +1393 2079 2524 2419 1304 821 864 934 685 637 884 620 476 297 244 443 750 851 627 460 644 760 776 1224 1368 1242 1239 1243 1120 753 524 273 +1705 797 1494 2710 1811 924 1375 1550 489 398 587 751 413 634 667 911 751 417 355 312 385 450 316 306 583 379 488 380 478 713 446 262 +300 39 74 280 487 99 491 592 24 19 29 126 20 324 407 450 37 20 17 15 19 22 15 15 29 18 24 18 23 35 22 13 +1405 2027 2482 2430 1324 825 884 958 677 627 872 625 473 310 260 461 750 833 616 454 633 747 757 1187 1336 1207 1208 1208 1094 751 520 272 +961 1210 1035 1258 1052 437 1066 1508 687 608 724 1169 1043 365 528 799 334 284 307 232 441 500 431 536 374 421 447 510 316 573 388 189 +48 60 51 62 52 21 175 529 34 30 36 523 548 53 258 325 16 14 15 11 22 24 21 26 18 21 22 25 15 28 19 9 +1387 1994 2424 2383 1313 809 891 979 677 626 866 646 495 312 270 474 733 811 603 445 625 737 743 1160 1297 1175 1177 1180 1062 743 514 268 +1028 829 899 829 851 352 548 930 615 518 555 522 819 343 305 621 361 289 327 352 534 615 355 283 295 459 835 1034 450 362 317 255 +51 41 44 41 42 17 27 46 30 25 27 26 312 30 34 142 18 14 16 17 26 30 17 14 14 22 41 51 22 18 15 12 +1372 1947 2363 2320 1294 790 877 977 674 621 853 641 507 313 271 479 718 790 591 441 621 732 727 1124 1256 1146 1163 1174 1037 727 506 267 +528 466 610 805 813 438 830 859 358 535 635 338 317 245 581 581 207 252 246 224 468 363 343 183 400 507 682 828 356 337 167 130 +26 23 30 40 40 21 41 42 17 26 31 16 15 12 298 98 10 12 12 11 23 18 17 9 19 25 34 41 17 16 8 6 +1338 1887 2292 2259 1274 775 875 972 661 617 844 628 499 310 283 483 697 768 577 432 614 717 711 1086 1221 1120 1143 1160 1009 711 492 261 +160 407 500 780 397 168 198 322 269 516 974 527 210 171 450 295 514 271 354 416 321 342 265 443 396 375 620 642 478 388 200 118 +7 20 24 38 19 8 9 16 13 25 125 26 10 8 161 14 25 13 17 20 16 17 13 22 19 18 30 32 23 19 9 5 +1290 1827 2220 2199 1238 750 847 946 645 612 849 623 487 304 289 475 689 748 568 431 602 702 693 1060 1188 1090 1122 1139 987 698 480 255 +586 434 599 812 387 228 271 461 263 225 520 359 104 96 326 282 345 284 409 286 219 202 318 239 345 251 306 323 385 370 129 59 +29 21 29 40 19 11 13 23 13 11 25 17 5 4 36 14 17 14 20 14 10 10 15 11 17 12 15 16 19 18 6 2 +1261 1771 2155 2143 1203 729 823 926 629 596 835 612 471 295 290 467 675 729 561 425 586 682 678 1027 1154 1056 1089 1106 962 684 465 247 \ No newline at end of file diff --git a/python/tflite_micro/signal/ops/testdata/filter_bank_square_root_test1.txt b/python/tflite_micro/signal/ops/testdata/filter_bank_square_root_test1.txt new file mode 100644 index 00000000000..52359355355 --- /dev/null +++ b/python/tflite_micro/signal/ops/testdata/filter_bank_square_root_test1.txt @@ -0,0 +1,549 @@ +6808147337 6255084086 2891865000 2964076648 2152163566 4144033795 10661119507 4427861633 282035520 151567251 385304142 152174611 166730384 142057431 185744758 182072626 828522087 2395432148 1217206879 232537562 325734697 171238639 102462894 271430791 75533907 128654737 112787255 157602543 360207890 755391391 4499305573 15049445959 +8 +322 308 210 212 181 251 403 259 65 48 76 48 50 46 53 52 112 191 136 59 70 51 39 64 33 44 41 49 74 107 262 479 +6378386839 4548260906 11745372396 8847683212 2353335503 908091718 599237014 530730360 116378469 117647851 110088584 82866604 148664412 20503308 17929649 73408437 1395183501 1713776676 195145610 52568541 136448881 102335389 46295364 41565888 30128609 24970519 26501226 64557492 47855937 59369896 1044206336 1873359366 +7 +623 526 846 734 378 235 191 179 84 84 81 71 95 35 33 66 291 323 109 56 91 79 53 50 42 39 40 62 54 60 252 338 +11830312965 10104483464 4254083699 4920784847 2691689024 514534283 177627123 73108160 7520576 22913015 17738822 2856491 2207854 1622477 3236693 2813354 6773105 8917610 13778260 2543654 2800499 3222588 3140880 1513508 1400454 2452535 2226265 4165951 1718554 1174583 1182831 2684807 +5 +3398 3141 2038 2192 1621 708 416 267 85 149 131 52 46 39 56 52 81 93 116 49 52 56 55 38 36 48 46 63 40 33 34 51 +11623254889 8535490010 36414517404 64555171414 8836025063 1207586430 168216022 203614811 53674241 28510524 18362880 29386172 11839398 1544701 3512255 27304657 108594872 74550693 19234123 22405562 24082157 16258164 8165249 15319916 11471675 14674879 7845527 20555044 27266014 29452154 139629499 213738262 +6 +1684 1443 2981 3969 1468 542 202 222 114 83 66 84 53 19 29 81 162 134 68 73 76 63 44 61 52 59 43 70 81 84 184 228 +242927331 17543652245 38377448409 30553590940 6023909610 512823860 125468738 86794564 88280568 57145279 111929488 37566392 47881879 2862718 1824794 25138320 39015764 13264948 31347231 13983838 11246708 10177784 15095122 27645495 10121102 10956097 16588418 31346023 31687207 49247267 599129402 1342925070 +6 +243 2069 3060 2731 1212 353 175 145 146 118 165 95 108 26 21 78 97 56 87 58 52 49 60 82 49 51 63 87 87 109 382 572 +3231767450 4747403802 6992857805 4776356668 1241977653 534133360 391355049 213046864 107540337 21753905 17939752 38069356 31690049 4514783 55902149 1239880908 4918683647 2484327852 460206148 106425571 11044392 16160905 8648933 6034216 14180674 6064888 18316917 14048399 26288688 24529777 20173858 12665313 +6 +888 1076 1306 1079 550 361 309 228 162 72 66 96 87 33 116 550 1095 778 335 161 51 62 45 38 58 38 66 58 80 77 70 55 +4585847527 2021955256 1659284130 2685462119 4107222329 1364536777 199134611 200880165 49038648 52179774 18199976 46830007 11684223 7003474 22309520 2259253004 8407756079 1304425202 191272625 10088876 16150624 7565978 4425560 19235510 21743127 20528309 29886565 8985334 17701920 29591094 12319506 7616931 +6 +1058 702 636 809 1001 577 220 221 109 112 66 106 53 41 73 742 1432 564 216 49 62 42 32 68 72 70 85 46 65 85 54 43 +11634553468 8958534760 32003651588 34529211612 9519445522 2842541748 1829328478 1395048731 471706024 263224460 58157172 48819653 64638154 15816622 118009888 169953303 1027412306 902228022 77795336 54973830 105900863 63035189 78178380 39164873 27167227 38390605 37860244 29174662 80574766 86316097 41953147 22529613 +7 +842 739 1397 1451 762 416 334 291 169 126 59 54 62 31 84 101 250 234 68 57 80 62 69 48 40 48 48 42 70 72 50 37 +2271965329 6161315138 24998827233 16746513325 474241037 268787780 515959467 585633622 137077066 37289369 104964050 27817360 22992018 19750183 25461499 97202988 249884704 77757616 46525943 55814543 9547193 1893661 2911526 8614811 9535752 10862368 4529579 6153510 5157694 5112980 3717683 3512177 +6 +744 1226 2470 2022 340 256 354 378 182 95 160 82 74 69 78 154 247 137 106 116 48 21 26 45 48 51 33 38 35 35 30 29 +10528000193 28362909357 47577133750 8466055850 5842710800 2350911449 2989811430 2646718839 515262774 276394561 469831522 55815334 28232446 11591835 40329249 67658028 183446654 323189165 117473797 41339272 25846050 12428673 18670978 22521722 78477733 54207503 25150296 43098592 28211625 15736687 20990296 17907031 +7 +801 1315 1704 718 597 378 427 401 177 129 169 58 41 26 49 64 105 140 84 50 39 27 33 37 69 57 39 51 41 30 35 33 +3689126303 5693478408 14510220226 11218983977 3321541259 990060296 505154293 874521146 125327571 13113319 48126300 14248109 5581766 5645895 10369126 11242595 68352305 71801379 30425732 18539146 5256846 5242451 21773148 12653302 17721172 7015540 9536686 7889633 9035362 7238258 9009320 5155487 +6 +949 1178 1882 1655 900 491 351 462 174 56 108 58 36 37 50 52 129 132 86 67 35 35 72 55 65 41 48 43 46 42 46 35 +1348592956 1179063878 6771717768 16973128069 2815542073 1746395005 913338332 674226143 122658832 123730551 33462594 13125255 7390858 4482455 14859657 15858428 10849103 15563708 33897074 28026839 5251424 8823330 7148914 23003498 6074383 2804360 4174611 2222401 16262269 6387177 4798964 2180319 +6 +573 536 1285 2035 829 652 472 405 173 173 90 56 42 33 60 62 51 61 90 82 35 46 41 74 38 26 31 23 63 39 34 23 +2210794846 386482292 2404509378 9466226320 4263081872 1249634934 315809414 505244943 145503189 257422228 98304260 25161953 31785652 4789663 16892084 13772237 24930132 69721305 27585705 14155631 6507418 7605749 7675786 6396648 13642936 24142622 7618359 9672939 16433302 9900030 6689766 2896092 +6 +734 307 766 1520 1020 552 277 351 188 250 154 78 88 34 64 57 78 130 82 58 39 43 43 39 57 76 43 48 63 49 40 26 +11070760676 5775306959 9366331081 3135789885 2922599572 1585815270 3060009695 1583948185 1107647025 4112297679 1229075584 76065393 96941802 90410526 54803188 108849892 30251308 109369301 151762458 72371138 121687651 75986837 105014058 81852362 86673720 59088946 41419995 21865918 24559283 47824461 49504106 19270102 +7 +822 593 756 437 422 311 432 310 260 500 273 68 76 74 57 81 42 81 96 66 86 68 80 70 72 60 50 36 38 54 54 34 +241288346 2791500496 3518365639 16842694315 10321741892 2856500415 3612347426 5556148044 3354278605 4137345289 847544054 347669177 393556856 118965162 66723550 97275871 288151003 169933912 243391109 93516383 100978467 138474361 52860527 135271105 117012607 138748503 66067470 99403751 64978722 71727089 104829244 37967637 +7 +121 412 463 1013 793 417 469 582 452 502 227 145 154 85 63 77 132 101 121 75 78 91 56 90 84 92 63 77 62 66 79 48 +8196217789 1957025137 4105133346 8254685747 2845377226 2070848339 507309560 673252806 149784914 187081437 137602536 132462889 43177557 19527115 10046263 32317284 32735405 11963013 19920883 20458214 5512408 18694013 26232132 16410094 38688435 28834970 10315897 31713278 27728808 20097256 11833634 17320225 +6 +1414 691 1001 1419 833 711 351 405 191 213 183 179 102 69 49 88 89 54 69 70 36 67 80 63 97 83 50 87 82 70 53 65 +6329789845 4222935529 1589637646 3988540345 3508973056 550883596 965366228 1570610251 548279819 497984197 744534210 69130211 16423215 1749836 8651550 25229284 47071422 89832514 75645986 55604185 22717076 42775713 60916084 33057526 58017351 21099429 23609223 26573470 57712926 32231803 7116200 9828388 +6 +1243 1015 622 986 925 366 485 619 365 348 426 129 63 20 45 78 107 148 135 116 74 102 121 89 119 71 75 80 118 88 41 48 +14773238038 14617819759 4404399640 6987944791 5163371075 1020149550 624962766 762177842 446908030 313892902 83094210 14168330 9434170 2986072 2245143 19789669 404318747 1101402493 465285483 130434468 10237462 2199612 5350454 8421955 8590531 3057048 1937279 4054659 4873241 1751857 752879 960938 +4 +7596 7556 4147 5224 4491 1996 1562 1725 1321 1107 569 235 192 108 93 278 1256 2074 1348 713 200 92 144 181 183 109 87 125 138 82 54 61 +24009075119 13217887400 6396689913 21190770700 8294492884 4251870864 5216966340 3338427807 739078305 548040252 444139732 42335812 15593099 2661234 12177824 41844984 1378487966 1734679305 340220206 134774160 16109355 4278460 3642201 42200780 29648878 3170056 1839418 2082559 955372 928552 3900984 7950512 +3 +19368 14371 9997 18196 11384 8150 9028 7222 3398 2926 2634 813 493 203 436 808 4641 5206 2305 1451 501 258 238 812 680 222 169 180 122 120 246 352 +4296266726 1990800203 15741493481 21776392145 6161477790 25100571160 13523866196 1562085004 926458893 431900830 562589786 44640973 20067177 318044 17722393 130937341 288588039 41745443 34804807 9009351 8845760 2076364 1712301 9103885 7045572 1075962 865130 2855220 2643046 1189154 3098130 5556710 +2 +16386 11154 31366 36892 19623 39608 29073 9880 7609 5195 5929 1670 1120 141 1052 2860 4247 1615 1475 750 743 360 327 754 663 259 232 422 406 272 440 589 +605954803 1045895109 8596982149 9183189032 4439201333 14092612619 3806964669 523005046 366555176 145508503 126483818 22129461 13971339 207660 12416315 23292080 54024445 14728020 1572314 595195 1052889 212395 485132 1666417 711176 390875 1135514 2178611 2380866 1231538 1921926 1900340 +1 +12308 16170 46360 47914 33313 59356 30850 11434 9573 6031 5623 2352 1869 228 1762 2413 3675 1919 627 385 513 230 348 645 421 312 533 738 771 555 693 689 +1209456858 1453754383 13727565604 16544725636 6709475864 22660985989 6904878652 189964515 200209624 56130992 87725944 8378007 4353578 948273 9223142 51480079 56796182 21173742 3528563 837291 489459 322404 435002 748647 434285 281370 910977 4202033 7081305 1029846 1047050 2781397 +1 +17388 19064 58582 64313 40955 75268 41548 6891 7075 3746 4683 1447 1043 487 1518 3587 3768 2300 939 457 350 284 330 432 329 265 477 1025 1330 507 511 834 +1093863859 2865888829 20214480262 22044372580 5604611882 11607364828 3311838971 19068201 54530851 36742630 52345102 7983694 2556635 2499466 14565655 35160346 46501016 35320368 1086201 1970274 319757 282071 78717 220565 283731 175340 823574 2847149 4486969 634424 1734847 3915481 +1 +16537 26767 71089 74236 37432 53868 28774 2183 3692 3031 3617 1413 799 790 1908 2965 3409 2971 521 702 282 265 140 235 266 209 454 843 1059 398 658 989 +947952750 7969309015 20746730841 13366811972 5981303880 3213009662 1562281490 816638907 353432806 126281909 47348624 18231457 18266153 9009828 7898301 8834641 42185198 34482319 3724320 3275706 846070 676290 223381 1076580 1155901 1289872 1523173 2054241 3496973 1520634 337294 647382 +2 +7697 22317 36009 28903 19334 14170 9881 7144 4700 2809 1720 1067 1068 750 702 743 1623 1468 482 452 230 205 118 259 268 284 308 358 467 308 145 201 +2150785063 1588949617 4827036733 4138871917 4668325703 12969199872 3868202669 192520894 424089128 255936015 203969230 40711251 43907143 29075112 25164731 22623862 17119766 87612575 21113733 2437026 954286 843476 687519 1225596 491323 2335704 2809254 3100201 2966911 1373946 1803698 6735683 +3 +5797 4982 8684 8041 8540 14235 7774 1734 2574 1999 1785 797 828 674 627 594 517 1170 574 195 122 114 103 138 87 191 209 220 215 146 167 324 +3163230914 644216959 703830900 2242195256 18498963362 38940581179 8114251229 1166614441 1493394923 193398575 267758980 210671975 75687386 22816163 36888732 69359382 107543927 173260053 37244740 7834191 1550610 2189149 7825768 9354076 1405989 5027645 5830452 15548178 28564770 17439516 14443692 13628940 +4 +3515 1586 1658 2959 8500 12333 5629 2134 2415 869 1022 907 543 298 379 520 648 822 381 174 77 92 174 191 74 140 150 246 334 261 237 230 +5067109681 12859186909 21136876749 9521989451 20115499549 43570635842 7904527964 2368341719 2283411614 380756767 575051532 229801984 92521323 26417836 96623487 138019913 30346884 679651136 654787263 60210513 12767069 12181393 28904429 26887267 16411142 11205753 30774139 40684513 127664601 74532854 42521063 30672949 +5 +2224 3543 4543 3049 4432 6523 2778 1520 1493 609 749 473 300 160 307 367 172 814 799 242 111 109 168 162 126 104 173 199 353 269 203 173 +1562655190 21446677639 34731971521 8654492932 6858486424 16109817961 2287003827 175389713 321662840 95315609 154988208 295608443 192992610 42215645 64078006 121609512 64579822 384850176 864670893 80885618 21645156 42949254 40877181 11540781 9656180 22741349 26694933 39576780 27645449 11218720 9050111 6099228 +5 +1235 4576 5823 2907 2588 3966 1494 413 560 305 389 537 434 203 250 344 251 613 918 281 145 204 199 106 97 149 161 196 164 104 94 77 +1179864909 4438484312 3337492275 10773972694 9690901207 17806062416 4403479604 300948683 254174295 918139968 599934592 193487700 149701042 9859033 13825897 44957753 134314275 1809100517 2473691731 232577496 145384776 61370824 38002572 43365701 30284484 7384129 14936535 23393597 50137944 34535972 15072053 5795591 +5 +1073 2081 1805 3243 3076 4169 2073 542 498 946 765 434 382 98 116 209 362 1329 1554 476 376 244 192 205 171 84 120 151 221 183 121 75 +379965892 393641315 1159491576 957166597 503832049 927595211 532474510 187713079 104200224 118561469 67707142 34565047 9777026 4133484 48683812 120798722 385450809 711914256 1534630396 4247719002 6605796171 3321302572 142909374 46979965 41371797 5428256 2691494 10025124 14492291 23564820 65698922 21418945 +3 +2436 2480 4256 3867 2805 3807 2884 1712 1276 1361 1028 734 390 254 872 1373 2454 3335 4896 8146 10159 7203 1494 856 804 291 205 395 475 606 1013 578 +50489734 54067535 148798789 175813464 579095728 2635338393 5990297540 5678906428 1478307664 343315467 105382572 49482409 129459599 24600130 143176782 103624298 239459514 899481722 2054853390 3809893642 10888309912 3282179924 1561099261 146734330 191627892 92045461 8267458 8072209 341897971 726277657 579229412 198148117 +3 +888 919 1524 1657 3008 6417 9674 9419 4806 2316 1283 879 1422 620 1495 1272 1934 3748 5666 7715 13043 7161 4938 1514 1730 1199 359 355 2311 3368 3008 1759 +1001685788 746379295 3120507595 12674081026 18617495547 16495225865 13783334513 6426636828 258352888 214884363 519203490 732337683 268748585 82861456 353754294 290416683 782930021 2201466361 2794374570 1834726522 2679756280 2930227311 1682665060 942156007 1313576578 347830410 45808259 85053499 964120244 1587740690 542068834 754676225 +4 +1978 1707 3491 7036 8527 8027 7337 5010 1004 916 1424 1691 1024 568 1175 1065 1748 2932 3303 2677 3235 3383 2563 1918 2265 1165 423 576 1940 2490 1455 1716 +7000714511 12606617750 7670385710 2308146020 3140639338 3977832063 2344885002 274558122 123010642 150749898 91901636 16249429 5981427 2777514 17349644 7798497 17836581 69400993 76902511 155430903 109242398 125647742 118696369 195676485 320175501 29279837 5693732 4665549 80570126 110458961 43238454 33928549 +2 +20917 28069 21895 12010 14010 15767 12106 4142 2772 3069 2396 1007 611 416 1041 698 1055 2082 2192 3116 2613 2802 2723 3497 4473 1352 596 540 2244 2627 1644 1456 +5143990038 4153995263 3359220824 18692424053 18853862091 5915158204 4611446955 2935754086 246522545 212786044 73487302 43412398 12454365 3913636 1507440 11968048 52157752 201422122 143619492 274890780 551805067 557731578 571234780 528233559 720591179 144674549 4367463 5183587 29278078 4504694 1329919 3945004 +1 +35861 32225 28979 68360 68654 38455 33954 27091 7850 7293 4286 3294 1764 989 614 1729 3611 7096 5992 8290 11745 11808 11950 11491 13422 6014 1045 1138 2705 1061 576 993 +737086475 199117112 1670438004 10741692241 3356388559 1768674154 5397602132 1312352655 102546050 47396047 7471078 7495982 6128779 2005378 658898 6712874 38438122 20278300 62843068 194318965 151369486 988510650 493465296 270768194 581474146 75460711 2947419 3483859 16066288 2640964 220569 1229451 +0 +27149 14111 40871 103642 57934 42056 73468 36226 10127 6884 2733 2738 2476 1416 812 2591 6200 4503 7927 13940 12303 31441 22214 16455 24114 8687 1717 1867 4008 1625 470 1109 +588176485 240583144 2884339303 9933891889 2127262302 5893697049 10187731939 970843117 202938032 52048018 10182704 2505728 11710226 3340048 743403 8872557 16728611 19896564 79197341 110845859 308742005 1700737148 216131009 279268534 212892002 46221585 3472275 2484835 12199449 3552489 276650 1095028 +0 +24252 15511 53706 99669 46122 76770 100934 31158 14246 7214 3191 1583 3422 1828 862 2979 4090 4461 8899 10528 17571 41240 14701 16711 14591 6799 1863 1576 3493 1885 526 1046 +229209565 325939649 4026845668 6746593896 1062037748 13185922822 12366346307 774579081 193349694 34146309 30290866 7585986 8640955 1200927 1094759 5399523 14986773 24429908 46767311 55975549 488988572 797725628 217726324 154908948 324268385 165305048 1940927 5406041 19815318 2349459 458869 1565114 +0 +15140 18054 63457 82138 32589 114830 111204 27831 13905 5843 5504 2754 2940 1096 1046 2324 3871 4943 6839 7482 22113 28244 14756 12446 18007 12857 1393 2325 4451 1533 677 1251 +233236004 372059747 3720635405 4840014083 2474879002 16484548283 8507153627 598495833 467734248 39243814 47455426 8430192 3392392 377981 875318 2484565 15845558 18176914 32061401 56747499 180709466 485218951 266196081 74416012 596128810 163535924 2834952 6989193 14972360 1155977 156099 770625 +0 +15272 19289 60997 69570 49748 128392 92234 24464 21627 6264 6889 2903 1842 615 936 1576 3981 4263 5662 7533 13443 22028 16316 8626 24416 12788 1684 2644 3869 1075 395 878 +86102584 683952431 5058673659 4485649816 3398580433 10669113701 3640325282 460145399 188133655 38263437 10525838 21231016 14400343 382117 684420 3970897 8388937 7420156 28785401 32618490 145087960 437388717 207952119 94581602 357456624 16216644 1674104 4431907 11204280 957639 802073 918059 +0 +9279 26152 71124 66975 58297 103291 60335 21451 13716 6186 3244 4608 3795 618 827 1993 2896 2724 5365 5711 12045 20914 14421 9725 18907 4027 1294 2105 3347 979 896 958 +266668513 3691427534 15395423891 7727109635 18438751400 18369169795 1496098715 1922356437 498670390 76025345 38520614 55382555 11059903 3032946 2294403 7035791 12546931 18996261 139567595 56779285 586886672 753999916 441184194 209198221 432436195 51134093 3818838 7142961 11417811 3240013 2520203 7044858 +1 +8165 30378 62039 43952 67894 67766 19339 21922 11165 4359 3103 3721 1663 871 757 1326 1771 2179 5907 3767 12113 13729 10502 7232 10397 3575 977 1336 1689 900 794 1327 +510699404 4841596267 14772517623 7246185629 24267853064 22574962093 2117596970 393222986 231544386 46108194 21699402 10161343 6388452 4063825 1480860 4735985 10925705 16215577 18467886 50175417 117189975 905474412 419407332 217074536 403021886 19882058 775532 2591199 8345167 4105573 2208603 701925 +1 +11299 34791 60771 42562 77890 75125 23008 9915 7608 3395 2329 1594 1264 1008 608 1088 1652 2013 2148 3541 5412 15045 10239 7366 10037 2229 440 805 1444 1013 743 419 +652457100 8628642947 14757055619 8841174305 24237892960 6610685245 493631450 571414491 105514170 21432075 15554668 3558877 668914 839542 1533633 7037972 27708223 9256703 23851076 16580191 41757120 197930080 898068540 261650776 197017328 25353992 2933924 5856325 8516081 1137938 820737 476529 +1 +12771 46445 60739 47014 77842 40653 11109 11952 5136 2314 1972 943 409 458 619 1326 2632 1521 2442 2036 3231 7034 14984 8088 7018 2517 856 1210 1459 533 453 345 +434304470 9920745040 13278495955 9817093234 24275996903 8307106192 312741830 232835386 22204618 22902495 12823996 4640824 813457 300122 381160 477293 3017640 6064145 16195485 17885065 92506863 222810473 693624334 602409633 190105119 28851156 2393151 8159542 17396328 1891183 1048006 1131508 +1 +10420 49801 57616 49540 77904 45571 8842 7629 2356 2393 1790 1077 451 274 308 345 868 1231 2012 2114 4809 7463 13168 12272 6894 2685 773 1428 2085 687 512 532 +2360907925 23641099792 24190479903 8989470020 8514477146 7420507469 1770403678 154991439 77470283 57133060 18375458 10645259 8301376 511665 1171654 1838584 3423538 11181629 10284332 7209387 12047105 79752205 362456965 901653550 171681651 26149641 5558929 3296404 3567963 1280080 439503 2015916 +2 +12147 38439 38883 23703 23068 21535 10519 3112 2200 1889 1071 815 720 178 270 339 462 836 801 671 867 2232 4759 7507 3275 1278 589 454 472 282 165 355 +4960298104 22328432083 16843586488 5872508968 6210088640 2146584904 1299267949 336760434 159261111 95975655 52071342 9469394 14208987 3370166 6696095 6916563 17041752 37625449 178646601 71244711 125940835 741172861 290740088 471878356 115904649 27906931 9524357 9782136 6484974 3475139 2605818 5507266 +3 +8803 18678 16222 9579 9850 5791 4505 2293 1577 1224 902 384 471 229 323 328 516 766 1670 1055 1402 3403 2131 2715 1345 660 385 391 318 233 201 293 +4513219420 3581289186 2032493116 1245889388 7880899241 5927486252 2069957980 383788919 30756951 60584197 45678440 16577108 13948981 3196244 9749280 22907599 13314734 15141562 9734323 21475900 55257346 195892955 191813710 507652966 86369699 38652965 10923132 26823590 16256703 7986545 1208121 1088002 +3 +8397 7480 5635 4412 11096 9623 5687 2448 693 973 844 508 466 223 390 598 456 486 390 579 929 1749 1731 2816 1161 777 413 647 504 353 137 130 +5430960032 18275083952 15118657235 3412749563 1117285414 3148804700 2098188826 226058619 64045356 24328113 12833562 43246712 10106915 2396236 2500634 5144562 8400664 18862668 2806171 8606983 20298825 50751969 125447823 169402516 71788537 11866110 3912105 7332435 2977944 3408669 581674 1180421 +3 +9211 16898 15369 7302 4178 7014 5725 1879 1000 616 447 822 397 193 197 283 362 542 209 366 563 890 1400 1626 1059 430 247 338 215 230 95 135 +3877771404 27761261248 28420992863 3331593153 1913040185 4709950193 2868691697 271794680 132554333 144464631 154168886 261686856 220920674 46414061 173845813 418420153 944901890 922766313 342868780 46615762 229212299 1344441985 1587270522 957735796 375938118 101153278 388529117 661581116 109769948 39880357 46054200 21636483 +3 +7784 20827 21073 7215 5467 8578 6695 2060 1439 1502 1552 2022 1857 851 1648 2556 3842 3797 2314 853 1892 4583 4980 3868 2423 1257 2463 3215 1309 789 848 581 +5300833505 20834814914 13850962448 1873767095 2487756376 4852873681 3755876693 1919366017 472353020 1689400436 2171894156 520817680 521459944 636950352 1290266840 2313635491 2401912814 1031627313 576525002 328303210 349755481 879293011 1002416987 276910370 201658232 41836064 219476277 344242602 115666562 29492736 80824852 79723660 +3 +9100 18042 14711 5410 6234 8707 7660 5476 2716 5137 5825 2852 2854 3154 4490 6012 6126 4014 3001 2264 2337 3706 3957 2080 1775 808 1851 2319 1344 678 1123 1116 +1790362822 18781045222 22562441690 6462182676 18128068448 5722057826 337490186 211995011 57085265 911404786 1903408596 221072138 61751041 105471168 731224461 595365388 1005357000 509110744 153303799 200052245 238443672 313109719 200258089 219562319 270700173 252786165 120989451 62254235 230127733 122118288 50809354 22421756 +3 +5289 17130 18776 10048 16830 9455 2296 1820 944 3773 5453 1858 982 1283 3380 3050 3963 2820 1547 1768 1930 2211 1768 1852 2056 1987 1375 986 1896 1381 891 591 +1059610515 14181243981 14613972842 5466826627 6745692396 786391149 149453393 52667898 55887880 14781041 23641746 8487401 32135496 12305835 46806769 89831400 35767578 32578157 170740089 76209230 38636763 16857759 27269618 30040677 18816332 8955638 22591373 23437362 26077341 6967113 5358029 2881430 +2 +8138 29771 30222 18484 20533 7010 3056 1814 1869 961 1215 728 1417 877 1710 2369 1495 1427 3266 2182 1554 1026 1305 1370 1084 748 1188 1210 1276 660 578 424 +3558853838 36479353059 45775358167 11896394798 15439046486 2907001113 318857498 79573626 51766602 15361996 3775154 4620117 12891819 11474850 26971555 53566278 30501324 67669079 197406668 35979243 37906039 9377114 23684015 20312735 19246500 11544515 15672959 16358304 21213969 8866935 4931195 4922791 +2 +14914 47749 53488 27267 31063 13479 4464 2230 1798 979 485 537 897 846 1298 1829 1380 2056 3512 1499 1539 765 1216 1126 1096 849 989 1011 1151 744 555 554 +4711714844 51948308974 52389391761 25027010465 37327136308 5663131971 303650269 65583162 15838335 24131249 55589256 9873513 15351748 7550862 7329051 43135396 121948918 203703621 54327701 17188164 8026672 35595326 82722205 61526159 37550176 10318907 43646151 15113825 27191727 16184164 3858708 8551257 +2 +17160 56980 57221 39549 48300 18813 4356 2024 995 1228 1864 785 979 687 676 1642 2760 3568 1842 1036 708 1491 2273 1961 1532 803 1651 972 1303 1005 491 731 +1241353777 12139827085 10081549048 8833879570 14308666072 1944063668 101436178 63014875 14373077 3407211 6551958 3654837 265591 604374 2326243 4528277 28422415 31578180 14722669 3851178 4350076 13992486 20242710 7999421 7094511 3573494 6609526 6029691 2645998 2174236 1252377 4823878 +1 +17616 55090 50203 46994 59809 22046 5036 3969 1895 923 1280 956 257 388 762 1064 2665 2809 1918 981 1043 1870 2249 1414 1332 945 1285 1228 813 737 559 1098 +1188420328 9265686235 5906008820 11204837640 15439282728 1650704336 19184927 2445049 7813235 6732564 10064406 2742109 637041 540628 1058714 11081953 33689765 7914707 885291 1047270 1717221 3223317 6373933 2659186 3900087 1265970 1099387 1183922 1519546 534873 732169 4831497 +1 +17236 48129 38425 52926 62127 20314 2190 782 1397 1297 1586 828 399 367 514 1664 2902 1406 470 511 655 897 1262 815 987 562 524 544 616 365 428 1099 +5342412785 38722533089 21689447260 50583681666 60559102399 5420162612 196148329 78721693 35503302 28070904 36470212 4461095 684869 766881 872950 10248336 61127767 81651106 15531901 2191609 4347601 16106647 27094104 69949829 36882222 12746307 13721105 3897734 1912678 1172204 3583264 5906856 +2 +18273 49195 36818 56227 61522 18405 3501 2218 1489 1324 1509 528 207 219 233 800 1954 2259 985 370 521 1003 1301 2091 1518 892 926 493 345 270 473 607 +5976136105 45889155646 25658879364 59224163000 64547799918 5451541197 122361710 25811723 17488931 8144534 14054226 9800110 3466293 869880 2810809 8112800 20962206 23134912 21780822 3439464 3145343 5567380 19715633 32666498 13694714 4817242 8309353 3003686 3640241 949912 1543539 1762807 +2 +19326 53554 40046 60840 63515 18458 2765 1270 1045 713 937 782 465 233 419 712 1144 1202 1166 463 443 590 1110 1428 925 548 720 433 477 243 310 332 +2008415345 14286546721 8415874099 14778680869 14652446311 1120476353 18617467 2379745 2763813 4639476 2584170 713447 1243275 577744 1812721 1926717 4036292 777832 710735 598220 910191 1268443 1972572 1763893 1248038 1033367 1376615 848022 881743 393300 268536 1244621 +1 +22407 59763 45869 60784 60523 16737 2157 771 831 1077 804 422 557 380 673 694 1004 441 421 386 477 563 702 664 558 508 586 460 469 313 259 558 +11197419827 53747313469 25512828106 52498929124 43039889339 2834476380 79435791 47620341 17388999 10313988 9217184 2076347 2364366 1145721 744706 1928110 12788648 11946948 4706399 1281115 850483 1569666 6871462 4022532 3507189 1789056 2310075 4018858 3929235 1385139 473221 925427 +2 +26454 57958 39931 57281 51865 13310 2228 1725 1042 803 759 360 384 267 215 347 894 864 542 283 230 313 655 501 468 334 380 501 495 294 172 240 +9674828116 40853226428 18099637010 31372683749 21663365062 1421139170 5982313 13535293 12142146 14815410 4509014 2959404 984268 1101467 2330853 10107173 16826751 2462645 903122 1444686 1681280 1016679 2136031 4944177 1982343 1835731 4198975 6033203 4819728 1897796 632957 444856 +2 +24590 50530 33633 44280 36796 9424 611 919 871 962 530 430 248 262 381 794 1025 392 237 300 324 252 365 556 352 338 512 614 548 344 199 166 +6959596373 24875102982 9693726808 7941729113 4020383447 237333518 24200982 19862103 5794857 9243781 5800712 1465016 528385 1003545 1982403 849579 5415628 4060057 745476 1182047 740350 462474 765759 938646 657592 1239116 1277482 2327988 3113696 621882 116217 435541 +2 +20856 39429 24614 22279 15851 3851 1229 1114 601 760 602 302 181 250 352 230 581 503 215 271 215 170 218 242 202 278 282 381 441 197 85 165 +11213498042 35346955631 15380141567 7629367028 958188131 109069287 70701726 15204656 9379514 5251685 26542446 7720732 5143634 390902 797326 3200745 4910921 11500298 9574115 6990819 1209812 1665187 2313311 2639143 1752545 3939236 5994852 7033823 5485706 1106207 385658 665411 +3 +13236 23501 15502 10918 3869 1305 1051 487 382 286 644 347 283 78 111 223 277 423 386 330 137 161 190 203 165 248 306 331 292 131 77 102 +4151908471 25783138501 20963722347 53261047487 24237659227 1059109658 197300754 293161910 110023109 28198999 31384590 15394241 33201497 11114967 18623849 30687969 13726223 41541520 20886489 12677903 7031868 5290971 2124916 4335075 6243582 14430042 6814970 19823481 14622024 5161140 4419940 3457317 +4 +4027 10035 9049 14424 9730 2034 877 1070 655 331 350 245 360 208 269 346 231 402 285 222 165 143 91 130 156 237 163 278 239 142 131 116 +1960807838 11698992199 17602050409 67057545556 59626149119 3824877938 957576562 360136631 87659551 25660229 57599760 93924666 39003744 28963610 9529702 61295249 55207502 26039995 15225624 10238539 12016218 11253646 22026464 18887085 24143240 6981991 1364725 6932771 18750506 9211890 4983732 5015579 +4 +2767 6760 8292 16184 15261 3865 1934 1186 585 316 474 605 390 336 192 489 464 318 243 200 216 209 293 271 307 165 73 164 270 189 139 140 +2635049436 9872003780 14558086781 24612304388 43029241942 6433347833 1958473825 285370348 53967072 14007214 9471104 25132244 25606158 8860906 3260197 6803138 12251186 21471749 7927187 2064678 870657 794234 2522193 5478489 8601980 3598645 680058 2417220 4073574 2682617 5959231 5245109 +3 +6416 12419 15082 19610 25929 10026 5531 2111 918 467 384 626 632 372 225 326 437 579 352 179 116 111 198 292 366 237 103 194 252 204 305 286 +2651651221 17150675800 14469965119 13636585471 33273500830 7206414998 1758370222 285864778 84753792 24333498 23961510 20573463 63212579 34844077 1066985 2685442 3977777 5743617 1972195 1136986 95561 165208 559069 3492449 5317475 2066435 597067 1420664 514618 345402 5189385 3344122 +2 +12873 32740 30072 29194 45602 21222 10483 4227 2301 1233 1223 1134 1987 1475 258 409 498 599 351 266 77 101 187 467 576 359 193 298 179 147 569 457 +3531159376 25147647472 18776052491 20490195192 44600945644 9393331486 5228126307 1236145833 349548411 52192002 24649124 51827336 125620612 41485682 1035161 1495022 1496644 3327860 3062154 1043210 1024827 537686 645819 2381446 3831722 883720 976694 2360246 3866652 1213036 1380602 799619 +2 +14856 39645 34256 35786 52797 24229 18076 8789 4674 1806 1241 1799 2802 1610 254 305 305 456 437 255 253 183 201 385 489 235 247 384 491 275 293 223 +2689356138 17854390463 13572125613 12639287821 25812165685 7838896784 10630986023 2307766001 466730835 212533312 150069330 116881346 204978663 105309915 13685491 4161676 1224780 1492001 2054219 1033583 989467 855353 566092 3107627 8700039 893998 699239 2956926 5916558 440566 277126 282354 +2 +12964 33405 29124 28106 40165 22134 25776 12009 5401 3644 3062 2702 3579 2565 924 510 276 305 358 254 248 231 188 440 737 236 209 430 608 166 131 132 +2468034019 14392249973 10510746232 7950834690 13720016445 8066648095 17049012169 3138399205 492402616 453731910 329673648 258917680 294714954 86804938 10432947 6893265 3818678 2378920 1963173 2587595 1280722 793862 711593 3720123 8782004 1298230 214480 4398132 4553477 1090233 217234 161015 +2 +12419 29992 25630 22291 29283 22453 32643 14005 5547 5325 4539 4022 4291 2329 807 656 488 385 350 402 283 222 211 482 740 284 115 524 533 261 116 100 +1930925128 11394149803 9496996200 8425927697 14003531534 8302245381 20903880642 4255067778 568586568 598848990 674150846 462004378 298733708 89528547 3427480 6791855 6494664 2173093 840611 1352961 1410280 560724 461019 2024137 9281243 5551951 1041627 2738005 14367963 9542068 804478 117035 +2 +10985 26685 24363 22948 29584 22779 36145 16307 5961 6117 6491 5373 4321 2365 462 651 637 368 229 290 297 187 169 355 761 589 255 413 947 772 224 85 +1328525791 8226140593 8573256374 5116463892 14132161120 8716741414 23295290048 5806712331 732551143 505886447 899225022 950209192 287283788 38740489 2929819 4581562 5147668 2147565 1584818 755456 365294 487850 304956 682218 4240222 7671975 500181 4526657 12917465 4330371 407572 219544 +2 +9112 22674 23148 17882 29719 23340 38157 19050 6766 5623 7496 7706 4237 1556 428 535 567 366 314 217 151 174 138 206 514 692 176 532 898 520 159 117 +1133385167 4253111713 9489616933 5090645284 15469399439 9376440319 22396737262 9193806184 977883467 798546547 1770828072 1354863630 346400303 29244433 5390761 10528631 4395479 3634108 1677060 1456693 261229 230404 423529 413822 2954817 5040869 1500295 10466684 65843411 40471437 1686611 134288 +2 +8416 16304 24353 17837 31094 24208 37413 23971 7817 7064 10520 9202 4653 1352 580 811 524 476 323 301 127 120 162 160 429 561 306 808 2028 1590 324 91 +1593375707 4272592169 4705338930 3811646116 6072988369 6958443426 18116419114 3684648771 391777920 466306181 989195668 730393632 271793383 39364748 5233658 5991419 4235205 2102618 1997891 584958 312464 514036 938636 195610 781691 1271603 753909 4451140 33391608 36348065 1679905 176958 +2 +9979 16341 17148 15434 19482 20854 33649 15175 4948 5398 7862 6756 4121 1568 572 612 514 362 353 191 139 179 242 110 221 282 217 527 1444 1507 324 105 +3381297269 10008656032 19923779456 6206647179 4466848589 6500315031 14744835027 3219672750 638796493 4758309065 5339256144 1665197727 1231201914 111731960 41839582 58386066 82285111 124761447 41117766 8919613 7426713 2276132 4053240 1527105 9156485 9899293 1564027 6679465 30990656 86485180 5837215 546026 +3 +7268 12505 17644 9847 8354 10078 15178 7092 3159 8622 9133 5100 4386 1321 808 955 1133 1396 801 373 340 188 251 154 378 393 156 323 695 1162 302 92 +5130690995 11182565016 14999878302 6703599030 13175402422 6478155605 15251450915 4837860078 1232529311 1375696577 4224259282 784177292 980731963 290238278 29442347 26859042 20425443 16041636 6029955 7143348 7646081 4070675 3652879 2583137 962290 19163541 6146589 3022459 65784087 69675267 12493461 2109656 +4 +4476 6609 7654 5117 7174 5030 7718 4347 2194 2318 4062 1750 1957 1064 339 323 282 250 153 167 172 126 119 100 61 273 154 108 506 521 220 90 +1206280417 4026777121 11415006775 5352602812 7135269319 6487994549 12651556535 3944350238 768922737 695447059 1851156050 420238201 376422141 129610728 72826935 90101262 452451467 1435602187 1149121230 706095212 250041616 49622678 6788180 3636234 3492206 19866375 15385766 3844897 19095518 22943392 7301731 3381152 +4 +2170 3966 6677 4572 5279 5034 7029 3925 1733 1648 2689 1281 1212 711 533 593 1329 2368 2118 1660 988 440 162 119 116 278 245 122 273 299 168 114 +1507933073 15665494525 13174712205 18167877044 17486286535 6345579788 11717249627 8891291597 731261308 1412151862 4967685464 1233210514 605941997 205483119 114992118 133464785 443761197 795697922 241067272 179661236 90409633 23966124 9456428 3758017 16699850 26363574 55250004 28897717 91735802 39373499 13867324 4389478 +5 +1213 3911 3586 4212 4132 2489 3382 2946 845 1174 2202 1097 769 447 335 361 658 881 485 418 297 153 96 60 127 160 232 168 299 196 116 65 +1184897717 9489519590 13161607443 3940896631 964142326 475393282 1721182582 761078663 191678384 213333567 667740806 1418962511 860135688 30847144 52034993 75139011 187985265 693983281 439025812 215563048 50720960 35836293 32903588 10828782 26542270 46513943 99317166 86242895 22280320 25839724 8423881 3936547 +5 +1075 3044 3585 1961 970 681 1296 862 432 456 807 1177 916 173 225 270 428 823 654 458 222 187 179 102 161 213 311 290 147 158 90 62 +8799836771 17466212413 32665440123 24403786688 8503285165 13175755526 4040900839 916525418 3287256116 4440195764 1148126538 1808176080 1277219974 131040940 71721774 54670601 331957739 727965377 167476152 140134932 106561361 57215247 63617300 37784561 58234141 108326095 85013850 40846623 42192265 30598885 21178158 11369907 +6 +1465 2065 2824 2440 1440 1793 993 473 895 1041 529 664 558 178 132 115 284 421 202 184 161 118 124 96 119 162 144 99 101 86 71 52 +4857807625 4684720568 19617056396 31803867236 4955030952 9010553928 16402536385 9283905906 1613912232 3863957616 2721204994 414517697 373669558 54762803 77511915 285341973 1127283203 272477508 474958707 147473374 22204190 18946427 28675182 32227063 58805087 29323757 104031048 108459580 104433090 57221973 53538137 15311093 +6 +1089 1069 2188 2786 1099 1483 2001 1505 627 971 815 318 302 115 137 263 524 257 340 189 73 68 83 88 119 84 159 162 159 118 114 61 +7330480156 16609548476 13374449909 21888903641 28472566201 10681371317 21811217525 7934125741 414589425 651486731 1165589522 505022475 282410707 159844879 43103177 542021657 334135918 91548305 104735383 48122773 41171550 17496248 32535061 39651417 42812099 102651127 111705587 71170133 113984641 62087517 47392465 21397867 +6 +1337 2013 1807 2311 2636 1614 2307 1391 318 398 533 351 262 197 102 363 285 149 159 108 100 65 89 98 102 158 165 131 166 123 107 72 +625702055 8504774921 12980538424 2689966485 1703751633 2102469141 3774778781 832820790 37537968 165873540 206806770 27484038 57626150 21396616 3149708 26221776 15662539 4994582 37202246 56286514 27550069 7752774 23610114 22600491 21012791 15007870 32234541 29274214 15314955 10375862 13971888 9079596 +5 +781 2881 3560 1620 1289 1432 1919 901 191 402 449 163 237 144 55 160 123 69 190 234 164 87 151 148 143 121 177 169 122 100 116 94 +7942449073 12549071554 37862431503 22111769861 3321796076 3397947899 9696101223 2370351364 1329201747 1392781535 320445636 102043833 171236102 70907865 46505081 140095821 156987770 87062258 29289267 60491731 92476199 61315586 33280233 58752054 109291434 63859244 35969405 57265624 36095817 81099274 31695923 24573369 +6 +1392 1750 3040 2323 900 910 1538 760 569 583 279 157 204 131 106 184 195 145 84 121 150 122 90 119 163 124 93 118 93 140 87 77 +7177065731 27296218233 47594933532 12201429684 7508406139 7787942516 17147770595 3344923997 640996045 588235407 715176244 295290820 232007772 252139481 36244711 221315637 285268621 226591117 295250070 227033690 94050213 75985131 234440956 194101174 357316577 322585390 188272947 166223568 121985693 210343986 53015728 62797518 +7 +661 1290 1704 862 676 689 1023 451 197 189 208 134 119 124 47 116 131 117 134 117 75 68 119 108 147 140 107 100 86 113 56 61 +2337773680 7309566459 14801657761 7176957560 805387261 528593059 995158038 394826627 212307176 262055828 220277966 54044754 35002809 33866875 23296997 58449045 55407599 55507554 126956238 53378795 68657945 71688372 38021275 60553511 37553778 32386758 7812694 41946056 55645055 14394219 47986037 32390008 +6 +755 1335 1900 1323 443 359 492 310 227 252 231 114 92 90 75 119 116 116 176 114 129 132 96 121 95 88 43 101 116 59 108 88 +6046596233 25253943382 21742296418 21572249812 7935159819 2807538510 4463643538 2371843820 477267601 1347163060 919215284 421756089 487698103 297825307 134980049 196728935 235049753 309552333 77540179 165912218 109102241 94745557 103497585 246149174 248478488 117665019 180592448 154574135 109365391 129086298 148305794 126572548 +7 +607 1241 1151 1147 695 413 521 380 170 286 236 160 172 134 90 109 119 137 68 100 81 76 79 122 123 84 104 97 81 88 95 87 +2482510738 3438291754 16013403574 25549731472 5581583516 490118426 565096383 545958421 173219808 451581527 217609846 82442676 10837682 25359092 51647568 171316459 191286047 61242489 77041846 94361758 73210822 73273377 63869368 58136238 100905104 45909251 33836093 211808645 135636783 97216943 45813997 40036664 +6 +778 916 1977 2497 1167 345 371 365 205 332 230 141 51 78 112 204 216 122 137 151 133 133 124 119 156 105 90 227 181 154 105 98 +6005577148 10361578336 5499850377 18824686244 23839289913 6194273642 1140881685 1220742485 386003454 392065145 564659148 1469245201 189397527 31994341 103827053 340931677 234547962 140085192 149629184 212309949 329765153 614939006 1425759264 1402856201 2886912421 1097431041 239235379 532403289 597181906 308022360 162363562 134388866 +7 +605 795 579 1071 1206 614 263 272 153 154 185 299 107 44 79 144 119 92 95 113 141 193 294 292 419 258 120 180 190 137 99 90 +4976124203 17103236797 8886612270 972614885 688432390 125681039 269886822 728523694 328765789 699247293 1964140608 983888132 161906359 50668386 44643549 30865144 75440878 63495672 22927173 49906428 121756205 89913669 144554167 128146397 242608495 229381232 304290428 520416520 401708572 251849615 245014203 48888072 +6 +1102 2043 1472 487 409 175 256 421 283 413 692 490 198 111 104 86 135 124 74 110 172 148 187 176 243 236 272 356 313 247 244 109 +6090467809 20155652713 16794708544 8636815204 6987319465 939720016 606870074 1304660187 737907949 2365890851 3863588022 1304580576 976860358 228676104 189562733 284175486 355739621 200192212 137950714 504845896 680360534 347997407 859665822 507802247 540486367 463426695 883873959 398332294 538245923 905454393 2553728946 771749081 +7 +609 1109 1012 726 653 239 192 282 212 380 485 282 244 118 107 131 147 110 91 175 203 145 229 176 181 168 232 155 181 235 394 217 +3224016691 4338379168 12976914061 20894584783 5034741646 1133599883 648001229 502753565 1253051496 1702828293 4085184714 1163694552 202926742 105583933 346290304 440669922 979093135 584597296 211004197 425233986 117367561 164643633 613232986 299306589 490263396 602047556 1614927769 743901983 736697030 1072714158 1590236639 129053730 +7 +443 514 889 1129 554 263 198 175 276 322 499 266 111 80 145 164 244 188 113 161 84 100 193 135 172 191 313 213 212 255 311 88 +1097476178 915709831 845753022 4769534864 8298187396 3063024599 718278018 279312287 787638110 418343968 2354346912 792335948 96968259 50105885 144381988 565074570 118376217 205787733 205129540 133248688 260822608 219911270 468065353 276707757 230721104 274481966 385569749 222564925 681777581 671036064 364396821 93738895 +7 +258 236 227 539 711 432 209 130 219 159 379 219 76 55 93 185 85 112 111 90 126 115 169 129 118 129 153 116 203 202 149 75 +4157140845 2613794305 4727677279 5266829776 7424920178 5789172423 1898804582 1268984326 589508951 284955983 330923704 652302163 117550766 71398485 47435034 192953592 149161984 37318450 352312438 682325331 291320265 96148797 293130744 328654162 209549663 211642083 327489326 178558175 766989134 843444145 208471186 70954403 +7 +503 399 537 566 673 594 340 278 189 131 142 199 84 66 53 108 95 47 146 204 133 76 133 141 113 113 141 104 216 226 112 65 +7180286108 2837910580 4805969914 6663145588 692560277 633585785 1288025150 782157731 4189382490 3312477086 958640458 1070047065 191834520 110954995 347219876 127320436 74010293 134611189 251041074 517901069 373619273 346336747 309180068 973624603 406885805 444251827 334254365 409321913 282700762 478584273 384632376 199537764 +7 +662 416 541 637 205 196 280 218 505 449 241 255 108 82 145 88 67 90 123 177 151 145 137 243 157 164 142 158 131 170 153 110 +3549752231 1081587661 2098594318 15670333735 13125036779 2212510201 668787910 799489594 2728346648 2295605347 1496766054 1019414618 350942674 121873407 341801137 545001242 382478865 397069631 417857927 361768822 317470503 130730389 284446221 477789783 266571294 486338168 433798147 131472826 231804649 215843507 191568207 245515551 +7 +465 256 357 977 895 367 202 220 408 374 302 249 146 86 144 182 152 155 159 148 139 89 131 170 127 172 162 89 118 114 108 122 +1100895391 5944158185 20634198057 31279035181 5532838495 1211751434 185620946 218129583 278239137 438555499 472347464 49821426 37765394 32961789 36121470 99356229 107249759 41443901 150329006 156190804 76305527 13528800 19747772 80944325 59395556 38588595 59382503 92873214 60702491 59337446 51312578 39023889 +6 +518 1204 2244 2763 1162 543 212 230 260 327 339 110 96 89 93 155 161 100 191 195 136 57 69 140 120 97 120 150 121 120 111 97 +4410573765 12774598301 41832160677 44700663352 4576701622 2082746085 429967465 197563025 141399631 109501830 78255428 121860269 105534550 11302932 16973718 40400621 107411346 162682307 97826762 89032476 78784929 77709024 59426154 19965316 74563247 131305094 47049398 66518581 117846439 170567788 35402405 12946196 +6 +1037 1766 3195 3303 1057 713 324 219 185 163 138 172 160 52 64 99 161 199 154 147 138 137 120 69 134 179 107 127 169 204 92 56 +2894552609 3797055728 11070337016 44830023179 9421062938 919576239 2136647181 971272589 885414244 579265818 215974286 277805290 496340961 184461986 73794839 510567707 352635930 304997437 990823923 206599052 856982848 658699988 232404631 156340838 418513647 131715390 125235512 160984806 125341342 184518063 235497079 227972411 +7 +420 481 822 1654 758 236 361 243 232 188 114 130 174 106 67 176 146 136 245 112 228 200 119 97 159 89 87 99 87 106 119 117 +2696561632 6478771567 18237271645 9249167455 13258896558 5487310594 2927509458 1023239367 538600627 584901084 696905960 447012548 54857462 18338811 432082218 1686129018 366641126 156393143 512191027 344969883 115854742 173670715 179416736 110651092 181075210 171004213 331721282 316314710 208810463 532662227 243854811 196314357 +7 +405 628 1055 751 899 578 422 249 181 188 206 165 57 33 162 320 149 97 176 145 84 102 104 82 105 102 142 138 112 180 122 109 +325785899 2972654488 6067265796 9334371356 5637012374 984307289 458104498 335088999 76713832 50761382 262959506 105377715 131984032 159794061 181939775 177845178 41791465 35482416 42788660 156130189 48261205 38297859 56378337 62910556 31262894 30750286 39552841 47077650 36096826 49911884 74330384 43967527 +6 +282 851 1217 1509 1173 490 334 286 136 111 253 160 179 197 210 208 101 93 102 195 108 96 117 123 87 86 98 107 93 110 134 103 +10990759093 12003943325 42266037627 37612699642 4202785560 1862249317 2302618798 370490871 847458520 2504998573 918153876 744446242 396277496 330378407 518987036 245698150 264961315 293261687 345452014 442180495 506957636 87733807 52827940 199969695 396467384 174260642 71157899 153940723 181696593 384841219 165598855 94858503 +7 +819 855 1606 1515 506 337 374 150 227 391 236 213 155 142 177 122 127 133 145 164 175 73 56 110 155 103 65 96 105 153 100 76 +8287008349 28381126978 34695907392 16789000355 13437895853 2788548039 607776570 312623176 651528790 2640181090 2139524770 135776980 29481891 55807068 467957774 433989861 161592354 364352505 413919453 218426838 154740493 156825765 176803172 97899529 165406399 184670220 259085635 365699794 354694505 138039161 121835372 103399287 +7 +711 1316 1455 1012 905 412 192 138 199 401 361 91 42 58 169 162 99 149 158 115 97 97 103 77 100 106 125 149 147 91 86 79 +4911003947 8763526232 15394600326 7189649512 756198362 243463683 343585242 95431383 52850061 33645734 114133620 104520383 28547201 20236364 72365414 221040839 139421779 94663512 24179563 17080685 32425849 42222208 22805983 20806474 15004565 34699445 25032637 39707359 78535598 35508375 28240865 18823022 +6 +1094 1462 1938 1324 429 243 289 152 113 90 166 159 83 70 132 232 184 152 76 64 88 101 74 71 60 92 78 98 138 93 83 67 +1378411220 6974660084 9598764672 4186331074 1725406180 684780427 2169545646 1424156315 484405791 914588364 717986872 286024031 202642971 107504739 166271847 138646137 222384425 358232022 159562359 433089923 190166981 166600545 76685655 96984659 90062497 199844955 324996331 286756381 255877843 100836359 68013968 64490643 +7 +290 652 765 505 324 204 363 294 171 236 209 132 111 81 100 91 116 147 98 162 107 100 68 76 74 110 140 132 124 78 64 62 +6749167969 5310966082 625348962 2011130207 3103917658 1833241905 473889147 1147073253 789219547 132072786 439624698 338110434 61639154 30999599 160385005 424786885 317599916 137921697 425942590 486475842 40957736 68557134 141457430 89658927 280279769 399481450 251894730 354942073 352755460 181417864 93692656 86388788 +7 +641 569 195 350 435 334 170 264 219 89 163 143 61 43 98 161 139 91 161 172 50 64 92 73 130 156 123 147 146 105 75 72 +2228758013 3860922313 12958321825 42569535724 18753064984 3033056480 465171772 1621218248 1366368893 479180367 199993446 164284814 124447333 130884997 166063678 249608692 268469255 176808652 241549506 453941159 209476733 129777923 308329916 161704970 186483300 240014684 146700237 87424784 247414711 239903892 163911599 89934460 +7 +368 485 889 1611 1069 430 168 314 288 171 110 100 87 89 100 123 128 103 121 166 113 89 137 99 106 121 94 73 122 121 100 74 +981921049 1839318665 5986324757 16937531804 5370394950 390524988 54784028 174597656 247498023 44105349 32766124 85536044 34912885 43770492 97878196 60989880 86880344 47567967 52628401 81227357 27662193 38248479 89976008 83498668 82354097 84771869 61738901 59775987 27305025 40147973 29121503 18911904 +6 +489 670 1208 2033 1145 308 115 206 245 103 89 144 92 103 154 122 145 107 113 140 82 96 148 142 141 143 122 120 81 99 84 67 +4813127041 12566699389 13082844505 8427270364 484645604 1504024072 2547359144 2673686483 648288796 357668585 907410788 1024591769 314612570 182934563 599268946 378911578 561754031 366772503 928286985 469398985 59436565 379515144 561681954 135133180 264077498 1209598503 474263768 468533054 246433937 261913996 109527904 61620491 +7 +542 875 893 717 171 302 394 403 198 147 235 250 138 105 191 152 185 149 238 169 60 152 185 90 126 271 170 169 122 126 81 61 +1723000379 8692041694 10853116140 22752064976 8914343954 1503676193 2359816603 809163005 855538770 703174981 433704754 124524739 110495301 220092074 660779188 179784049 70522154 99030830 161603184 204224364 113447459 231388479 132881881 138814588 294283155 971842590 183845225 459888531 399329293 271372669 157609500 84971990 +7 +324 728 813 1178 737 302 379 222 228 207 162 87 82 115 200 104 65 77 99 111 83 118 90 92 134 243 105 167 156 128 98 72 +5955798956 13011487852 16747084566 40355942156 11218700845 3274420136 1875658878 795480823 350443640 849401228 378564042 300207510 199351197 45863545 85186913 346101031 492575079 134782785 93329725 104266023 226234829 646316968 585231526 186119288 548549905 882535759 379305301 357415627 254453355 225306409 61600250 32835119 +7 +602 891 1011 1569 827 447 338 220 146 227 152 135 110 52 72 145 173 90 75 79 117 198 189 106 182 232 152 147 124 117 61 44 +11838552610 22156984835 14878391780 12647758850 3556377710 4060740550 2633194175 3236337077 900648528 494806198 336715032 464102756 219720549 138303264 53837886 58682030 82108336 129712051 272164505 174576002 200090207 520329331 541018536 170864530 246263075 260575469 289063917 119565437 255126675 369452892 63912690 47084642 +7 +850 1162 952 878 465 497 400 444 234 173 143 168 115 91 57 59 70 88 128 103 110 178 181 102 122 126 132 85 124 150 62 53 +7418852477 9841116714 8646445852 4740775472 2076656057 1820878906 2458052915 715842561 756044873 743352930 694224940 113629248 148593534 126128948 119001275 171717464 121341830 232640909 394904848 550424478 456127913 409460680 359755392 189997607 200565690 188135115 298011472 154573244 371304148 773153329 661894937 487793218 +7 +672 775 726 537 356 333 387 209 214 213 205 83 95 87 85 102 86 119 155 183 166 158 148 107 110 107 134 97 150 217 200 172 +7928047846 10514725198 23134328842 35679202060 31108429793 7651737428 2201803923 3158697181 1540626881 2900683119 1372586694 731920790 298172871 148676784 295422333 990824747 1235861224 304410678 338340361 891490880 886560293 855966951 455502558 252757660 908360053 732981696 284796896 775448158 769196362 1512979353 1164291045 482140784 +8 +347 400 594 737 688 341 183 219 153 210 144 105 67 47 67 122 137 68 71 116 116 114 83 62 117 105 65 108 108 151 133 85 +23623554631 35394494905 14210622249 1539047576 5700295980 2476863507 1209012726 2147737903 402298794 102639732 593830974 248993803 141217279 12980440 236394340 578069988 130111427 76563384 153297318 392535717 224287771 282915574 439071281 77078682 252028480 166151812 195283824 144397132 153003714 293391894 220106443 162080020 +7 +1200 1469 931 306 589 388 271 362 156 79 190 123 92 28 120 187 89 68 96 154 117 131 163 68 124 100 109 93 96 133 115 99 +1252719074 14398893403 10859527460 13061193324 13240512230 2017557642 135854050 335685158 267622253 392171933 1215484130 233473405 564412739 222547375 231821509 87021685 318629949 580571438 219511774 412018020 147011999 220643777 203455138 89939285 154581398 189620851 202916053 151894800 292746372 130303163 99560020 87839523 +7 +276 937 814 892 898 350 91 143 127 154 272 119 185 116 118 72 139 188 115 158 94 116 111 74 97 107 111 96 133 89 77 73 +8140037620 5823570578 6890255178 42057838819 18794511313 1274369067 392094795 310414680 558606828 1571754616 1607541006 421514817 548857322 137486958 131860091 480050694 294248226 134600860 81883582 189721940 90830919 109094917 56525695 101515509 190477468 141464979 275775163 228652878 320289931 149924776 207833913 123357813 +7 +704 596 648 1602 1071 278 154 137 184 309 313 160 183 91 89 171 134 90 70 107 74 81 58 78 107 92 129 118 139 95 112 86 +1815637874 3568197906 5166037614 13304675121 8912509802 2301628493 265287052 32813507 29952031 375597467 265789246 31561726 29903417 69841397 35983956 169608506 39637086 27584505 96971589 210476099 139632021 233024928 32581846 41560165 62014558 97974207 37350504 68202916 118092531 91633746 42079014 44716264 +6 +665 933 1123 1802 1475 749 254 89 85 302 254 87 85 130 93 203 98 82 153 226 184 238 89 100 123 154 95 129 169 149 101 104 +679549357 6337421806 14084578207 15472174351 3674276710 1626583953 3035532487 3298124769 566591630 696815515 589970900 85196334 154178937 189888941 211903465 141773909 193961282 169966663 181384300 477779183 252552003 419142260 235109221 295002447 489444336 400512313 179675619 229045914 190122325 71261613 81524660 52752179 +7 +203 621 927 971 473 315 430 448 185 206 189 72 97 107 113 93 108 101 105 170 124 159 119 134 172 156 104 118 107 65 70 56 +6690001121 13819641770 17821382115 15052593019 7993930918 4237686504 5792575305 6170956221 1583154888 804851022 1317521490 2799342211 1129755519 730293398 2170310099 2523714349 1547582881 2105923327 1085263785 1374868672 735135906 849156531 891953600 647572760 1777103546 4637709535 1880820792 772903882 686462170 420434578 139411965 216279535 +8 +319 459 521 479 349 254 297 306 155 110 141 206 131 105 181 196 153 179 128 144 105 113 116 99 164 266 169 108 102 80 46 57 +2576846530 7887106348 28590018627 20259554678 1475143403 1321388518 526756454 148376018 85610426 982241714 816609030 242390414 92548948 91539878 150145675 93874171 55265478 69845679 110407413 247911019 298851808 199202026 405268852 82416156 191720992 323411760 303399863 360609094 362141232 126549461 102223705 68019463 +7 +396 693 1320 1112 300 283 179 95 72 244 223 121 75 74 95 75 58 65 82 123 135 110 157 70 108 140 136 148 148 87 78 64 +3104297449 15424324525 16041853687 5081039884 1925059696 3015870954 1837919511 417683449 153565466 619680784 623833410 140973309 212287710 169246675 238904272 603095298 332614046 86200723 198568905 229155020 316020800 119910581 105160177 66207829 232660094 321630478 148565277 244482037 224465013 200539505 201191098 28990018 +7 +435 970 989 556 342 429 334 159 96 194 195 92 113 101 120 191 142 72 110 118 138 85 80 63 119 140 95 122 117 110 110 42 +13395391949 10226868149 10021641587 17258278094 9488778299 3034874960 2619684142 912831554 461552070 365750733 362883574 123507344 227194881 191310363 167188786 1468932321 1024710335 127877534 271661823 481507642 63021840 56963550 46330541 92130609 310777888 204309345 161588975 98490936 306449383 143066969 139612668 88350626 +7 +904 790 782 1026 761 430 399 236 167 149 148 86 117 108 101 299 250 88 128 171 62 58 53 74 137 111 99 77 136 93 92 73 +5511067876 11964126519 5165671177 6379383989 12612646756 4591002424 2215408965 4557488349 3220687086 722144762 1597221408 1973353097 695914636 1813036564 2608078656 1561284647 1651988109 732998875 1346887344 1397611074 1031393610 341035614 625553176 481900370 399485779 1153064652 477281099 456673035 1626740414 1044344727 419127730 208348104 +8 +289 427 280 311 438 264 183 263 221 104 156 173 103 166 199 154 158 105 143 146 125 72 97 85 78 132 85 83 157 126 79 56 +4245510791 2911364353 1817951281 3240079600 1960884004 4224929249 9393275262 7078446278 1604866995 3363966833 2369526478 678503798 1401714121 405013220 567057034 533074256 406335772 1720259922 723708675 804565052 380546833 373741765 330089746 647287167 1433271445 2249083105 625932431 494033574 650545524 430181062 481972882 436360489 +8 +254 210 166 222 172 253 378 328 156 226 190 101 146 78 93 90 78 162 105 110 76 75 70 99 147 185 97 86 99 81 85 81 +15837441009 21566240869 19034108281 4396065580 7311081053 5853188690 3565186420 4912226756 834113530 1468120149 1309321896 760213287 349693107 561354554 1383019501 1055481694 1323427950 547426640 533256372 1195722014 1140699492 473574750 51822514 399148385 1051651936 822357546 731652471 421976218 2511470853 1910720663 289675973 183460534 +8 +491 573 538 258 334 298 233 273 112 149 141 107 73 92 145 126 142 91 90 135 131 85 28 78 126 112 105 80 195 170 66 52 +6991516564 26536810676 10241189823 6648423391 4781035548 1165600805 362196314 552572883 150283520 636935013 426124828 209705222 75465686 172375881 314739611 53009594 176027830 164570405 57387671 191428320 83954446 232355962 496243174 140564769 138010160 175709611 95524615 109665385 249133993 96933615 81765835 68175275 +7 +653 1272 790 637 540 266 148 183 95 197 161 113 67 102 138 56 103 100 59 108 71 119 174 92 91 103 76 81 123 76 70 64 +3973772185 23832149477 29242277876 9286521854 2469973759 1404243484 929912962 2509864028 1578640392 866309862 981761046 161403460 48533456 139368762 279478811 352157635 388221921 201220879 437065939 547789365 117623820 116492343 247752466 531476687 825205459 255474844 200465233 124280351 233825955 113745496 131328950 85255791 +7 +492 1206 1335 752 388 292 238 391 310 229 244 99 54 92 130 146 153 110 163 182 84 84 122 180 224 124 110 87 119 83 89 72 +1800047747 9718070402 29359056370 12395903961 4766794892 792553273 504749245 653093277 496990989 1318353341 1341130282 465051857 380015840 158772520 249779474 202245705 59025271 124720402 77848585 352377572 323251868 203443632 91429727 100783885 402239094 560877295 263946069 114086007 129673752 176203486 84561493 97937251 +7 +331 770 1338 869 539 219 175 199 174 283 286 168 152 98 123 111 60 87 68 146 140 111 74 78 156 185 126 83 88 103 71 77 +13402136927 48709925606 21007888885 18328565424 6561402118 4716959753 1266761327 970492734 686687816 1070863377 1705636192 183156179 43429471 206120034 73900592 670786295 449233059 60188238 152700208 171596362 323884691 168642878 111671088 134338999 146821033 129244189 114201224 94745153 316889572 299713247 129524976 120777699 +7 +904 1724 1132 1057 632 536 278 243 204 255 322 105 51 112 67 202 165 60 96 102 140 101 82 90 94 88 83 76 139 135 88 85 +8515819862 14540741423 36370976979 22895019916 5783948057 1429973621 947504119 945703100 1044158335 2312106327 584813150 249467236 66850260 67985421 102639420 741690894 299005196 153894601 25276178 134107247 122617892 129071743 105794167 135314407 173076680 159820686 124146574 71055562 206248309 198451358 95266876 187817401 +7 +720 942 1489 1182 594 295 240 240 252 375 188 123 63 64 79 212 135 96 39 90 86 88 80 90 102 98 87 65 112 110 76 107 +7952341567 18699651433 6407428608 5286897917 12882655656 6860628001 3935796828 1583823195 1241106085 5530728622 2544684008 236455785 232020003 300962187 337663281 263258899 1391711140 1289186636 1575390634 1018595248 1173824760 689757438 1402138169 882143674 569554204 341740699 492750798 986031996 1465790708 996319288 166286506 197567807 +8 +348 534 312 284 443 323 245 155 137 290 197 60 59 67 71 63 145 140 155 124 133 102 146 116 93 72 86 122 149 123 50 54 +4298089100 9781258002 21778093844 21183521812 7286073417 1298309836 358888939 164751882 69292545 678522232 1497486092 216862219 43780399 71713908 162851148 323325669 232708549 104643346 272595917 588707153 238758774 122915021 249006695 195893186 326774777 246569211 137556615 299235358 349218187 245990662 257059234 124676392 +7 +512 772 1152 1137 666 281 148 100 65 203 302 115 51 66 99 140 119 79 128 189 120 86 123 109 141 122 91 135 145 122 125 87 +1695481222 3539400635 4906576856 1071284597 1989301906 1035261490 628215813 725394761 655757131 2100035882 1591483374 99973002 58239475 52926950 78621570 891923191 1089873680 84544173 113100295 582127301 272099009 208699166 263583472 281747152 416193689 206480599 458784717 181142870 98525525 177207041 234923919 109191855 +7 +321 464 547 255 348 251 195 210 200 358 311 78 59 56 69 233 257 71 83 188 128 112 126 131 159 112 167 105 77 104 119 81 +8510117155 13884387566 15794051016 21913858747 10968655927 1303076227 448448334 964848503 992064497 2357517463 1662721684 374439955 186519371 62314872 191854669 135480078 54909501 97244482 99910699 191353961 246353442 137257224 189199967 126966954 96601459 107821342 374125964 170153263 188516188 130001722 61100510 141178549 +7 +720 920 981 1156 818 282 165 242 246 379 318 151 106 61 108 90 57 77 78 108 122 91 107 88 76 81 151 101 107 89 61 92 +4731506179 3633393437 1076228277 4831240828 1688829220 1365181475 154342268 222601007 162634693 369155009 446761288 67374098 139402621 264561946 1381869817 845826015 443191697 270175876 145373315 803874910 427878214 314165876 200651750 412663185 229836836 355944100 249233074 392082238 1193399118 439470232 353505302 187884713 +7 +537 470 256 543 321 288 97 116 99 150 165 64 92 127 290 227 164 128 94 221 161 138 110 158 118 147 123 154 269 163 146 107 +845853406 4183388227 2707347057 9369426635 8665134206 1974409414 2951152667 1469653952 232863088 757908143 1145007316 763564862 265183947 347274196 1724893842 2920507584 1400764934 409551488 123205194 130226254 522627637 263670779 432783097 304345277 243052060 453694500 517002629 286026232 687333067 592265999 490494808 83790335 +7 +227 505 406 756 727 347 424 299 119 215 264 215 127 145 324 422 292 158 86 89 178 126 162 136 121 166 177 132 204 190 173 71 +244384724 6519756415 18951886278 6997908917 2430951505 723179230 591564660 793629576 191314080 203414463 833506224 188712224 69883722 198596324 386655634 1458767816 779506395 298904637 175224914 171820974 393318006 218727549 297609728 449642487 691285330 417317673 241413949 277117073 339922202 1038640357 210184981 99559177 +7 +122 630 1075 653 385 210 190 220 108 111 225 107 65 110 153 298 218 135 103 102 154 115 134 165 205 159 121 130 144 251 113 77 +8798265521 5735848922 8883138653 13341194324 835720736 475950697 447822965 852267978 126619296 288415958 293376646 655463999 454927615 189400270 307085520 124264660 88501554 696557793 243305601 135931388 169666588 130904022 200894138 250163429 289420997 295275696 231188891 181742549 468613279 419030949 237842735 156690188 +7 +732 591 736 902 225 170 165 228 87 132 133 200 166 107 136 87 73 206 121 91 101 89 110 123 132 134 118 105 169 159 120 97 +1150482412 5240120687 18715695941 29339574860 13217513048 2558449603 465258907 843663909 159753138 501362980 391765242 116127711 219926547 95960499 348195558 347009665 172370545 139689998 140508943 181054683 100535513 123970868 275750410 172411007 406900444 283127115 324490029 232234315 285149674 372863656 670202407 256518156 +7 +264 565 1068 1338 898 395 168 226 98 174 154 84 115 76 145 145 102 92 92 105 78 86 129 102 157 131 140 119 131 150 202 125 +6911137073 10475842416 34724015477 27936729844 12152231216 2672219979 1411389097 2765172797 1420661856 1056972746 793556340 350130233 322606370 137295615 638432326 1290859573 471390741 575175189 461554633 153369634 336576098 116798871 138012201 141557225 305736088 572470445 231253659 119128938 238810745 545930325 440451728 121617948 +7 +649 799 1455 1305 861 403 293 410 294 253 220 146 140 91 197 280 169 187 167 96 143 84 91 92 136 186 118 85 120 182 163 86 +6167608942 9911924498 2593243310 2061667502 1486292926 1391770569 2930714578 4682576166 1092543821 203525367 340754446 648659988 587112632 81721049 93387502 311141876 458755528 630752888 249233952 114323857 206781150 95880852 58775090 215914131 146588629 262694353 345415316 73247387 91862262 197031781 210122569 62984707 +7 +613 777 397 354 301 291 422 534 258 111 144 198 189 70 75 137 167 196 123 83 112 76 59 114 94 126 145 66 74 109 113 62 +2505139409 9435406421 13833653936 10591282910 2352544130 1559712740 1874707651 2302922325 328881483 565672104 776814926 185025692 260892744 144244449 53960005 218503995 202958384 261774586 330038711 437503813 72863013 99926767 308641829 168217792 183606421 224884523 203196718 287669468 456498379 87883789 205202657 63473057 +7 +391 758 918 804 378 308 338 374 141 185 217 106 126 93 57 115 111 126 141 163 66 78 137 101 105 117 111 132 166 73 111 62 +9176235357 8993191162 19120135785 23572353608 3049183075 481893068 1739676482 2578826428 878981992 3671155093 1292995962 98376569 396132786 212131690 288592629 228092143 191051413 82950507 234701840 355185468 460774588 128328650 156938187 230846426 238069252 195995787 93249843 126366584 185452976 127347550 217291634 45671478 +7 +748 740 1080 1199 431 171 325 396 231 473 280 77 155 113 132 117 107 71 119 147 167 88 97 118 120 109 75 87 106 88 115 52 +1089684860 1489227056 7451210935 25162699617 3746461499 1104469491 3228302402 4380573004 1314892448 1188968448 589498418 634188183 435477756 115260084 339081799 833157389 232978806 130079406 162680802 392176424 332030171 210008316 490972032 98211491 143588413 194241710 90231128 94932440 111336474 51651457 64531143 43049780 +7 +257 301 674 1239 478 259 443 517 283 269 189 196 163 83 143 225 119 89 99 154 142 113 173 77 93 108 74 76 82 56 62 51 +7843464752 6447907163 16374301901 17324772176 1215209220 1776398163 2081496617 789918720 308703987 183833051 808368400 167730902 49451263 56584758 234299204 398625714 120583575 132760892 118249319 125485707 183453905 157140695 248358144 168412071 321558941 328889136 78320401 90909662 220044504 134853075 70608029 74817173 +7 +691 627 999 1028 272 329 356 219 137 105 222 101 54 58 119 155 85 90 84 87 105 97 123 101 140 141 69 74 115 90 65 67 +2047835854 1653882967 1001333545 9952025713 2701709263 2058665901 1498435858 737457098 484075650 352429827 356059276 150000953 125341680 137900269 130508231 139433842 210634495 145134874 205966052 138492404 102869911 156180492 92734022 234423531 848969494 1737033796 4071341086 9495242795 9533850550 1452528935 120395452 66178728 +7 +353 317 247 779 406 354 302 212 171 146 147 95 87 91 89 92 113 94 112 91 79 97 75 119 227 325 498 761 762 297 85 63 +405941476 586376095 5249156049 9198314000 2455257847 1076533410 217788173 43317576 77805929 193894406 471430974 96006989 64326923 160154729 317918564 220708273 73326619 82335631 68925210 197055911 85555573 300129001 366399884 320192711 415893330 580530060 3785903636 10888500038 6292189300 859689286 178268465 136256436 +6 +314 378 1132 1498 774 512 230 102 137 217 339 153 125 197 278 232 133 141 129 219 144 270 299 279 318 376 961 1630 1239 458 208 182 +514666001 1348367704 7051816642 14065552969 5974535153 1388737409 260609466 171393655 50366952 95923776 245919450 73335165 45135850 34407825 274069828 231829918 93746349 84979594 108437794 226177882 223414955 201162764 665485419 384650067 394149983 1726925185 3637184851 4785261775 2485723605 934545908 818763521 188547824 +6 +354 573 1312 1853 1207 582 252 204 110 153 245 133 104 91 258 237 151 144 162 234 233 221 403 306 310 649 942 1080 779 477 447 214 +854067332 278949595 775873176 1138676126 3105106067 896842551 807293668 675085516 64433283 560219615 474784050 55633450 148408916 164344297 43165620 69096015 21284651 17409593 25064632 99936147 124962720 190186177 1474493209 3947269364 2315319133 4638085171 7835913743 5378442479 2045345134 1160376405 376248714 92547152 +6 +456 260 435 527 870 467 443 405 125 369 340 116 190 200 102 129 72 65 78 156 174 215 599 981 751 1064 1383 1145 706 532 303 150 +5176173638 8712890999 6365812124 14554769594 12835959895 4290909155 1898428525 1000121310 386479184 1152403961 429970454 909105722 958767541 75724965 110181941 291424365 287810852 165313508 57669057 161053097 624432018 1646374792 3244274671 4021445776 2963733650 6551241142 6239415482 5613163380 7301740504 1754762557 646424930 324924042 +7 +562 729 623 942 885 511 340 247 153 265 162 235 241 67 82 133 132 100 59 99 195 317 444 495 425 632 617 585 667 327 198 140 +1862205364 3888521380 5183882583 2729317838 1047760972 340491552 99043306 270973644 204286586 111068593 110590646 83372928 28302339 23901571 96547242 167427282 88321129 33870505 57122440 32785504 49320672 17622419 184258003 444068773 897635860 619039249 146576221 861149196 865052933 289573769 40528063 28186682 +6 +674 974 1124 816 505 288 155 257 223 164 164 142 83 76 153 202 146 90 118 89 109 65 212 329 468 388 189 458 459 265 99 82 +5898563161 20961429280 23239028734 11537877925 3390494812 3695778658 629892210 1033626875 684461179 784394336 1583375466 362004349 169599265 57868482 85139965 194395594 412126189 197767529 470346213 780111487 412325354 146611504 1391020511 1619964102 558404142 1763066946 910723280 2637170679 1845616056 331074007 185715390 113914004 +7 +600 1131 1190 839 454 474 196 251 204 218 310 148 101 59 72 108 158 109 169 218 158 94 291 314 184 328 235 401 335 142 106 83 +1529782346 10762297130 10576248687 12502774180 3328009919 443597551 165196441 534487068 292855042 910488893 487944186 14025531 21761292 46795089 60947682 86925297 59831893 70154221 174651284 125109384 55188163 37731519 136448550 225510906 343836549 1115942311 341484540 329432196 220071418 47903730 79324935 34758191 +6 +611 1620 1606 1747 901 329 200 361 267 471 345 58 72 106 121 145 120 130 206 174 116 95 182 234 289 521 288 283 231 108 139 92 +3791067564 29199196246 32484273889 11339226316 945253387 475330066 717325982 1430157039 370107607 1346486212 1185156574 77992329 170934105 158991872 52953515 270761258 179821416 61883022 182762647 1034542879 148317111 57617007 153211836 470058849 807680174 201829651 869546025 1742955039 1819718210 331119639 212114746 270214834 +7 +481 1334 1408 831 240 170 209 295 150 286 268 68 102 98 56 128 104 61 105 251 95 59 96 169 222 110 230 326 333 142 113 128 +6799237905 6864662201 7006791566 2131919786 5255710991 3100076957 120381357 72856497 396087215 987916494 880932902 158909096 226807246 250883270 65432547 111896369 57912617 112231411 232521343 261532899 93611355 118415912 326217427 268475091 626815747 305746581 335181856 569178816 233299401 154945255 254737606 92440792 +7 +644 647 653 360 566 434 85 66 155 245 231 98 117 123 63 82 59 82 119 126 75 85 141 128 195 136 143 186 119 97 124 75 +11453442628 11425949119 8969689026 16948900628 3141421612 5223916947 2760232084 1084064994 299444883 2125273638 3086707368 310453498 51732748 44780716 168107086 258667101 143446403 142283072 504420775 218872051 148184667 92856534 147118020 112855428 420454837 338584768 116140173 145410830 334581197 106611194 146951280 81442850 +7 +836 835 739 1017 437 564 410 257 135 360 434 137 56 52 101 125 93 93 175 115 95 75 94 82 160 143 84 94 142 80 94 70 +6368705047 12975091793 18166364780 52214241554 13024503925 2090833921 2377368194 2759098456 2553662904 2277234959 1432376136 318307292 677651485 192682720 241063458 462592106 235368194 1166063109 1772904359 1533640255 1330523268 493306239 820436618 142251500 385262686 624771286 355927840 626237684 1009919011 720155511 623816048 287317982 +8 +311 444 526 892 445 178 190 205 197 186 147 69 101 54 60 84 59 133 164 152 142 86 111 46 76 97 73 97 124 104 97 66 +15167883106 29791915459 24257605316 11647797675 4261333823 2020304337 838008789 1465373806 630426064 493998251 292290878 95823561 130185872 108447425 77255450 72530644 116218457 164994027 153258568 297986985 492976259 562879738 262318542 251356870 339723262 134238402 94797019 176615686 220477688 155696828 89528039 97176475 +7 +962 1348 1216 843 509 351 226 299 196 173 133 76 89 81 68 66 84 100 96 134 173 185 126 123 144 90 76 103 116 97 73 77 +4693087723 6216564376 2380622365 6298866481 7787092804 3324557987 753831692 354062072 144449470 783698733 1472676048 243518929 41036728 51250421 391588537 400567150 97662506 39175827 167586726 444544685 199762941 239548068 174399124 172894550 317108123 237666657 91541142 109760266 61357052 152356878 103664153 60379364 +7 +535 615 381 620 689 450 214 147 93 218 299 121 50 55 154 156 77 48 101 164 110 120 103 102 139 120 74 81 61 96 79 60 +1055567686 13456570819 25649328984 17940984341 1605438440 711908529 738183954 244667242 60959802 71775347 196393712 201673650 57696646 122893225 701802296 814937109 340078864 56672516 214498909 273792553 126126619 322584006 595525932 294341630 310891462 486753133 69983467 75163950 176063964 130864554 40845063 30362427 +7 +253 906 1251 1046 313 208 212 122 61 66 109 110 59 86 206 223 144 58 114 129 87 140 190 134 137 172 65 67 103 89 49 43 +2356765900 9231856051 14938845260 23252998449 3859443628 9931345014 12545280582 9608156787 2962240910 1641418625 1016734310 474338503 1445512897 1723338305 2077931414 3521573091 1231218638 101697740 514315548 892118793 984565825 954472196 495032180 449109219 640438476 1631596353 1016369956 954212876 589624551 553133001 578500285 181183624 +8 +189 375 477 595 242 389 437 382 212 158 124 85 148 162 178 231 137 39 88 116 122 120 86 82 98 157 124 120 94 91 93 52 +1253095846 18020492015 17502816756 29633592448 15582299230 3472022185 2882462250 2821745624 2156343322 5239984413 1728580184 1249957388 974119843 693747588 681183767 1686863608 2324003278 898510960 603378418 901724313 1727932658 921009907 914360739 990178863 1072537640 3031352176 2129162895 1233642791 2119732905 770415964 212273389 252309707 +8 +138 524 516 672 487 230 209 207 181 282 162 138 121 102 101 160 188 117 95 117 162 118 118 122 127 215 180 137 179 108 56 62 +2085429281 5625150496 15510778827 15395714078 1623386709 980459207 453238454 112620635 56614482 74049573 156061918 147585074 50684678 11069654 16005802 52633943 81430150 61376528 44882521 24554408 42983192 10304127 10318942 22143459 91918754 43725671 27069905 18803182 22888555 34364500 55093279 15797771 +6 +713 1171 1945 1938 629 489 332 165 117 134 195 189 111 51 62 113 141 122 104 77 102 50 50 73 149 103 81 67 74 91 115 62 +1740850081 2981677376 11585008796 56586105392 15910137974 1211026959 580256502 932978507 769262079 979396831 392956626 24642819 54221276 56930049 178922553 128969942 58634883 119252662 92626325 45322183 37240801 131661377 150226929 76823258 152767672 151599480 173606723 125902348 249501094 101846214 99105555 43231492 +7 +325 426 840 1858 985 271 188 238 216 244 154 38 57 58 104 88 59 85 75 52 47 89 95 68 96 96 102 87 123 78 77 51 +4571788278 6290626903 21358605837 68525327636 18747695014 2619761923 4394272938 3325827116 1051825374 1060442690 881575734 644303463 372206554 189555136 409476128 1870152222 1040487130 980446183 272211290 355747456 462108104 454320534 828205575 336353353 518949723 647624091 672858076 960496180 1638485836 598408408 303305384 90486984 +8 +264 309 570 1022 534 199 258 225 126 127 115 99 75 53 79 168 126 122 64 73 83 83 112 71 88 99 101 121 158 95 68 37 +5503267445 2278704472 3003615743 28253266350 18289232353 1444729957 1675007714 1800410951 560931463 1573374071 1142161202 50484454 75450249 39374112 62533252 62565644 109446110 152648383 77828314 96499736 54921832 110837628 106147571 72313778 180317388 20848765 29995158 56996012 205350876 148127425 65887511 84286350 +7 +579 372 428 1313 1056 296 319 331 185 309 264 55 67 49 61 61 81 96 68 76 57 82 80 66 104 35 42 58 111 95 63 71 +635601583 4623946160 14604489076 18054500301 2048793167 192660219 20826450 144947271 361186957 364299556 110576014 33743767 13077541 17638144 71055548 70392990 72599559 108934509 30702299 7492577 33653233 32770768 12689000 33028035 79630490 91012673 28887320 24907378 72498940 43317638 34826267 27743421 +6 +393 1062 1888 2099 707 216 71 188 296 298 164 90 56 65 131 131 133 163 86 42 90 89 55 89 139 149 83 77 133 102 92 82 +16925999430 18316385014 6765103749 29751869228 9248935726 590656637 196577266 369833100 1036347679 1949477709 436167336 511319619 184477055 37387933 151183436 151931021 299339842 394798275 131554144 534536901 145916020 86481382 52673975 84468035 290579874 505339277 136630608 96451864 413645390 284079029 93838091 44320937 +7 +1016 1057 642 1347 751 189 109 150 251 344 163 176 106 47 96 96 135 155 89 180 94 72 56 71 133 175 91 76 158 131 75 52 +22364848819 23019211877 13536398921 7661844332 13153918661 4061423712 6189535018 2626984739 734547992 679343661 640844424 1634139870 653180623 270600318 653081286 231006116 276192993 574796128 531493951 1136056218 257843259 376631657 556672806 985601197 2451927490 1080397176 418835476 516596298 1067991069 1326940241 533782371 317521998 +8 +584 592 454 341 448 248 307 200 105 101 98 157 99 64 99 59 64 93 90 131 62 75 92 122 193 128 79 88 127 142 90 69 +4267278578 5284912346 15654245454 7584371455 757541440 958175918 2029693395 1822263793 301143373 735864971 560795502 145468741 729607917 636312274 140085758 92179138 136678205 284556947 160571857 24156465 30303981 63889416 207515641 397539517 932404486 815941330 296130518 837264004 823507287 98236812 45243383 64272200 +7 +510 567 977 680 215 241 351 333 135 211 185 94 211 197 92 75 91 131 99 38 43 62 112 155 238 223 134 226 224 77 52 62 +3363624643 5024467282 5936939269 11928624073 1989590507 500454296 890244102 484960024 408268655 407748116 931223116 387325043 298601083 142573204 50333810 260657043 544829518 182232298 285774374 229077575 165510081 55234109 182984063 235559258 463042189 1572332571 463590384 764055301 369900031 213389719 248484276 110192412 +7 +453 553 601 853 348 174 233 172 157 157 238 153 135 93 55 126 182 105 132 118 100 58 105 119 168 309 168 215 150 114 123 82 +8688907420 8651681087 3882888320 13344712853 4899158051 798739702 1028831102 2539014856 638903122 317718010 384670182 80111143 103317142 167076352 301314820 350854382 391349540 404306210 433994476 574314223 313672804 157484335 377191355 334140619 316134597 1301708648 1659919320 374228018 445302887 163137190 106841473 98757674 +7 +728 726 486 902 546 220 250 393 197 139 153 69 79 100 135 146 154 157 162 187 138 98 151 142 138 281 318 151 164 99 80 77 +13209682291 4084147554 2238015712 5991930059 1953586645 196444746 822877259 1778500613 742348323 233802308 177148240 73219483 144849322 53782826 38117743 23906209 159975557 118985794 48876276 20259462 27125220 16381165 50210512 103903521 345857809 239779513 223664576 71409647 46379915 30995031 20584721 8614124 +6 +1795 998 739 1209 690 219 448 658 425 238 207 133 188 114 96 76 197 170 109 70 81 63 110 159 290 241 233 132 106 86 70 45 +11910490572 3216754880 6803640801 2969354749 904981686 1640133658 2731047426 2169674962 760261854 440687837 88060822 121667662 80768056 31045445 125967584 240259259 103206438 119576287 176621902 191961720 77702252 115933401 279500203 189714841 273168341 221844448 115316958 61706937 306214143 136507848 128407848 22071613 +7 +852 443 644 425 235 316 408 363 215 164 73 86 70 43 87 121 79 85 103 108 68 84 130 107 129 116 83 61 136 91 88 36 +237434189 499922217 505133994 441834840 148584001 134361612 246902979 375356541 377172109 306513225 380925456 296315571 145325444 52968199 21027784 23929228 276235605 624597590 312575443 156400513 455045323 720856046 732214896 1494389708 2361129006 2679936589 2301322707 2000335101 1637945505 681827461 183147366 82330012 +2 +3852 5589 5618 5255 3047 2897 3928 4843 4855 4377 4879 4303 3013 1819 1146 1223 4155 6248 4420 3126 5333 6712 6764 9664 12147 12942 11993 11181 10118 6528 3383 2268 +1384809583 3253852150 7271882261 4247132793 165951197 106924444 334793989 1186792065 683710887 328783218 1777824058 859450346 384515125 118491239 29264336 324188526 1925807083 2591551091 1170412774 393317159 1003847215 1375415668 1272433002 5102945913 5527301760 3564304855 4171837220 4252817101 2886468276 1293586339 867722874 137636997 +2 +9303 14260 21318 16292 3220 2585 4574 8612 6537 4533 10541 7329 4902 2721 1352 4501 10971 12726 8552 4958 7921 9271 8917 17858 18586 14925 16147 16303 13431 8991 7364 2933 +8026452370 15484908668 20499977190 18319213840 3373716595 481122188 708365662 1064222070 447613201 981882246 1216899638 429224583 712942489 343870777 464365911 1708426014 607524825 125260654 157218368 252388115 200501238 298140369 401480944 335145082 254978930 49584394 84879802 240024458 602349628 451255150 178445616 59224662 +4 +5599 7777 8948 8459 3630 1370 1663 2038 1322 1958 2180 1294 1668 1159 1346 2583 1540 699 783 992 885 1079 1252 1144 998 440 575 968 1533 1327 834 481 +2977011107 650914810 2288018320 7520683099 3358846989 875614221 1936947318 2462199032 245275565 162481150 354004652 579022806 174936282 412065585 456282401 851282558 577907117 178246772 129481190 100052269 151783470 208256264 102348220 96250207 348059763 147820204 244018392 148321767 234305056 521714339 203999644 70550417 +5 +1705 797 1494 2710 1811 924 1375 1550 489 398 587 751 413 634 667 911 751 417 355 312 385 450 316 306 583 379 488 380 478 713 446 262 +3786032587 5999060498 4394801484 6492352396 4533451529 784295559 4659258635 9314660305 1936272237 1517385845 2149905238 5604540659 4456645633 546039872 1142483135 2620204651 457615013 332270054 387560577 221048132 797480291 1027414868 763837324 1178612421 575232148 728347389 820289944 1067788799 410298531 1347049446 618702844 146953926 +6 +961 1210 1035 1258 1052 437 1066 1508 687 608 724 1169 1043 365 528 799 334 284 307 232 441 500 431 536 374 421 447 510 316 573 388 189 +4332343661 2817941910 3311199167 2817462112 2970535222 510272771 1231608931 3547933821 1553161029 1102581064 1265403206 1116133007 2749984636 483694422 382260155 1583576695 535394932 342644355 439256217 509798231 1169193597 1551288598 518829590 329655443 357735633 866583714 2856188825 4384512991 832189766 537900762 413652286 268099507 +6 +1028 829 899 829 851 352 548 930 615 518 555 522 819 343 305 621 361 289 327 352 534 615 355 283 295 459 835 1034 450 362 317 255 +1144257557 893194977 1524172345 2656990700 2712406451 786734909 2822954323 3023929466 527666841 1172738236 1651594914 468094942 413036746 247222724 1385679116 1385735570 176945160 261067824 249261965 205523600 898302221 540325841 482074263 137198138 655537414 1053681721 1905781387 2813846616 519180249 467040454 115316630 70053256 +6 +528 466 610 805 813 438 830 859 358 535 635 338 317 245 581 581 207 252 246 224 468 363 343 183 400 507 682 828 356 337 167 130 +421117418 2726127890 4101702227 9989637695 2589613292 464808813 646168314 1709204951 1193406951 4368908721 15543123258 4558462527 727446184 480111150 3321290976 1432573949 4334614036 1206612778 2062663595 2846829181 1697932639 1917744656 1153653438 3229768059 2571119827 2310793826 6307997684 6761925771 3750077475 2473878001 656529551 229061538 +7 +160 407 500 780 397 168 198 322 269 516 974 527 210 171 450 295 514 271 354 416 321 342 265 443 396 375 620 642 478 388 200 118 +5645104312 3087527471 5883346002 10807122775 2465336182 853935004 1206905130 3485828019 1134726750 832725041 4442875878 2122064365 178483220 151483681 1742660113 1309124116 1954305288 1323857378 2750861165 1340947482 792522630 669257768 1659699572 940652856 1957080469 1034203505 1541805928 1710818326 2432875876 2254719438 275379184 57293224 +7 +586 434 599 812 387 228 271 461 263 225 520 359 104 96 326 282 345 284 409 286 219 202 318 239 345 251 306 323 385 370 129 59 \ No newline at end of file diff --git a/python/tflite_micro/signal/ops/testdata/filter_bank_test1.txt b/python/tflite_micro/signal/ops/testdata/filter_bank_test1.txt new file mode 100644 index 00000000000..281339e5285 --- /dev/null +++ b/python/tflite_micro/signal/ops/testdata/filter_bank_test1.txt @@ -0,0 +1,367 @@ +16000 32 125 3800 +65471 262149 9764778 4284481915 4276682122 1119578 1471537 879716 435140 467218 464850 216026 338845 384533 463745 1520514 1655681 621738 144794 32969 1845 7993 12605 40309 59197 15101 18884 19204 181 19242 22202 12629 9125 9098 19409 25364 4005 5525 16861 27997 15730 20693 71540 271969 251172 31813 174521 194213 46085 949 208 5194 27817 29410 16930 22273 23013 10100 15921 9325 7202 7605 7373 4777 40 2034 5581 24224 32449 14249 3145 1469 37 1076 3330 6253 10312 11296 3370 1378 8665 6370 745 4714 8033 1044 8425 8066 3328 13505 6250 1665 872 6845 22202 24674 16129 15784 15977 12168 18010 42325 61568 38660 16900 22608 17849 8009 44185 122033 335848 530105 620225 845226 865780 715498 483418 331682 179897 57428 6228 1469 4293132328 2359270 4293263380 327664 327681 5 65536 4294770687 4294836227 196602 4294901763 4294770690 196600 8 4294574076 262141 262142 4294836222 262147 4294639613 393213 4294901759 327679 4294836226 65532 4294901757 65536 65531 4294967295 262144 196607 0 4294967292 327681 3 65531 4294836227 65535 262142 65538 4294901760 0 4294901762 4294967295 4294836221 327677 4294901763 65530 196611 65531 393216 4294836225 262146 4294705153 4294901759 4294967292 196611 131069 2 4294967293 131074 196608 4294705153 65537 4294770685 458758 4294901757 4294705154 4294901765 4294901759 4294770686 4294770686 393215 65536 4294770688 1 4294770688 196603 4294901762 4294836225 65534 65534 4294901759 262143 4294901763 131069 4294836226 131070 65535 4294967294 65538 4294967294 196609 4294901762 131069 4294705152 65538 196603 65538 4 196603 4294901762 196608 4294901764 4294836226 4294770688 196606 131074 4294836226 4294836221 262147 4294705152 4294967292 4294770689 4294967295 65532 131071 65538 131070 4294901762 262141 3 4294836223 262148 4294574077 262140 131075 4294836226 4294901758 4294967295 0 4294770688 196604 1 1 +6808147337 6255084086 2891865000 2964076648 2152163566 4144033795 10661119507 4427861633 282035520 151567251 385304142 152174611 166730384 142057431 185744758 182072626 828522087 2395432148 1217206879 232537562 325734697 171238639 102462894 271430791 75533907 128654737 112787255 157602543 360207890 755391391 4499305573 15049445959 +65515 15269844 4258332562 65733198 4234279893 1863889 361377 551522 1794384 2336101 1137789 394805 347476 176596 51664 28850 124100 108226 10705 2704 21997 18737 8714 7225 13786 13096 2509 5557 18772 20170 6980 1280 1210 909 450 2560 2257 170 2290 6548 39888 121129 182169 180122 166993 90437 8665 15002 9945 1040 722 338 5265 8282 4388 2329 9252 19385 14013 3826 689 450 2197 4685 2834 45 3978 4058 593 2250 2610 1714 709 1108 2045 1808 698 1664 937 634 2210 810 153 314 1658 2792 909 416 3748 5440 1765 2293 4069 1585 1250 3034 2417 709 193 1945 820 1552 5209 4793 1585 234 3152 8333 20533 50201 89828 131185 130250 73466 63284 66448 60866 36554 11105 5933 7541 6682 4292739118 4294901738 1 458750 4294901763 1 65536 4294770690 4294967294 65536 4294836224 131070 65535 131071 0 4294901760 131071 196607 4294836226 4294836225 65533 65535 65537 4294967295 2 4294967295 262142 4294901763 4294836222 262143 4294705154 65535 1 4294901760 4294901759 4294901760 131073 4294901761 4294836225 65535 4294967295 0 65537 4294967295 4294770688 131073 4294967295 0 4294770690 131071 4294967293 4294901761 1 0 131071 4294836227 65535 4294770685 131073 131071 4294901761 65534 65537 65536 4294770688 196606 4294836227 4294967293 131072 65538 4294901758 1 4294967294 4294901762 196606 4294836227 65534 0 4294836224 4294901758 65537 1 4294967293 65537 4294836224 4294901761 65535 4294836224 4294967294 196607 0 4294836225 4294967295 196607 4294901761 4294836225 4294836223 1 131069 4294901760 65537 4294901760 196605 2 4294901762 131070 4294967294 4294836224 196608 4294770690 0 4294901759 65537 65535 4294967295 4294901758 196606 0 196606 4294901762 65537 4294901760 4294836224 196606 4294901759 65536 4294901760 65535 65534 1 4294967294 196609 4294705152 196607 1 +6378386839 4548260906 11745372396 8847683212 2353335503 908091718 599237014 530730360 116378469 117647851 110088584 82866604 148664412 20503308 17929649 73408437 1395183501 1713776676 195145610 52568541 136448881 102335389 46295364 41565888 30128609 24970519 26501226 64557492 47855937 59369896 1044206336 1873359366 +65524 4291362870 4291624846 18939649 3408875 2173320 2272625 1484705 649282 647069 717352 597650 341284 78625 18761 23357 25490 11713 1730 18 725 2353 2993 2525 2029 1000 153 50 338 226 144 72 65 260 365 340 157 32 34 317 1277 265 193 466 634 773 586 1640 1369 442 20 125 144 73 146 256 149 25 425 169 97 229 122 257 292 98 34 58 36 74 117 180 82 13 36 45 68 90 180 73 50 277 257 80 16 25 20 25 245 466 250 25 130 101 13 18 82 128 20 53 125 58 4 1 5 8 17 29 45 20 0 101 325 106 37 90 113 89 37 45 2 29 4294705157 4294901757 65537 65535 0 0 0 4294901760 131072 1 4294901760 65536 1 0 4294901761 65535 131071 4294901760 65535 65535 0 4294967295 1 4294901760 0 0 4294967294 0 4294901760 65536 65536 0 0 65535 65535 65535 0 65535 65535 65535 65536 0 4294901760 65536 4294836224 131071 65536 1 131071 0 0 1 65535 4294901760 0 0 4294967295 0 0 131071 65535 65536 4294967295 131071 0 4294901760 0 65535 0 4294901760 4294967295 65535 0 4294901760 65535 4294901760 0 4294901760 0 4294901760 0 4294836224 0 0 0 65536 4294901761 1 0 4294967295 65536 0 65537 65535 4294967295 4294901761 1 65535 0 0 4294901759 4294967295 0 4294901760 65535 1 4294901760 0 65535 4294901760 0 4294901760 65535 4294901760 65536 4294901760 65535 4294901761 4294967295 1 4294967295 0 4294901760 0 65536 65535 0 4294901760 65536 0 1 65535 65536 0 0 +11830312965 10104483464 4254083699 4920784847 2691689024 514534283 177627123 73108160 7520576 22913015 17738822 2856491 2207854 1622477 3236693 2813354 6773105 8917610 13778260 2543654 2800499 3222588 3140880 1513508 1400454 2452535 2226265 4165951 1718554 1174583 1182831 2684807 +5 5767106 4288282813 4275896290 4284808298 2162056 2199429 248756 3653000 9539074 11010820 3211641 254722 320008 40330 2722 28705 40437 10469 7925 5013 986 4234 3200 313 2612 1666 4545 2725 433 18 101 109 221 298 2 680 666 405 3973 11898 10730 4698 6337 8653 4546 409 970 1865 170 1604 2048 1321 1201 1385 2084 2026 250 949 1936 522 484 818 392 305 612 325 52 305 1762 2169 370 193 626 650 169 50 340 1205 1625 685 65 290 482 265 205 178 233 725 245 1025 2810 2005 640 260 245 797 2088 2234 1172 509 130 661 725 1282 2309 3194 5210 7685 3978 4957 13189 8245 5585 13649 7650 8458 7298 1205 1469 733 136 4294639619 2 4294901759 65536 0 0 4294967295 65536 0 2 4294901760 65535 1 4294967295 65537 4294967294 1 65533 1 0 1 0 4294901760 131070 4294901760 1 4294967295 4294967295 65535 131073 4294901759 65536 4294836224 65535 1 4294836224 131071 65536 1 4294836224 131070 0 4294901760 4294901760 65535 65535 1 65537 4294967294 4294901760 4294901760 65535 4294836225 131071 4294901761 65535 0 65535 2 4294901760 65536 0 1 65535 4294901761 4294901760 0 4294967295 1 0 4294901760 4294901760 4294967295 65535 1 65535 1 65535 0 131071 4294836225 4294967295 131071 4294901760 0 0 0 4294901761 4294901759 65535 65535 131073 4294901759 4294967295 4294901760 0 4294967294 0 65535 0 4294836224 0 4294901760 131071 4294901760 4294967295 131073 4294901760 0 0 65536 4294901761 4294836224 131071 65537 65535 4294901760 65534 65536 65535 65534 4294901762 4294901760 65535 4294901760 1 0 4294967294 65537 0 131070 1 65535 0 65535 +11623254889 8535490010 36414517404 64555171414 8836025063 1207586430 168216022 203614811 53674241 28510524 18362880 29386172 11839398 1544701 3512255 27304657 108594872 74550693 19234123 22405562 24082157 16258164 8165249 15319916 11471675 14674879 7845527 20555044 27266014 29452154 139629499 213738262 +65470 4291035244 4290183015 20971463 4281860368 3825 97597 2690165 7057973 6062125 4410985 2011850 348020 60570 38545 7585 19066 7720 6418 20000 5585 1105 5330 14985 15858 5120 82 4420 7913 5536 1369 180 73 74 9 109 232 785 1093 4090 7696 1289 754 865 538 1800 333 1588 4496 2393 5 962 565 569 1465 745 185 225 1088 1073 305 325 234 680 1625 1313 362 290 1664 2965 2368 697 98 65 360 169 85 689 866 245 785 661 281 425 914 1220 1226 776 980 754 41 2425 4168 2561 1165 745 116 65 293 1681 2245 1768 1341 773 1544 4772 7930 11002 19450 29273 37313 47396 58500 70922 77192 61200 38420 25988 17680 8066 1682 101 4294574082 65534 131072 1 0 0 0 0 0 1 65535 131073 4294967295 0 4294901760 131071 4294901760 4294901760 0 4294967295 65537 4294901762 4294967295 0 4294967295 131070 0 65534 131073 4294967295 65536 4294901760 4294901759 196607 1 0 0 65535 65536 0 4294901760 4294967295 1 65533 1 4294967294 0 65535 4294901762 131071 4294901761 4294901761 131071 4294901760 0 65537 4294901760 131073 4294901760 4294901761 4294901760 0 4294967295 0 0 4294901760 0 4294967295 65534 65537 1 4294836224 1 4294836224 4294967294 4294967295 4294901760 131071 65537 0 4294901761 131070 131073 65534 1 131070 65536 4294901760 4294901760 65537 4294967295 4294901761 65533 1 65535 4294901761 4294901761 65535 4294836224 4294901760 131071 1 131071 1 4294901760 65534 0 0 65534 0 1 4294901760 4294967295 65535 4294901760 65535 1 0 0 131071 4294901759 65535 65536 0 65535 4294901760 0 65536 1 1 65535 0 1 1 0 +242927331 17543652245 38377448409 30553590940 6023909610 512823860 125468738 86794564 88280568 57145279 111929488 37566392 47881879 2862718 1824794 25138320 39015764 13264948 31347231 13983838 11246708 10177784 15095122 27645495 10121102 10956097 16588418 31346023 31687207 49247267 599129402 1342925070 +12 4288282504 20644090 4259249712 54198748 764360 407810 725049 1293002 1064353 683225 226505 164936 111141 20637 52900 64264 17545 19109 23426 4113 424 3656 1952 324 2477 5090 2858 4372 3965 1160 305 277 41 925 2938 8336 25085 74570 185956 389920 496404 387140 258746 173249 114728 58565 24658 21061 16642 12325 7541 3338 1480 881 410 245 298 362 1061 1513 1352 936 425 122 377 97 101 136 196 514 877 1096 1450 325 181 89 101 481 400 449 261 1 170 1700 2509 909 325 410 544 221 145 313 1096 1508 1252 1237 1417 1429 557 637 914 545 1341 1252 765 853 1300 909 233 17 193 356 1145 733 65 577 340 193 290 425 221 4294639616 196608 4294901760 65536 0 65535 65536 0 1 131072 0 65537 65535 0 1 4294901760 65535 0 65535 65536 65533 196607 1 0 0 4294901759 65535 0 65535 0 0 4294901760 65536 4294901760 65535 65537 4294967294 0 4294967295 131072 4294901761 0 65535 0 0 4294901758 65534 65537 131071 4294967295 0 65536 4294901762 65534 1 4294901759 131071 1 4294836226 65534 1 4294967295 0 4294901760 1 4294967295 0 4294901760 4294967295 65535 0 4294901761 4294967295 0 4294836224 4294967295 4294901760 131070 4294901761 4294967294 131071 4294967295 4294901759 4294901760 65535 131073 0 4294967295 0 0 65535 4294967295 65536 4294967295 131071 4294901760 65535 4294967295 0 4294901760 65535 0 4294967295 65535 65534 65537 4294836225 1 65535 4294901760 65536 4294901761 4294901759 65536 0 4294967293 65537 4294836224 65534 65537 4294770689 65534 65536 4294901760 131070 4294901761 4294901760 131071 0 4294901760 4294901761 131071 1 4294967295 0 +3231767450 4747403802 6992857805 4776356668 1241977653 534133360 391355049 213046864 107540337 21753905 17939752 38069356 31690049 4514783 55902149 1239880908 4918683647 2484327852 460206148 106425571 11044392 16160905 8648933 6034216 14180674 6064888 18316917 14048399 26288688 24529777 20173858 12665313 +65442 7012390 6881517 4240375960 40369020 1279021 336025 256930 467618 44249 335240 728181 593629 268690 72148 3866 26954 40505 11428 4253 4474 6400 7412 1972 580 1377 5365 7325 1690 162 365 325 797 954 250 2320 2997 4754 77120 397625 921181 951749 425680 32605 42016 70421 27572 14365 4505 349 340 337 410 1049 1193 1514 820 484 650 730 81 337 109 545 125 90 37 458 1700 1940 1153 666 265 954 1476 1989 1450 257 40 365 1025 2305 2993 1530 122 656 1769 1192 65 41 8 17 106 361 657 706 441 1417 2313 865 580 725 2210 1649 788 2 676 449 5 122 65 641 949 370 106 20 289 205 65 74 109 82 262143 4294901759 131072 1 4294901761 65536 1 4294836225 65534 65537 4294901760 4294901760 131071 65535 4294901760 0 4294901760 4294901760 65535 4294901761 65535 65536 65537 4294901759 65536 4294901761 0 4294901760 131070 1 4294901761 65535 65537 4294901760 4294901760 0 0 4294901759 0 0 4294901761 0 4294901760 65535 65537 0 1 4294967294 0 4294967295 1 4294901760 0 65536 4294901760 4294901760 4294836224 65535 4294901760 65535 0 131071 0 4294901760 4294836224 65535 65537 1 0 0 4294901760 4294901759 65535 4294967295 4294901760 4294901759 65535 65537 4294901760 65536 4294901760 131071 4294836225 65535 4294901760 65536 65535 4294967295 4294967295 0 131070 65537 4294901759 0 4294967295 65536 4294967295 196607 2 0 1 4294901761 4294901760 0 4294967295 0 4294901761 4294967295 0 4294967295 0 4294901760 4294901760 1 4294967295 0 65535 65536 4294901760 2 65534 1 4294901760 4294901761 65536 4294901760 65535 1 65534 1 0 4294967295 4294901762 0 2 +4585847527 2021955256 1659284130 2685462119 4107222329 1364536777 199134611 200880165 49038648 52179774 18199976 46830007 11684223 7003474 22309520 2259253004 8407756079 1304425202 191272625 10088876 16150624 7565978 4425560 19235510 21743127 20528309 29886565 8985334 17701920 29591094 12319506 7616931 +16 4288085956 38797204 4259185440 4285202297 1677514 2809000 122770 3501160 8184717 4537585 2135908 1190221 283088 328052 314093 103321 228317 164866 46105 26685 42589 30042 7178 2440 6914 1300 3961 11169 7946 1261 353 41 1586 9554 19540 3457 6570 1060 26937 60520 135140 20525 130013 108373 25177 2664 4040 5933 3874 1325 629 6617 5437 2450 7940 9601 6500 4933 2501 548 1873 6277 8381 5248 1549 1469 2677 144 2833 4772 1089 458 641 1285 1297 292 3925 2273 229 1625 2753 1681 3425 1594 349 180 1021 3146 1962 832 442 538 185 1737 3001 6370 7081 5389 4869 4093 1525 2260 2314 2045 2825 2173 185 458 1717 2482 2074 601 293 545 1249 848 136 13 52 290 97 720894 4294574086 196607 4294901759 0 196606 4 4294836223 196607 65536 4294901762 1 131072 4294770688 131074 4294901761 4294901760 4294967295 4294967295 1 4294836224 131069 4294770690 65535 4294901762 4294770687 4294967294 65534 131071 2 65535 196607 4294836225 65536 65535 4294901760 4294836225 65534 131072 4294901758 131073 0 65535 0 65533 65538 4294770689 196604 2 65536 4294901760 131070 4294901762 131070 1 65537 65535 4294901763 1 4294901759 0 4294901761 4294901761 4294967294 0 1 65535 4294705154 4294967294 131070 0 2 4294967293 131070 3 196605 65539 4294836224 0 131070 4294836225 65537 4294967295 65538 131069 3 65533 131070 131073 4294967295 65536 4294836225 131070 131073 4294836227 65534 131073 4294901761 196607 4294901762 4294770686 131073 4294967294 65535 131073 4294836224 131071 0 4294836225 65536 65535 4294836224 4294967294 4294967295 4294967294 131070 2 4294770688 131069 196607 1 65537 4294901758 65538 196607 2 4294901759 65537 4294901757 131070 65537 4294836224 65535 65536 0 +11634553468 8958534760 32003651588 34529211612 9519445522 2842541748 1829328478 1395048731 471706024 263224460 58157172 48819653 64638154 15816622 118009888 169953303 1027412306 902228022 77795336 54973830 105900863 63035189 78178380 39164873 27167227 38390605 37860244 29174662 80574766 86316097 41953147 22529613 +65497 8060931 4291493795 5571052 4260363720 481450 356473 488417 3566824 5383300 2080345 70673 78157 29410 23273 70130 66593 87394 70144 16484 641 3636 4421 4705 15776 11169 1861 772 740 2210 3497 2000 754 1360 3200 2834 452 1637 7780 14312 24858 28825 9217 5416 8362 3277 1009 1009 4849 3985 4394 5330 3700 1780 445 290 410 136 65 178 73 41 32 181 260 64 34 533 1117 545 200 5 101 117 146 1549 1961 541 218 58 18 145 269 233 234 40 260 490 298 281 68 45 386 584 325 153 113 25 10 116 269 325 401 250 53 25 53 229 162 144 272 32 10 50 232 261 89 20 65 136 137 40 4294967292 262145 4294901763 4294967294 65537 65535 1 65535 65537 4294901760 65536 0 0 65535 0 4294967295 131071 4294836226 65535 4294901760 4294901759 4294901760 0 65535 4294967295 0 0 4294901760 196607 65535 0 131071 4294901761 0 0 4294967295 65536 65535 1 0 4294901761 65535 0 4294836225 65535 0 65535 65537 4294901762 4294901758 4294901760 65536 4294967295 1 0 65535 65536 65536 0 4294967295 4294901762 4294967295 65536 0 4294967295 0 4294901760 131070 4294836224 65537 4294967295 131071 4294967295 131071 0 4294901760 4294901761 65536 4294967294 0 1 4294901760 65535 65538 4294836224 65535 4294901760 65535 4294901760 131071 4294836224 131071 4294901760 65537 4294967295 2 4294967295 4294901761 131071 0 4294967295 65535 4294967295 4294901760 0 131071 4294901760 0 4294901760 0 4294901760 65536 0 0 1 4294967295 1 4294836224 65535 4294901760 65535 4294836225 4294901760 4294967295 131071 4294901761 0 0 65535 65534 65537 4294901761 4294967295 131071 1 +2271965329 6161315138 24998827233 16746513325 474241037 268787780 515959467 585633622 137077066 37289369 104964050 27817360 22992018 19750183 25461499 97202988 249884704 77757616 46525943 55814543 9547193 1893661 2911526 8614811 9535752 10862368 4529579 6153510 5157694 5112980 3717683 3512177 +80 4290576403 4267375997 127927126 4131389327 3135290 523081 3996738 12059477 3618074 187204 1248586 781236 148837 361490 360746 363188 484210 219482 2845 63988 39101 8089 39538 78233 26413 450 2385 2529 2900 2885 937 554 244 2330 6137 1465 7265 7713 466 8845 29650 7001 6970 32840 38809 18761 5000 4385 1853 740 3869 3176 2018 3530 1960 404 281 724 701 369 997 1604 1010 970 212 1586 1693 202 1105 1450 1845 2405 1314 4388 11861 7684 1621 425 365 773 1157 578 68 725 2929 2340 1314 1585 1585 1789 2720 2512 637 677 625 650 1205 1885 1114 490 338 325 226 185 212 325 1322 625 265 1810 1690 985 986 565 68 244 241 241 458 365 73 65548 4294770680 262149 4294967294 1 0 2 131071 4294770690 131069 0 131071 4294967294 65537 4294901763 4294836224 65533 4294901763 4294967294 131071 4294836225 65535 4294836225 4294967294 131072 1 4294967294 65535 196609 4294836225 4294967295 4294901760 4294967295 4294967294 65536 65537 4294901757 131072 65534 3 4294967294 65536 65534 4294901762 4294967293 131073 4294836225 65533 2 4294770690 65533 65536 4294836223 65537 65534 4294770688 196607 4294967295 4294901759 196609 4294836224 0 196608 4294901760 1 4294836224 65534 196607 65537 4294967295 0 4294836226 4294967295 196607 2 4294836225 2 4294967292 65539 4294836222 196606 4294967295 262143 4294836224 196608 4294901761 4294836224 196606 4294836225 4294967294 0 4294901762 4294967294 4294901760 65537 4294967295 65535 1 131069 65535 2 65535 4294836226 196606 1 131070 1 4294967295 0 131072 131071 65537 4294901762 131073 4294901758 2 1 0 4294901758 131073 4294836225 4294836225 4294967294 65535 65535 1 65534 4294901759 65536 65538 65535 2 4294967293 131075 65534 +10528000193 28362909357 47577133750 8466055850 5842710800 2350911449 2989811430 2646718839 515262774 276394561 469831522 55815334 28232446 11591835 40329249 67658028 183446654 323189165 117473797 41339272 25846050 12428673 18670978 22521722 78477733 54207503 25150296 43098592 28211625 15736687 20990296 17907031 +65471 6684705 4260102106 76938490 4268295814 1032257 266153 793728 2186098 2907560 1333513 801601 353097 168781 87613 18477 71636 172001 75701 9760 2650 845 1490 1156 7220 5986 1274 0 338 685 612 346 289 689 1109 117 1453 2056 100 97 1305 7345 10313 4993 2482 6565 5794 1296 450 821 1780 2273 1013 85 370 461 305 113 234 226 37 113 904 2228 2368 808 58 18 481 1685 778 317 745 1000 1040 1445 697 82 29 98 208 298 229 466 338 689 801 557 401 122 104 2 356 657 193 145 400 392 701 841 333 13 157 148 122 13 17 144 725 1000 493 169 145 100 4 170 221 125 116 125 137 85 196613 2 4294770686 65536 4294967294 1 0 65535 65535 65536 0 4294901760 65536 4294901760 65535 4294836224 131071 0 0 65536 1 131071 1 4294901761 4294836224 65535 65535 0 4294901760 4294901760 65535 0 65535 4294967295 0 65535 65537 1 131071 0 4294967295 0 0 4294967295 65534 0 65536 131071 65536 65538 65535 0 0 4294901760 4294967294 65537 1 65535 0 0 4294967295 0 4294901760 65535 0 1 4294901760 65535 65535 1 4294967295 4294967295 65535 4294967295 65535 65536 0 0 65535 0 0 4294901761 4294901760 4294901760 4294967294 0 4294901760 0 131071 65535 4294967295 65537 65534 131074 4294901760 4294967295 4294901761 65534 65538 4294967295 131071 4294901761 4294967295 65535 4294901760 1 0 4294770690 4294967295 65536 4294967295 131071 65537 4294836225 196606 4294901761 4294901759 65536 4294901758 65535 65534 4294967295 0 4294967295 1 65537 4294836224 65533 1 65535 65536 65537 4294901761 0 65535 +3689126303 5693478408 14510220226 11218983977 3321541259 990060296 505154293 874521146 125327571 13113319 48126300 14248109 5581766 5645895 10369126 11242595 68352305 71801379 30425732 18539146 5256846 5242451 21773148 12653302 17721172 7015540 9536686 7889633 9035362 7238258 9009320 5155487 +52 4289855507 4276158615 14023784 40764068 266788 235300 102800 374674 2101669 3055450 830497 152818 272045 251549 99873 79700 125320 57812 3825 6058 19265 15377 5018 2701 1130 1825 1445 325 445 1154 505 169 64 673 2529 1381 232 1553 1825 1297 457 233 452 522 1989 2601 697 3242 2269 2853 3545 901 85 2 397 405 68 820 932 538 296 17 100 164 820 884 730 1640 2626 954 17 101 122 218 389 225 16 73 221 85 37 58 64 313 601 146 65 153 13 16 29 20 36 180 1493 2125 692 169 145 153 17 81 306 200 125 328 290 274 90 25 8 34 45 181 197 58 2 4 17 34 117 4294705163 4294901753 131072 1 0 4294901759 1 4294901760 65536 65536 1 4294901760 65536 4294901760 0 0 0 65536 0 1 65536 4294901761 131071 65535 4294901761 4294967295 65535 4294901761 4294967295 65535 131071 4294901762 65534 65535 4294967295 65536 4294967295 131071 131071 4294901761 65535 0 65537 4294967295 65536 4294901760 0 1 4294901760 65536 65536 4294901760 4294901760 0 65535 4294901760 4294901760 65535 65536 4294901760 131070 1 65535 4294901759 0 1 65534 4294836226 4294967295 65535 1 65534 65537 4294901760 4294901761 65535 1 65535 65535 4294967295 65537 4294967295 4294901760 0 4294967295 4294901760 4294967293 65536 131072 1 131071 4294901760 0 65535 65537 4294836224 65535 65537 65535 4294901760 1 65535 0 4294901760 131071 4294901761 4294901760 65537 4294901761 4294901760 0 65535 0 4294836225 65536 4294901759 65535 4294967295 0 4294901760 0 4294967295 65536 4294901760 65536 4294836225 196607 4294967295 65536 65535 65535 65537 4294901760 0 0 +1348592956 1179063878 6771717768 16973128069 2815542073 1746395005 913338332 674226143 122658832 123730551 33462594 13125255 7390858 4482455 14859657 15858428 10849103 15563708 33897074 28026839 5251424 8823330 7148914 23003498 6074383 2804360 4174611 2222401 16262269 6387177 4798964 2180319 +65525 9961491 4276486430 4280548690 55771542 620173 157540 7850 82196 797770 1598290 1037546 430916 264133 70445 6714 51850 83092 53777 15937 1873 21881 42986 20905 5809 2493 2740 1801 3285 4385 1825 325 116 193 464 2218 2746 785 425 1098 1028 1521 2320 4148 6730 7312 3170 2 2308 1570 202 1625 1049 260 185 565 544 117 298 578 306 442 890 650 80 269 520 130 400 685 128 20 325 842 1145 865 610 1637 2314 1274 410 185 40 5 197 625 965 585 137 218 373 441 445 490 212 233 1658 1717 613 200 9 58 145 538 482 225 373 485 122 29 101 85 144 245 169 16 10 41 144 97 9 65 4294901771 4294639609 262146 4294770688 0 65535 1 4294901760 0 65536 4294901760 65537 65536 4294901761 65535 0 4294901760 65535 131071 1 4294836224 131071 4294901760 0 65537 4294967295 0 4294901760 4294967295 65535 4294901760 0 4294901761 0 0 1 4294901760 65536 4294901761 131071 4294901760 4294901760 65535 65535 65535 65536 4294901759 0 65535 4294967295 65535 65536 1 65536 4294901760 65535 0 0 4294901760 65535 4294901760 4294967295 131071 0 0 131072 0 4294967295 65537 4294967295 1 0 4294901761 0 65536 4294901760 1 4294901760 65534 0 65535 0 4294901760 4294901760 4294836224 0 65534 65536 65536 4294901760 65535 0 1 65536 4294901760 0 131072 4294836224 131072 4294836225 4294901758 65535 2 4294836224 4294967295 4294901760 196607 1 4294901760 4294901761 4294967294 131072 4294901760 131071 4294901760 65537 4294901759 131073 4294901759 65536 65535 0 4294901761 131071 1 0 1 4294967294 65535 65535 1 0 65536 1 65535 +2210794846 386482292 2404509378 9466226320 4263081872 1249634934 315809414 505244943 145503189 257422228 98304260 25161953 31785652 4789663 16892084 13772237 24930132 69721305 27585705 14155631 6507418 7605749 7675786 6396648 13642936 24142622 7618359 9672939 16433302 9900030 6689766 2896092 +65465 4287431017 4286905834 1639198 4250401459 2769938 1207840 473345 1851337 1381392 4177 577040 379186 201188 151552 333216 577274 192069 63013 93061 75701 374816 673108 304628 44530 19885 11645 1346 650 8905 17450 9738 6242 4825 3125 904 7517 15908 10580 1901 697 1508 2281 3944 12025 7154 13000 1181 11489 21730 8066 545 481 2250 4496 4498 9469 16993 10985 1585 89 580 349 3001 10568 11920 7460 2225 256 5365 5321 2925 5018 7380 1853 4210 3041 450 2009 3860 4369 3274 2977 1802 130 52 745 3730 1629 85 313 689 356 625 82 2353 865 977 1629 450 2777 4097 2610 362 68 178 2402 5305 3425 712 122 1114 586 360 1250 740 232 58 232 1373 1480 305 983039 4294508551 65534 4294901757 131072 131071 4294901762 65534 65537 1 4294770688 65533 262142 65537 4294901761 65535 1 65535 4294901760 0 4294901761 131071 4294836224 65536 4294967295 196608 4294770688 262143 4294901761 131072 2 4294770687 131073 4294967293 3 4294967295 4294967295 0 4294901761 131072 4294770688 196607 4294901760 0 65536 4294901760 131071 65538 4294901758 1 4294901761 4294901758 65535 65536 0 4294901758 131070 327681 4294770688 0 2 4294901760 4294836222 65534 65536 1 4294967295 4294901761 65533 65536 65535 0 131070 4294901760 131072 65537 4294901760 131070 2 4294901760 131071 4294901760 1 65535 196607 4294836227 4294901759 196607 0 4294967295 131071 65538 1 4294836224 4294901762 4294901758 65534 65535 131072 4294836225 4294967295 0 4294967295 131070 0 2 4294901762 4294967294 0 4294901758 131073 0 4294836227 65535 65536 131071 4294836227 4294901760 4294967295 4294967294 131073 4294705153 4294967292 131074 4294901759 4294967294 65534 131074 4294967295 131070 3 0 196607 4294836225 65535 +11070760676 5775306959 9366331081 3135789885 2922599572 1585815270 3060009695 1583948185 1107647025 4112297679 1229075584 76065393 96941802 90410526 54803188 108849892 30251308 109369301 151762458 72371138 121687651 75986837 105014058 81852362 86673720 59088946 41419995 21865918 24559283 47824461 49504106 19270102 +35 4287758052 20578352 33292613 4241490071 30308 63850 515125 734868 347101 2897396 2665330 1009661 436948 260650 190408 652936 972010 488513 193924 433337 601681 479905 193554 970 59930 44585 16945 26100 46657 43074 14690 1732 1160 8489 8077 1525 5057 5540 13050 21397 28900 26370 10154 2813 7569 20465 31545 18450 1885 6305 11156 6725 565 1697 3240 6610 13753 14257 10501 5553 1737 2522 6793 1417 306 754 6626 9410 11965 11617 2920 584 1312 3746 12505 17284 6154 2080 6408 7321 1889 929 1321 477 1129 6849 10330 5650 2920 3589 3205 349 1658 4177 1930 325 2941 6245 5345 2333 1530 1274 3041 1658 425 4474 9413 8633 2890 153 1346 400 160 2081 2353 509 841 328 2493 3373 986 4294836230 393214 4294836231 65533 4294836224 131072 1 65536 65536 2 65535 65538 65536 4294901761 0 4294836225 131072 4294770690 4294901758 0 4294967294 65539 4294705152 4294967293 131071 4294967295 0 4294836224 65533 131074 4294901757 4294967294 65535 262143 65535 65535 4294836226 196605 65539 4294836223 262142 4294836226 4294901761 4294901758 196606 0 0 4294901761 4294901757 1 4294967295 131071 131072 2 196606 4294836228 4294901756 262145 4294901760 1 4294836223 262143 4294901759 131073 4294770688 196607 131071 4294901760 65535 131072 65535 131075 4294967295 4294901761 65535 65533 65538 4294901760 131071 4294836226 65536 4294836224 4294901760 65535 4294836224 196604 4294836224 131072 4294901762 4294901759 65534 65538 4294967294 4294901762 4294967294 4294901763 131070 4294901761 4294901759 131072 1 131073 4294836224 2 4294967294 4294967295 1 4294967293 1 4294901760 4294967294 196607 1 131070 4294901762 1 4294901761 4294836224 65537 4294901761 4294901760 4294901762 4294705151 65534 131070 4294901758 131074 131069 3 65537 4294836222 65534 0 4294901761 65533 +241288346 2791500496 3518365639 16842694315 10321741892 2856500415 3612347426 5556148044 3354278605 4137345289 847544054 347669177 393556856 118965162 66723550 97275871 288151003 169933912 243391109 93516383 100978467 138474361 52860527 135271105 117012607 138748503 66067470 99403751 64978722 71727089 104829244 37967637 +65437 8126515 4280680639 5111038 31458539 2071402 868405 35554 314857 1184717 1427540 396164 392642 452297 150772 64208 19700 107300 101264 3194 1649 14885 23642 31400 4297 9680 17533 13465 8945 1517 977 2440 2250 970 234 689 1289 1745 2897 4666 2141 2468 2425 610 325 698 970 1378 2105 200 2209 1825 1405 740 373 98 80 425 296 725 1865 2501 580 802 2405 2210 689 37 18 148 1385 2960 2645 1754 1274 1129 2548 2909 1556 477 90 970 449 218 53 452 530 1066 1853 1721 928 269 2320 3754 1537 10 530 145 577 1129 1124 1250 493 328 873 709 445 181 370 712 218 260 373 197 520 1609 1205 313 485 233 74 74 4294967293 4294901764 4294836221 131072 0 4294901760 65535 0 65537 0 4294967295 0 65535 0 4294836224 0 65535 131071 65537 0 4294967295 0 65535 65535 4294901761 0 0 4294901760 4294967295 0 4294967295 4294901761 4294967295 65536 4294901761 4294901760 65535 1 0 0 4294901760 131071 4294901760 65536 65536 1 4294901760 65535 4294967295 4294901760 1 4294901760 0 4294836224 131071 4294967295 65536 4294901760 0 4294901762 4294901759 131071 65536 65537 4294836225 0 65535 4294967295 4294901760 0 1 4294967294 4294901760 4294901760 65534 65535 1 131071 4294901761 65534 65535 0 4294836224 131071 4294836224 4294967295 65536 4294901760 0 4294901759 131071 131071 0 65535 65536 0 65535 131071 0 65537 1 4294901761 4294836223 4294967295 0 4294901760 4294901761 4294901760 4294901760 4294836224 131071 65535 65537 65535 131071 1 4294901762 65534 0 131071 1 1 131071 0 1 4294967295 4294967295 65536 0 4294836224 65534 1 131072 4294836225 65535 +8196217789 1957025137 4105133346 8254685747 2845377226 2070848339 507309560 673252806 149784914 187081437 137602536 132462889 43177557 19527115 10046263 32317284 32735405 11963013 19920883 20458214 5512408 18694013 26232132 16410094 38688435 28834970 10315897 31713278 27728808 20097256 11833634 17320225 +32 4283432963 12910665 4258005120 24509287 1611730 655645 778450 195137 260413 439618 1045188 281546 54980 53170 61648 177970 227890 182789 81161 24026 10685 55849 125320 93845 25337 2237 4456 4084 761 49 149 125 185 349 800 1297 1444 1565 3725 3016 877 4229 9512 10309 3965 1233 4736 8072 5994 3757 3700 3770 2522 1233 1325 1445 421 712 1993 3497 4736 3989 1352 2930 6273 3328 650 274 389 2425 3141 2105 3712 4432 3258 1249 13 193 36 925 2125 1810 725 34 289 1681 2842 685 530 1405 890 481 625 3573 5114 3418 538 1597 1973 1664 2081 1025 317 193 100 80 1 18 305 845 680 221 292 234 386 205 436 410 180 90 25 4294705154 196606 65536 0 1 65535 0 4294901760 131072 65535 0 0 4294836225 65534 131071 4294901761 65535 4294836224 65534 4294836224 4294901760 4294967295 131071 131071 2 4294967295 0 4294967295 4294901761 131070 131073 4294901761 4294967295 0 65535 65536 0 4294901760 65535 0 4294901760 0 4294901760 0 4294901760 4294901759 65536 65535 4294901760 4294901760 0 4294901760 4294901760 4294967295 131071 4294901760 65535 4294901760 0 4294967294 65537 4294901760 4294967295 131071 4294836225 4294901759 65535 4294901761 1 65535 0 0 4294836224 65535 65535 0 0 4294901760 65535 65536 4294901761 4294967295 4294901760 65535 4294967295 65535 0 65535 65535 1 65534 65537 0 4294836225 4294967295 65535 1 4294901760 65536 65535 4294901760 65534 4294901760 4294967295 65536 4294901760 4294901761 4294901760 65535 0 4294901760 65535 65535 4294967295 65537 4294901760 65534 131073 4294901761 0 196606 4294901761 4294901760 65537 4294836225 4294967295 4294836224 131071 65535 4294967295 65536 1 65535 4294901760 65534 +6329789845 4222935529 1589637646 3988540345 3508973056 550883596 965366228 1570610251 548279819 497984197 744534210 69130211 16423215 1749836 8651550 25229284 47071422 89832514 75645986 55604185 22717076 42775713 60916084 33057526 58017351 21099429 23609223 26573470 57712926 32231803 7116200 9828388 +0 4980755 3473286 4268490994 60686310 2383009 3251060 2230570 706417 518482 1023401 1190153 618821 169177 31450 62050 102877 111281 76052 54898 45985 32689 39065 22194 2833 1394 765 1796 1972 765 90 100 356 461 117 72 292 73 601 3146 8500 25250 47281 83330 112745 82637 45949 29844 27073 23202 15730 7837 4097 1492 925 557 58 8 136 173 98 169 73 361 765 153 58 26 377 626 1145 730 5 244 625 626 49 17 106 197 73 17 49 50 52 37 113 441 208 20 74 145 325 338 181 200 234 34 130 257 89 20 0 2 1 32 52 34 4 0 17 97 73 25 0 26 64 53 5 1 1 9 4294770691 131070 4294901762 0 0 4294901761 0 0 0 0 0 0 0 0 0 0 0 4294901760 0 4294901760 0 0 4294901761 0 0 0 0 4294901760 0 65535 0 0 0 4294901760 0 65536 4294967295 4294967295 0 4294967295 0 0 0 4294901760 131071 4294967295 65535 0 0 0 4294901760 0 0 0 0 4294901760 1 4294967295 65535 4294967295 65535 0 0 0 4294901760 65535 65535 4294901760 0 1 4294901760 0 4294901760 4294901760 65535 4294901760 4294901761 65535 65535 4294967295 0 65537 4294901760 1 4294967295 0 4294967295 0 65535 1 65535 0 65535 0 0 0 4294901760 4294967295 4294901760 4294967295 131071 4294901760 1 0 65535 1 4294901760 0 65535 65535 65535 4294967295 65536 0 0 4294967295 0 4294901760 0 4294967295 4294901760 0 0 4294967295 4294901760 0 65535 0 4294901760 0 0 1 65536 0 0 +14773238038 14617819759 4404399640 6987944791 5163371075 1020149550 624962766 762177842 446908030 313892902 83094210 14168330 9434170 2986072 2245143 19789669 404318747 1101402493 465285483 130434468 10237462 2199612 5350454 8421955 8590531 3057048 1937279 4054659 4873241 1751857 752879 960938 +65530 4292411379 524295 27525227 4198760658 5249021 3565729 1672541 830210 1159549 3826409 2298218 623225 590372 532097 572420 817786 550450 176245 70405 85357 36170 48068 103898 44777 4194 1394 7432 3764 136 80 153 170 442 425 394 2245 3785 3293 3380 4930 90116 235850 234769 134056 61840 22324 9412 28645 26129 14130 9506 3400 1233 1261 1096 964 369 29 205 400 234 52 52 178 130 164 841 1780 3754 5069 2969 1234 810 845 730 356 85 29 5 9 10 1 18 90 200 226 200 81 9 26 26 145 53 8 1 25 10 49 125 52 25 26 8 5 1 32 20 4 65 265 629 680 578 442 178 5 9 8 5 4 1 2 0 65535 0 0 0 0 131071 0 0 0 0 0 0 0 0 0 0 0 65535 65535 0 65535 4294901760 0 65535 0 0 4294901760 0 4294901760 0 0 65535 4294901760 4294901760 65535 0 0 0 65535 0 4294967295 65536 0 4294901760 65535 0 131071 0 0 4294901760 4294967295 65535 4294967295 0 4294901760 0 65535 4294901760 4294901760 4294901760 0 65535 4294901760 65535 0 0 0 131071 0 4294901760 0 65535 65535 0 0 0 65535 0 0 65535 65535 4294901760 1 0 0 1 65535 0 4294901760 0 0 0 0 65535 65535 65535 0 65535 4294901760 4294967295 0 4294901760 65536 4294901760 4294901761 65535 0 0 1 131071 0 4294901760 4294967295 0 4294967295 0 0 4294901760 0 0 0 0 0 65536 65535 0 0 0 0 65535 65535 65535 0 +24009075119 13217887400 6396689913 21190770700 8294492884 4251870864 5216966340 3338427807 739078305 548040252 444139732 42335812 15593099 2661234 12177824 41844984 1378487966 1734679305 340220206 134774160 16109355 4278460 3642201 42200780 29648878 3170056 1839418 2082559 955372 928552 3900984 7950512 +1 983039 131070 4278255443 58720143 1213985 295172 38777 1278485 4523072 3525197 372730 543545 2819385 4674130 2417220 334112 144036 172625 187456 47185 1769 49121 106705 68850 10946 289 5237 5162 949 17 13 5 53 117 293 2509 11357 13978 7045 20025 42128 16705 538 34 725 1745 4276 3152 1256 605 541 274 256 641 689 725 490 180 13 13 4 45 82 130 80 113 250 288 605 1224 785 314 146 164 226 130 26 5 13 13 17 41 34 49 9 68 73 130 117 5 169 362 281 90 1 52 80 37 1 58 72 72 65 9 1 1 5 25 221 450 109 106 612 433 101 18 10 4 5 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 65536 4294901761 0 0 65535 4294901760 65535 65535 4294901760 0 0 65535 65536 4294901760 1 65535 0 65535 4294901760 65536 0 65536 65534 4294901761 4294901760 65535 65536 65535 65536 4294967295 0 4294967295 0 4294901760 0 4294967295 4294967295 65535 65535 0 65536 4294901760 4294967295 0 0 0 65535 65535 65535 131071 4294901760 4294967295 4294901760 4294901760 4294901761 4294901760 4294901760 65535 65535 0 1 1 65535 0 0 0 4294967295 0 0 4294901761 4294967295 0 0 4294901760 65535 65535 65536 0 0 0 0 65535 0 0 0 0 0 65536 4294901760 4294901760 0 65535 65535 4294901760 4294901761 65535 0 131071 0 0 0 65535 0 4294901760 0 4294901760 131071 0 65535 4294901760 4294901760 0 4294901760 4294901760 65536 1 +4296266726 1990800203 15741493481 21776392145 6161477790 25100571160 13523866196 1562085004 926458893 431900830 562589786 44640973 20067177 318044 17722393 130937341 288588039 41745443 34804807 9009351 8845760 2076364 1712301 9103885 7045572 1075962 865130 2855220 2643046 1189154 3098130 5556710 +65534 4294770691 196606 6881410 4266459046 185569 23725 33057 842725 2311625 1343773 132201 440960 2155309 2334953 434645 2837 53128 92068 74048 9074 3869 18369 31585 11498 272 1189 3665 3205 865 52 4 10 13 58 733 2837 3332 1396 193 1490 7754 6253 1021 130 221 277 85 65 68 45 1 10 49 122 128 17 26 17 4 13 18 1 2 37 34 40 65 200 145 5 16 29 29 25 82 41 8 1 2 13 25 18 16 58 37 113 221 100 0 29 89 234 125 13 80 90 170 90 34 61 68 20 5 13 10 1 9 41 122 269 221 25 90 100 37 4 1 1 1 5 1 65535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294901760 65535 4294901760 4294967295 0 65535 4294901760 65535 0 65535 0 0 65535 0 65535 4294901761 4294901760 0 65537 65535 4294901760 65536 0 4294967295 65535 0 4294901760 0 0 65535 0 4294901760 4294967295 4294901760 0 0 65535 0 65535 1 0 0 4294901760 65535 65535 0 4294901760 0 0 0 0 0 4294901760 4294901760 0 0 65535 0 4294901760 4294836224 4294901760 65535 65535 4294901760 0 0 0 0 0 0 0 4294901760 0 4294967295 0 0 0 0 0 1 65535 4294967295 0 65535 0 65535 65535 0 4294967295 0 0 4294901759 0 4294967295 65535 65535 4294901760 65535 4294901760 4294901760 4294901760 0 4294901760 4294967295 65535 0 1 4294901760 4294901760 0 4294901760 0 4294967295 0 4294901760 0 4294967295 0 +605954803 1045895109 8596982149 9183189032 4439201333 14092612619 3806964669 523005046 366555176 145508503 126483818 22129461 13971339 207660 12416315 23292080 54024445 14728020 1572314 595195 1052889 212395 485132 1666417 711176 390875 1135514 2178611 2380866 1231538 1921926 1900340 +0 4294836221 524298 4290969445 26214653 340488 84674 32002 1135773 3935161 2480605 302090 563092 3357001 3817234 928178 25010 6730 33300 39373 12610 592 2960 16769 11545 1125 200 1225 1082 125 85 100 74 73 90 221 1448 5085 4594 4552 4426 3285 6068 3161 580 242 194 305 340 197 53 2 26 64 34 29 37 9 5 20 45 13 1 0 4 49 85 45 29 2 50 61 29 8 5 16 18 1 0 5 36 41 18 5 45 16 68 225 17 101 234 245 289 520 538 298 185 144 169 34 2 10 5 25 17 0 13 9 4 4 26 37 340 298 80 85 40 1 2 2 2 0 65536 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4294967295 0 0 0 0 4294967295 4294901760 65535 0 65535 0 0 4294967295 0 0 4294901760 0 0 0 0 4294901760 4294901760 0 0 0 1 4294901760 131071 4294901760 65535 65536 1 4294967295 131071 0 0 0 65536 0 4294967295 0 0 0 4294901760 0 0 4294967295 0 4294901760 4294967295 65535 1 131071 4294967295 4294967295 65535 0 0 4294901760 4294967294 4294967295 4294901760 1 0 0 65535 4294901760 4294901760 65535 4294967295 65535 0 65535 0 4294901760 4294967295 4294967295 131071 65535 65536 0 4294967295 0 0 0 0 4294901760 0 131071 4294901760 4294901760 0 0 0 4294901760 4294967295 65536 4294967295 0 0 4294901760 4294967295 65535 0 65535 4294901760 65535 4294901760 0 0 4294901760 65535 65535 4294967295 4294967295 4294901760 65535 0 0 0 +1209456858 1453754383 13727565604 16544725636 6709475864 22660985989 6904878652 189964515 200209624 56130992 87725944 8378007 4353578 948273 9223142 51480079 56796182 21173742 3528563 837291 489459 322404 435002 748647 434285 281370 910977 4202033 7081305 1029846 1047050 2781397 +1 262149 65545 4293394568 4275568348 288565 100773 109072 2184797 5187745 3213125 664514 536354 1805284 1833941 447589 9137 458 193 6125 10660 909 2729 7589 6445 3133 725 82 221 292 257 100 125 362 541 850 2405 3940 3748 1490 493 3573 6770 5725 2194 405 85 50 2 34 109 205 221 52 2 2 1 0 45 34 5 5 1 2 1 10 10 4 5 9 13 40 26 2 8 18 0 0 10 10 16 10 5 4 53 74 85 82 50 173 289 117 1 18 298 493 221 82 26 10 29 10 1 9 4 8 10 10 10 18 100 225 401 296 89 20 20 101 149 80 64 13 2 4294901760 65535 0 0 0 0 0 0 0 0 0 0 0 4294901760 4294901760 4294967295 0 4294901760 1 4294967295 0 65535 0 0 65535 4294901760 4294901760 65535 4294901760 0 65535 0 4294901760 65535 4294901760 0 4294967295 65535 0 65536 1 0 4294901760 65535 0 0 4294901760 65536 0 65535 0 65535 4294901761 4294901760 0 131071 65535 0 0 0 65535 0 0 4294967295 65535 4294967295 65535 0 1 65535 65535 0 0 0 65535 0 0 4294901760 65535 0 65535 4294901760 65536 65536 4294967295 4294901760 0 0 65535 4294967295 0 0 4294901760 65535 0 0 4294901760 0 65535 65535 1 65535 131071 4294901760 4294901760 0 0 4294967295 0 4294901760 0 4294967295 4294901760 65536 65535 4294967295 1 0 0 0 0 0 131071 0 1 0 0 65535 131071 0 4294901760 0 65536 1 +1093863859 2865888829 20214480262 22044372580 5604611882 11607364828 3311838971 19068201 54530851 36742630 52345102 7983694 2556635 2499466 14565655 35160346 46501016 35320368 1086201 1970274 319757 282071 78717 220565 283731 175340 823574 2847149 4486969 634424 1734847 3915481 +65530 4294770668 4294639614 5439290 16056767 260109 74804 1085725 3639241 3563489 1540997 978410 802469 731898 134100 211133 235874 79048 71266 70225 14848 6565 20488 10970 2500 1261 288 2925 3085 1665 729 136 625 1741 1124 169 149 290 466 1313 2493 4157 4810 1546 3541 2785 221 0 45 50 100 338 377 149 25 8 13 50 58 34 61 29 4 4 10 1 20 26 40 106 109 73 29 16 72 85 50 65 58 65 52 17 106 121 74 17 29 89 100 37 61 232 100 45 250 293 153 50 25 1 52 125 113 40 13 10 1 1 0 4 20 18 10 53 4 1 34 50 25 18 41 18 4294967294 1 0 65535 0 0 0 0 0 0 0 0 65536 0 4294901760 0 65535 4294967295 0 0 0 65535 0 65535 0 0 0 0 0 0 4294967295 0 4294901760 0 4294901761 0 0 0 65535 0 4294901760 65535 4294967295 0 0 65535 1 0 65535 4294901760 4294967295 0 4294967295 4294901760 65535 4294901760 1 0 4294967295 65536 4294836224 65535 0 0 4294901761 65535 4294901760 1 65535 0 0 0 1 0 65535 0 4294967295 4294967295 4294901760 0 0 4294901760 4294901760 4294901760 65535 0 0 0 4294967295 4294967294 0 65535 4294967295 65535 4294901760 0 0 0 65536 0 4294901760 0 65535 0 1 0 0 0 65535 4294901760 4294967295 4294901760 0 0 65537 4294901760 1 4294901760 0 0 65535 65536 4294967295 4294901760 4294967295 4294901760 0 4294901760 4294901760 0 65535 65535 4294967295 0 0 +947952750 7969309015 20746730841 13366811972 5981303880 3213009662 1562281490 816638907 353432806 126281909 47348624 18231457 18266153 9009828 7898301 8834641 42185198 34482319 3724320 3275706 846070 676290 223381 1076580 1155901 1289872 1523173 2054241 3496973 1520634 337294 647382 +65526 1179669 4291625004 4286709792 4291034598 589225 170881 168205 640225 1082308 548041 157357 553169 1971217 2091205 534025 15688 2053 26122 88592 37253 1553 34973 48098 18180 1205 5861 2837 5441 6280 1125 872 3145 4717 1808 634 2425 2980 1332 1145 769 145 1445 3877 9445 10324 3005 585 565 185 153 305 58 58 97 32 50 80 52 2 61 104 25 2 29 5 58 149 61 85 37 8 10 18 1 16 58 125 145 149 137 100 65 256 218 80 4 16 58 113 68 208 544 265 37 9 26 17 121 116 8 25 72 45 65 41 25 36 36 26 10 17 269 610 484 296 109 73 85 121 61 25 131069 65538 0 0 0 0 0 0 0 0 0 0 0 1 0 65535 0 4294901760 65535 4294901760 0 0 4294901760 4294901760 0 4294901760 4294901760 0 65535 65535 65536 65535 0 65535 0 65535 0 0 4294901760 0 4294901760 0 1 4294967295 65537 4294967295 131071 4294901761 0 65535 0 1 65535 65535 4294901760 0 4294901760 65535 0 65535 4294901760 65535 65535 4294901761 131071 65535 4294901760 4294901760 4294901760 4294967295 0 65535 0 0 4294901760 0 65535 4294901761 4294901760 4294967295 4294901760 0 65535 4294901760 1 4294901760 65534 65536 0 0 0 0 4294967295 4294901760 0 4294901760 65536 4294901760 65535 4294901760 65535 0 4294901760 65535 0 4294901760 0 0 0 4294901760 4294967295 0 4294901760 0 0 4294901760 65535 65535 0 0 0 4294901760 0 65536 0 1 0 0 4294901760 65535 4294901760 65536 4294967295 65535 0 +2150785063 1588949617 4827036733 4138871917 4668325703 12969199872 3868202669 192520894 424089128 255936015 203969230 40711251 43907143 29075112 25164731 22623862 17119766 87612575 21113733 2437026 954286 843476 687519 1225596 491323 2335704 2809254 3100201 2966911 1373946 1803698 6735683 +10 4293197802 3735555 4259675 20185687 810737 321040 16570 28537 231041 274465 449800 2583821 7015378 5305802 799762 52520 35285 230789 301977 92410 4177 2218 47252 34624 226 26849 29765 13753 4381 450 1373 3293 2180 449 1378 8593 6817 1225 6290 10984 9344 4765 6272 20105 21024 1872 1189 1864 340 629 1073 89 269 185 25 10 85 116 101 212 104 85 298 337 290 1226 1424 485 68 0 4 18 50 89 117 82 397 466 244 52 10 208 745 208 80 196 242 481 578 1440 1352 26 977 1130 865 1762 2545 1192 89 386 333 801 720 250 466 565 505 170 485 1021 653 205 1321 800 178 340 116 50 58 32 5 262140 65538 0 0 0 65535 0 0 0 0 0 0 65536 65535 0 0 0 4294901760 0 1 131071 4294836224 65535 65536 0 4294967295 4294901760 65535 4294901760 0 0 65535 4294901760 65536 4294901760 0 0 65535 65536 65535 4294901760 4294967295 1 0 4294967295 0 65535 65535 4294901760 1 65535 0 0 4294901760 4294967295 4294901761 65535 0 4294901761 0 0 4294901760 65535 0 0 65535 65535 4294901761 0 65535 0 131071 0 65535 0 0 0 65536 65535 65535 0 4294901760 4294901760 4294967295 0 1 65535 4294901760 0 4294901760 65535 4294901760 4294901760 65535 0 4294901760 65536 4294901761 4294901760 4294901760 4294836224 65535 4294901760 4294967295 4294967295 131071 4294901760 65535 0 65536 65536 65535 4294967295 65536 0 4294901760 4294901760 0 0 0 0 0 1 65535 4294967295 4294967295 0 4294901761 65535 0 65535 65535 4294901760 4294967295 0 +3163230914 644216959 703830900 2242195256 18498963362 38940581179 8114251229 1166614441 1493394923 193398575 267758980 210671975 75687386 22816163 36888732 69359382 107543927 173260053 37244740 7834191 1550610 2189149 7825768 9354076 1405989 5027645 5830452 15548178 28564770 17439516 14443692 13628940 +65510 3866651 4292542589 4278517810 4281007599 1018420 864117 1897405 4133725 3018482 1078621 318925 2692994 8300045 5663156 524173 99850 225578 370226 418081 167540 28989 15746 45821 86021 47545 4477 32017 19477 2533 1832 5524 1576 784 89 4885 24077 23780 2405 2465 1730 452 1124 6682 22985 79330 134017 71540 13289 1780 1341 6660 6525 1010 185 977 442 34 637 689 68 1570 1460 1394 1666 593 3281 2740 1082 740 1105 625 104 338 1160 2225 970 116 180 32 410 712 82 2404 3218 794 914 1525 1466 457 244 1972 4113 5986 6890 6805 9092 5265 53 1460 2097 2605 3796 5429 3089 100 898 2026 605 100 1181 3125 2669 882 1220 794 529 685 313 122 37 49 196601 65539 196606 2 0 0 0 0 0 4294901760 65535 1 4294901760 0 65535 1 4294967295 4294967295 65535 0 65535 0 65535 4294901760 65535 0 65535 0 4294967294 65535 0 1 4294901760 65535 65537 65535 0 4294901761 4294967295 4294901760 0 65535 65536 1 1 0 1 65535 0 4294967295 65535 65535 4294901760 4294901760 1 4294901760 0 65536 0 0 4294901760 65537 0 0 4294901760 0 0 0 4294967295 0 4294901760 4294967295 0 0 0 65535 4294901760 65535 0 4294901760 0 65535 4294901761 65535 4294836224 0 0 65535 1 65535 65536 4294901760 65534 4294901760 65535 65535 4294901760 4294967295 1 65535 4294901760 4294901760 65535 65535 65535 0 0 4294901760 0 0 0 0 4294901760 0 4294967295 65535 65536 4294967295 65535 0 4294901760 4294967295 65535 0 0 4294967295 65535 65535 131071 4294967295 0 0 4294901760 65535 2 +5067109681 12859186909 21136876749 9521989451 20115499549 43570635842 7904527964 2368341719 2283411614 380756767 575051532 229801984 92521323 26417836 96623487 138019913 30346884 679651136 654787263 60210513 12767069 12181393 28904429 26887267 16411142 11205753 30774139 40684513 127664601 74532854 42521063 30672949 +65535 4292476938 5963711 4288479289 18612194 158506 460666 3534613 7194773 4455001 392789 144448 697801 3399149 1889280 37025 83729 6938 1440 49009 49396 7785 3988 6850 24580 7569 24677 40882 37845 16069 2020 2521 5597 3922 1450 2386 11540 17728 8905 3217 2581 4388 6649 8005 4625 4381 104897 141538 35801 7124 10420 7565 442 90 1609 2410 424 925 2466 1640 949 4500 6922 3485 650 81 554 313 185 905 1781 421 29 89 61 394 1544 1313 730 1125 1637 1234 545 985 661 1069 2138 2290 2708 2005 1300 1066 765 1082 458 801 3146 962 936 541 100 65 346 485 25 221 26 484 562 328 490 388 145 256 260 136 153 130 65 121 212 100 65540 131069 65539 4294901761 131071 1 0 65536 4294901761 0 1 4294901760 65535 1 0 0 4294901760 65535 0 65535 4294967295 0 0 0 4294901759 0 4294901760 65534 0 0 0 0 1 0 0 4294901760 65535 0 65536 1 65535 1 65535 65536 4294901760 4294836224 0 65536 0 4294967295 4294901761 4294967295 65535 65535 65536 0 0 0 65535 4294901760 0 131071 4294901761 65537 4294901759 65536 4294901761 4294967295 0 4294901761 65536 0 0 1 65535 65535 65535 0 0 4294836224 4294901760 4294901761 4294901760 4294967295 65535 4294901760 0 1 4294901759 65535 4294901760 131071 65535 4294901761 0 0 0 0 0 4294901760 65535 4294901760 0 65536 0 4294901760 0 65535 4294967295 131071 4294967295 0 4294967295 0 0 0 4294967295 65536 4294901760 65536 65534 0 0 0 4294901760 1 0 4294967295 65537 65535 65535 4294901761 65536 0 65535 +1562655190 21446677639 34731971521 8654492932 6858486424 16109817961 2287003827 175389713 321662840 95315609 154988208 295608443 192992610 42215645 64078006 121609512 64579822 384850176 864670893 80885618 21645156 42949254 40877181 11540781 9656180 22741349 26694933 39576780 27645449 11218720 9050111 6099228 +65497 3932208 2162476 4287889963 2030900 173970 280053 959969 375194 652816 2309282 270353 1369450 3560996 1981850 618052 143194 11402 25225 19801 14170 88145 137482 84437 59978 38498 14450 11745 25610 17505 3816 586 145 530 1165 1021 2410 10 450 6682 20610 9749 3893 6065 14081 153540 509800 300373 50522 21008 2465 20180 23413 1625 11225 18010 1684 8212 1640 3601 1252 8146 1145 1818 445 1060 2788 4360 1637 1640 1300 2465 4100 746 416 1377 225 9 425 424 45 146 653 169 148 2026 2225 232 153 820 68 2005 2081 1544 916 4205 3649 986 377 1234 1949 1145 1490 1421 629 1737 872 178 196 306 97 360 90 522 356 185 98 13 1 32 100 170 9 4294836222 65536 65536 0 0 65536 4294901760 0 4294901761 65535 0 4294836225 131070 4294901760 0 0 0 0 131071 4294901760 65535 0 0 65535 0 65536 4294901760 65536 4294901760 4294901760 65535 65536 65536 4294901759 0 4294967295 4294901760 4294967295 131071 65537 4294967295 0 4294901760 4294967295 65535 4294901760 65536 65535 0 1 1 65535 0 4294901760 131071 65536 0 4294901760 4294967295 0 4294967295 65536 1 65535 0 65536 4294901760 0 4294967295 0 4294967295 0 4294901761 4294901760 0 4294967295 65535 65536 1 131071 0 65535 0 1 0 0 65536 4294967295 65535 0 4294901760 65535 65536 0 131071 4294967295 1 0 4294836224 65535 65535 4294901760 4294967295 4294901760 0 65536 4294901760 0 65535 65536 0 0 4294901760 65535 4294901760 0 1 4294967295 0 65536 4294901761 0 4294967295 0 4294967295 4294967295 0 1 0 4294901760 4294901760 4294967294 4294901760 1 +1179864909 4438484312 3337492275 10773972694 9690901207 17806062416 4403479604 300948683 254174295 918139968 599934592 193487700 149701042 9859033 13825897 44957753 134314275 1809100517 2473691731 232577496 145384776 61370824 38002572 43365701 30284484 7384129 14936535 23393597 50137944 34535972 15072053 5795591 +6 4293394423 1703881 9306231 4274454588 97585 38314 42314 162937 248656 137869 12069 74740 178757 100090 61760 71845 29305 1856 2597 17828 27274 5945 2885 8209 8593 4964 1360 122 1384 881 490 117 37 1021 5185 8564 7538 8161 12778 16922 25961 48362 49877 24961 18946 108986 167389 90385 36058 102826 317993 458225 335810 184477 323305 584245 605162 389133 164005 40900 9805 16400 11482 1145 1768 5364 3033 1237 1010 2081 4329 3681 1940 1098 1125 656 100 25 101 41 5 193 229 80 164 101 17 116 305 634 845 1042 985 484 226 656 629 349 113 729 650 1105 1525 421 458 4360 6148 3200 505 401 2045 3029 1261 25 225 244 218 173 109 61 53 4 65535 2 65536 0 0 0 0 1 0 0 1 0 4294901760 0 65535 0 0 4294967295 4294901761 65535 4294901760 65536 4294967295 4294901760 65535 0 65535 0 65535 131071 0 65536 0 65535 0 0 65535 4294901760 0 0 65535 65535 0 0 65535 0 65536 0 65535 4294901760 0 4294901760 4294967295 65535 0 4294967295 65536 0 1 4294967295 0 0 4294901760 0 4294901761 65535 65535 4294901760 0 65535 4294901760 65535 65534 0 0 4294901760 0 1 131071 1 0 4294901760 131071 4294901761 0 0 1 4294901760 65535 4294901760 0 0 0 1 4294901760 65537 131071 0 4294967295 0 0 0 4294901760 4294901760 4294901760 0 4294967295 65535 65536 0 65535 65535 4294901760 0 4294967295 0 0 0 0 0 0 0 0 0 0 131071 0 0 65536 0 0 4294967294 4294967295 0 +379965892 393641315 1159491576 957166597 503832049 927595211 532474510 187713079 104200224 118561469 67707142 34565047 9777026 4133484 48683812 120798722 385450809 711914256 1534630396 4247719002 6605796171 3321302572 142909374 46979965 41371797 5428256 2691494 10025124 14492291 23564820 65698922 21418945 +65531 1245167 4292083749 4456306 5046442 11026 7514 6473 16333 37089 21825 17872 67138 252050 433298 577961 998962 930042 437986 193012 100825 47944 25250 15898 10466 5200 4082 1961 10768 18440 10280 1573 128 377 4777 20365 20666 6602 4685 6525 2980 1937 32161 79976 33289 6500 131794 286709 164834 40621 36980 94685 280205 536656 555901 797465 1073416 644338 43298 84501 144482 88514 97165 138692 117181 51058 10585 3485 1768 1105 2113 2560 3528 12985 16757 16762 10477 3650 1717 1445 776 98 261 640 485 121 53 153 221 265 457 461 617 565 1210 5722 17384 33973 43720 43300 30925 14346 9133 18625 36445 46553 42760 21458 5013 4985 10253 20228 24660 12589 1997 164 640 410 3602 4498 1517 144 393222 4294836223 4294967295 65536 0 0 0 65535 65535 0 0 0 0 0 0 0 4294967295 65535 65535 0 4294901760 4294901760 4294901760 0 4294967295 1 4294967295 0 0 131071 0 4294967295 4294901760 4294901760 65535 4294967295 65536 1 4294967295 0 4294967295 0 65534 65536 0 65535 0 0 65535 65536 4294901761 65535 4294901760 4294901760 4294967295 4294901760 4294901760 4294901760 0 0 0 4294967295 65535 4294901760 65535 4294901760 0 0 65535 65535 0 4294901760 4294901760 0 0 4294901760 4294967295 4294901760 65536 4294901760 65536 0 4294836224 0 65535 0 0 0 4294901760 0 4294901760 65535 4294967295 65535 4294901760 65535 65535 65535 131071 0 65535 4294836224 1 0 4294967295 65535 4294901760 0 65535 0 0 4294901760 0 4294901760 0 1 4294967295 4294967295 65535 65535 65535 0 1 0 0 4294967295 1 4294901760 0 0 1 4294901760 0 4294901760 1 +50489734 54067535 148798789 175813464 579095728 2635338393 5990297540 5678906428 1478307664 343315467 105382572 49482409 129459599 24600130 143176782 103624298 239459514 899481722 2054853390 3809893642 10888309912 3282179924 1561099261 146734330 191627892 92045461 8267458 8072209 341897971 726277657 579229412 198148117 +15 262187 4293525506 4283957008 20316483 168257 212098 17905 300557 815812 1603186 2853929 2773890 1852506 2574818 1652625 1651445 1280836 110692 9298 22018 25033 19585 27217 40522 78802 104864 76721 5669 23860 34801 6170 1289 4165 2561 52466 59845 11300 6605 19010 48365 76306 71314 58733 114229 324325 236205 7538 307690 277562 41845 1114 187889 192848 23425 244645 33332 194101 414928 249076 28265 54778 86681 217730 109657 28228 54325 1225 27261 63621 80068 71289 122713 46121 67588 56293 7281 28498 16265 5297 977 3240 1237 1217 2642 3037 2137 901 689 884 1586 5585 9160 9805 30445 63145 21125 51125 13250 143713 194165 32045 4000 32810 61892 4165 13906 6701 14045 6682 4329 47888 75904 8528 25664 37960 14261 9378 28324 19540 8033 5905 4293984291 393205 4294705155 196607 1 65535 0 0 0 0 0 0 0 1 4294967294 0 65535 65535 4294967295 4294901760 4294901760 0 0 0 4294967295 4294967295 65535 0 0 1 65535 0 0 65535 65536 0 0 65535 4294967295 0 4294901761 0 0 65535 0 0 1 4294901760 4294967295 65535 0 0 4294967295 4294967295 4294901760 4294967295 4294967295 65535 65536 0 1 65534 0 4294901760 0 4294901760 0 4294901760 0 0 65535 65535 4294836224 0 4294901760 65535 4294967295 65535 65536 0 4294901760 4294901760 1 1 0 0 0 0 0 0 4294901760 4294901760 4294967295 0 4294901760 4294901760 65535 65535 0 0 0 0 65535 65535 4294967295 131071 65535 65535 4294901761 4294901760 65535 65536 4294901760 65535 0 65536 65535 0 4294901760 0 1 65535 0 0 4294901760 0 65535 4294967295 4294901760 0 65535 65535 65535 4294901760 65535 +1001685788 746379295 3120507595 12674081026 18617495547 16495225865 13783334513 6426636828 258352888 214884363 519203490 732337683 268748585 82861456 353754294 290416683 782930021 2201466361 2794374570 1834726522 2679756280 2930227311 1682665060 942156007 1313576578 347830410 45808259 85053499 964120244 1587740690 542068834 754676225 +65533 4294770690 1900571 4293656496 4278255746 788753 1965625 2071250 1464500 936500 183560 77472 597896 727061 351369 466225 173501 2029 17890 9754 14698 18901 16200 13738 12221 1394 1921 1930 788 362 296 325 26 130 1073 2500 1873 389 205 117 929 288 2512 3573 7274 4517 3989 7642 4001 3517 7880 5725 15205 21809 1105 4868 16 11629 8296 5266 641 14473 14600 1370 2405 1261 13012 14242 89 8865 290 27674 50265 15497 725 5920 3461 1044 820 136 409 980 698 109 32 9 2 4 68 333 481 121 225 104 941 389 2581 8586 13345 11024 3601 100 1945 3221 2417 1125 1025 761 634 1017 2308 3589 2920 1769 205 356 901 673 365 337 229 65 4294770693 4294967291 1 131071 0 0 0 0 65536 65536 65536 0 0 0 0 0 65535 0 0 65537 0 4294967295 4294901760 65536 4294901760 65535 0 1 65535 0 4294901760 4294901760 65535 0 0 4294901760 65535 4294901760 65535 65535 0 1 0 4294967295 1 65535 0 0 65535 65535 0 65535 0 65535 65536 4294901760 4294901760 4294901760 65536 1 4294901760 65536 0 0 0 4294901760 0 0 65535 65535 65535 0 0 65535 4294901760 0 65535 4294901760 1 0 4294967295 0 4294901760 65535 4294901760 0 65535 4294967295 0 4294901760 4294901760 0 4294967295 4294901760 4294901760 131071 4294901760 0 4294901760 0 1 0 65535 4294901760 0 1 65535 65535 4294901760 0 131071 1 65536 4294901760 0 0 131071 65535 65535 0 4294901760 4294901760 0 4294901760 0 65535 1 0 65535 0 65535 0 1 4294901760 65535 +7000714511 12606617750 7670385710 2308146020 3140639338 3977832063 2344885002 274558122 123010642 150749898 91901636 16249429 5981427 2777514 17349644 7798497 17836581 69400993 76902511 155430903 109242398 125647742 118696369 195676485 320175501 29279837 5693732 4665549 80570126 110458961 43238454 33928549 +65533 65537 4294377459 4294508636 851528 885834 1062010 594824 111965 1015085 2840242 3272985 2789282 1183482 114440 479120 878265 479890 110269 20456 10709 18068 34373 15385 2197 3505 6597 4210 1405 680 925 562 185 121 29 82 277 250 305 1930 4498 3538 1017 9225 22032 19433 12125 6154 3649 7825 20660 29090 17505 4525 16970 28730 49250 62309 39965 20032 13841 37672 46708 19450 18013 37376 44980 41672 30505 18265 20077 5573 19098 76081 62917 26073 10834 5200 1780 530 85 82 74 461 306 130 50 40 53 148 157 356 450 349 1952 3161 1928 180 65 20 305 221 2 8 41 29 50 58 34 41 25 137 65 68 205 292 160 104 13 53 333 349 262155 4294901755 4294901760 65536 0 0 0 0 65535 0 0 0 0 0 65536 0 0 4294901760 4294967295 4294901760 0 0 65535 0 4294901760 65535 0 0 65535 65535 4294967295 65535 0 0 131071 0 4294836225 0 65535 4294967295 1 0 65535 4294901760 0 0 4294901760 4294901760 4294901760 1 4294901760 4294967295 4294901760 4294967295 65536 0 0 0 0 0 65535 4294967295 65536 65535 4294901760 65535 0 65535 65535 4294967295 4294967295 4294901760 4294967295 0 1 65535 65535 4294901760 0 65535 0 4294901761 65536 65535 0 4294901760 65535 131071 65535 65535 4294901760 4294901760 4294967295 0 1 65535 4294901760 0 0 65535 4294901760 65535 65536 4294967295 0 4294967295 0 4294967295 0 65535 0 4294901761 0 4294967295 0 4294967295 4294901760 4294901760 4294901760 0 65535 4294901760 4294901760 4294901761 0 0 65535 0 1 4294901760 0 65536 4294901760 0 1 +5143990038 4153995263 3359220824 18692424053 18853862091 5915158204 4611446955 2935754086 246522545 212786044 73487302 43412398 12454365 3913636 1507440 11968048 52157752 201422122 143619492 274890780 551805067 557731578 571234780 528233559 720591179 144674549 4367463 5183587 29278078 4504694 1329919 3945004 +0 131071 917487 589793 9109705 172241 95621 5972 11738 587401 1913290 1226285 123560 31412 250256 905346 740480 128260 3920 11041 16237 8865 1665 1418 200 692 1160 549 425 565 788 272 16 13 50 53 104 49 10 925 3757 4369 1945 1810 2545 538 200 89 1348 5581 20225 23953 6305 3341 10778 7225 8825 4160 19610 45658 104897 121178 42426 9026 17972 12557 1685 229 2516 14125 29306 45442 38317 28240 37845 21506 2216 522 205 241 522 296 104 41 125 104 29 10 10 37 65 117 281 701 1889 1346 116 125 65 149 293 137 25 1 2 0 1 17 10 4 20 4 10 9 2 25 58 122 130 52 145 185 4294770695 4294901759 65535 65536 0 0 0 0 0 0 0 0 0 0 4294967295 0 0 4294901760 65535 0 0 131071 4294901760 0 4294901760 0 65535 4294901760 0 0 0 65535 4294967295 0 4294901760 65534 65535 4294901760 65535 4294901760 0 65535 1 65536 0 0 4294901760 0 65535 0 4294901760 4294901760 4294901760 0 4294901760 0 4294901760 4294901760 0 4294967295 0 0 0 0 1 0 0 0 65535 0 0 4294836224 4294901760 65535 65535 4294901760 65535 4294901760 0 1 4294901760 4294901760 4294967295 0 0 0 0 0 0 0 65536 0 65535 65536 0 0 1 0 4294901760 65536 65536 0 0 4294901760 65535 65535 4294967295 0 4294901761 131071 0 65535 65535 65535 1 0 65535 0 0 65535 0 4294901760 4294967295 0 0 0 1 4294967295 0 0 65535 4294901760 131071 4294901761 0 +737086475 199117112 1670438004 10741692241 3356388559 1768674154 5397602132 1312352655 102546050 47396047 7471078 7495982 6128779 2005378 658898 6712874 38438122 20278300 62843068 194318965 151369486 988510650 493465296 270768194 581474146 75460711 2947419 3483859 16066288 2640964 220569 1229451 +0 4294901761 4294705158 1638448 4279500705 142948 69433 13345 68274 996397 1763138 749842 73156 88488 1172434 2158025 731825 12538 12308 28421 28170 8177 818 829 1424 890 61 18 346 1549 1625 296 13 45 104 45 74 4 482 2061 1850 493 485 2500 2482 650 181 657 5825 14004 10225 2917 1181 12013 12461 6868 4672 5924 79313 223760 163453 20205 5185 13250 2258 2642 2257 5584 22045 32045 13933 3204 18665 17060 7225 3034 200 2650 4337 2180 586 85 25 29 37 89 68 53 20 1 20 49 197 612 1165 650 10 625 544 325 113 10 17 2 0 2 2 16 25 10 4 9 10 26 5 17 50 97 97 100 104 50 65536 4294836224 0 1 0 0 0 0 1 0 0 0 0 0 0 4294901760 4294967295 65535 0 0 0 65535 65535 65535 0 4294901760 4294901760 65535 0 0 65535 0 0 4294901760 4294901760 65536 0 4294967295 0 65535 65536 65535 0 4294901760 65536 4294967295 65535 0 0 4294901760 4294967295 0 4294901760 4294901760 0 4294967295 0 4294901759 4294967295 4294967295 0 0 4294901760 0 0 65535 4294901760 4294901760 65535 4294967295 65535 65536 65535 4294901760 4294967295 1 4294901760 0 65535 0 4294967295 0 0 0 4294967295 0 4294901760 65536 0 4294901760 65535 4294967295 4294967295 4294901760 65535 65536 65535 0 65535 0 0 65535 0 4294901760 65535 0 1 0 65535 4294901760 65536 0 0 4294901760 4294901760 4294901760 65535 65535 4294901760 65535 0 4294901760 0 65535 0 4294967295 4294901760 1 4294967295 4294901760 4294967295 4294967295 0 0 0 +588176485 240583144 2884339303 9933891889 2127262302 5893697049 10187731939 970843117 202938032 52048018 10182704 2505728 11710226 3340048 743403 8872557 16728611 19896564 79197341 110845859 308742005 1700737148 216131009 279268534 212892002 46221585 3472275 2484835 12199449 3552489 276650 1095028 +0 4294901760 196605 4292804546 13631555 68884 10609 10394 257009 1233873 1149257 130562 4625 614344 2946890 2537905 438874 38705 28562 45473 5300 2941 4073 3250 4469 1306 117 800 1348 1025 289 9 106 116 100 34 41 365 785 340 409 457 2405 3060 829 613 1588 5634 5002 625 1553 3202 7289 3880 509 8145 35033 77401 81800 76829 13284 13505 29449 7124 793 10685 20905 12260 6761 2957 629 8677 10001 11498 27625 32521 26384 7146 400 305 185 212 162 25 45 20 5 61 72 205 290 205 481 722 1313 1989 809 265 97 29 89 50 26 34 16 32 36 13 1 2 2 5 17 65 106 68 10 37 113 116 104 29 4294967295 196611 4294901760 0 0 0 0 0 0 0 65535 0 0 0 0 4294901760 4294901760 0 0 0 4294967295 131071 4294901760 1 0 0 0 0 4294901760 4294967295 0 65535 65536 0 65536 0 0 0 4294967295 65535 65536 65535 0 4294901760 65535 0 0 4294901760 4294967295 65535 65535 65535 4294901760 0 0 65535 0 0 0 4294901760 0 4294901760 4294967295 4294967295 0 65534 0 0 4294901760 4294967295 4294901760 4294901760 0 0 4294901760 1 0 0 0 65535 0 4294901760 0 4294901760 65535 65535 0 0 0 4294901760 0 0 0 0 65535 4294967295 65535 65535 65535 0 0 0 65535 0 65535 0 0 0 4294967295 65536 65535 0 65536 4294901760 0 4294901761 65536 0 0 0 4294901760 0 0 4294901760 4294901760 4294901760 0 0 65535 0 65536 65535 65535 1 0 +229209565 325939649 4026845668 6746593896 1062037748 13185922822 12366346307 774579081 193349694 34146309 30290866 7585986 8640955 1200927 1094759 5399523 14986773 24429908 46767311 55975549 488988572 797725628 217726324 154908948 324268385 165305048 1940927 5406041 19815318 2349459 458869 1565114 +2 196608 4294574084 1572930 4284022686 46817 39850 7013 264953 1116002 741569 82548 109125 1580756 3388549 1536041 49129 49490 96570 92945 21929 1369 577 7065 6922 1481 193 1285 685 125 101 9 40 20 13 29 193 265 234 81 205 1961 2257 850 145 1322 2980 2210 522 1796 5576 4325 1773 757 7056 20629 15817 1297 7690 34690 62005 34660 6416 8276 22772 12850 3562 461 464 2624 5122 4176 13448 42698 68581 44890 13192 544 360 272 10 122 208 65 29 205 257 116 72 8 106 400 937 1522 848 580 569 229 73 41 2 4 1 2 1 0 4 9 4 4 4 5 10 34 65 20 4 41 68 9 4 36 4294705150 131070 0 0 0 0 0 0 0 65536 0 0 0 4294901761 0 65536 4294901760 65535 0 65535 65535 65535 0 0 65536 0 0 4294901760 65535 0 0 0 0 65536 0 65535 65536 65535 1 1 4294901760 0 65537 4294901760 0 0 0 1 0 0 65535 0 65535 4294901760 0 65535 0 1 0 65535 4294901760 65536 65536 0 4294901760 65535 0 65535 0 0 4294901760 4294901760 4294901760 0 0 0 4294901760 131071 65535 1 65536 0 65535 4294901761 0 4294967295 65536 4294901761 65535 0 65535 4294901760 4294967295 65535 65535 0 0 0 4294901760 4294901760 4294901760 4294901760 4294967295 65535 65535 4294967295 0 0 0 4294901760 0 65535 4294901760 0 65535 4294967295 65535 0 4294967295 65535 0 0 4294901760 1 65535 0 65536 4294901761 4294901760 0 0 65535 4294967295 4294901760 0 +233236004 372059747 3720635405 4840014083 2474879002 16484548283 8507153627 598495833 467734248 39243814 47455426 8430192 3392392 377981 875318 2484565 15845558 18176914 32061401 56747499 180709466 485218951 266196081 74416012 596128810 163535924 2834952 6989193 14972360 1155977 156099 770625 +65534 4294639618 4294574080 1900468 4456617 25810 4068 25493 556177 1292776 590980 72041 348242 1676333 1656493 551753 60112 34514 85985 22417 5018 4240 4849 2437 369 296 730 3748 3370 802 117 41 20 4 18 65 146 50 136 685 1268 596 265 125 522 821 673 848 1637 4930 2909 229 641 3298 4234 2637 1961 11185 47912 46202 15509 6889 16130 26309 9893 3600 2801 3370 949 185 580 16144 42170 35050 10804 361 2141 130 225 26 64 125 41 53 128 29 61 169 41 136 226 233 173 592 1082 772 377 146 50 17 2 1 5 13 26 25 37 40 58 13 5 25 25 45 25 9 36 52 73 45 17 25 131072 4294967295 0 0 0 0 0 1 0 0 0 0 65536 65536 0 4294967295 4294901760 4294967295 4294901760 0 65535 4294901760 4294901760 4294967295 0 0 0 65535 4294901760 0 4294967295 0 0 0 0 0 65536 65535 0 65536 4294901760 65536 0 4294967295 4294901760 65535 0 65535 0 0 65535 4294967295 4294901760 4294901760 4294967295 0 65535 0 0 4294901760 0 1 0 0 0 65535 0 4294967295 0 65535 65535 0 4294901760 0 0 65534 0 4294836224 0 0 0 4294967295 4294967295 65535 65535 0 0 0 65535 0 0 0 4294901760 4294901760 65535 4294901760 131071 0 4294901760 0 65535 65535 4294901760 0 0 4294901761 4294967295 65535 65536 0 4294901760 65535 0 4294901760 4294901760 0 0 4294967295 0 65535 0 4294901760 0 0 4294901760 4294967295 4294967295 65536 65536 0 4294901760 4294901760 4294967295 4294967294 0 +86102584 683952431 5058673659 4485649816 3398580433 10669113701 3640325282 460145399 188133655 38263437 10525838 21231016 14400343 382117 684420 3970897 8388937 7420156 28785401 32618490 145087960 437388717 207952119 94581602 357456624 16216644 1674104 4431907 11204280 957639 802073 918059 +6 327688 1769458 4282515535 11402947 85924 5125 310577 2416180 3073025 495760 589018 3326836 4537657 1033570 36260 18065 321626 272578 53429 4580 8226 10685 5620 1154 3357 9316 5812 257 1018 577 320 261 74 149 356 144 4 281 1618 1570 122 772 1585 441 241 1933 9113 18773 11821 1465 2304 1381 800 6473 19042 63117 100922 24746 18365 61417 54308 20281 19730 29125 22804 11257 1521 5765 4612 5021 32481 44434 20749 25480 11601 2293 1105 392 221 233 65 1 9 85 272 505 577 185 121 130 73 146 1082 1490 109 193 100 405 265 137 65 58 25 50 25 100 256 73 40 37 58 145 162 274 450 346 9 200 613 701 337 131079 4294901760 0 0 0 0 0 0 1 0 0 0 65535 4294901760 65535 0 4294901760 0 65535 0 4294901760 0 65536 4294967295 65535 4294967295 1 0 65536 4294967295 1 0 65536 0 0 0 0 4294901760 0 4294901760 1 4294901761 0 65535 0 4294967295 4294901761 4294967295 4294967295 4294901760 65535 65535 65535 0 65535 0 0 4294901760 65535 0 4294901760 65536 0 0 0 0 0 0 0 131071 0 0 65536 65535 4294967295 1 4294901760 0 65535 0 0 0 65535 65535 4294901760 4294967295 4294901760 65535 65535 1 0 4294967295 0 65535 0 0 4294901760 4294901760 4294901760 0 0 4294967295 4294901761 4294901760 0 0 65536 4294901761 4294901760 0 4294901760 1 65535 4294967295 65535 0 0 4294901761 0 4294901760 4294967295 65534 4294967295 1 65535 0 0 4294967295 0 4294901760 65537 4294967295 65535 4294901760 0 +266668513 3691427534 15395423891 7727109635 18438751400 18369169795 1496098715 1922356437 498670390 76025345 38520614 55382555 11059903 3032946 2294403 7035791 12546931 18996261 139567595 56779285 586886672 753999916 441184194 209198221 432436195 51134093 3818838 7142961 11417811 3240013 2520203 7044858 +65533 196593 4294639588 11927709 4265541550 136484 44852 565417 2545877 2637473 509834 663272 4704386 5246554 1440698 104245 98489 41465 29002 56074 5330 6602 5517 1538 3085 1165 610 1570 634 244 650 778 221 1 85 178 104 290 490 481 545 50 1537 2578 936 113 1193 1090 640 305 4181 5840 3042 738 2205 7154 2993 1908 25621 78440 95300 64040 16865 21289 30664 7108 397 7801 12653 14845 14005 5760 32909 45266 19562 1445 433 149 40 9 65 73 4 20 74 25 18 4 45 181 241 90 25 153 533 772 260 45 373 554 221 9 25 17 37 122 164 185 100 41 16 4 9 4 4 13 74 89 5 2 18 29 4294639618 4294967293 65537 0 0 0 0 0 0 0 0 0 0 0 65535 1 65536 0 0 0 0 0 0 0 4294901760 4294967295 0 0 0 0 0 0 0 0 4294901760 0 0 65535 4294901760 65535 1 0 0 0 65535 65536 1 65535 65537 65535 0 0 65535 0 0 4294967295 65535 4294901760 4294967295 4294967295 4294901760 4294901760 65535 4294901760 0 0 1 0 4294901760 0 0 131071 65535 65535 4294901760 65535 0 0 0 4294901760 65535 0 65535 0 4294901760 4294967295 131071 4294901760 4294901760 65535 4294901760 0 4294901760 4294901760 4294901760 0 0 4294967295 0 0 0 4294901760 4294967295 65535 1 4294901760 4294967295 0 0 1 65535 4294901760 4294967295 0 65535 4294901760 4294967295 65535 4294901760 1 4294901760 0 1 65537 65535 4294967295 0 4294901760 4294901760 0 0 0 0 1 65535 +510699404 4841596267 14772517623 7246185629 24267853064 22574962093 2117596970 393222986 231544386 46108194 21699402 10161343 6388452 4063825 1480860 4735985 10925705 16215577 18467886 50175417 117189975 905474412 419407332 217074536 403021886 19882058 775532 2591199 8345167 4105573 2208603 701925 +65530 65537 4291297277 8650556 9240936 79668 175508 1339133 3204925 1735445 392050 2646344 4728992 1264964 5245 59890 73250 97936 53224 10585 2745 2888 1730 2450 1962 360 674 202 74 61 10 58 104 106 8 136 234 293 509 785 1717 3065 2801 1009 98 113 290 954 1832 3770 1928 337 709 250 397 2465 4045 4050 3482 5968 4073 12970 38048 71761 93466 43237 20360 7501 3986 8264 9364 19890 22181 3856 7250 5722 2813 625 137 85 2 146 328 202 116 40 45 53 85 226 520 450 226 346 884 605 32 53 61 82 10 25 53 45 45 26 17 25 25 73 26 4 4 17 34 13 9 18 2 5 20 17 131072 4294901761 0 0 0 1 0 0 65536 0 0 0 0 0 0 0 0 0 0 0 65535 4294901760 0 0 0 4294967295 0 4294967295 65535 65535 65535 0 65535 0 0 65535 0 65535 131071 1 131071 4294967295 4294901760 65537 4294967295 65535 0 0 131071 0 4294967295 0 0 65535 4294901760 65535 0 1 0 0 0 4294901760 0 65536 4294901760 65536 4294901760 65535 65535 65535 4294901760 0 65535 0 0 65535 4294901760 0 4294901760 4294967295 65536 0 0 0 0 0 4294901760 4294967295 65535 0 4294967295 4294901761 0 4294967295 4294901760 4294901760 4294901760 0 65535 65535 65535 4294901760 0 65535 0 65535 65535 4294901760 4294901760 0 0 0 0 65535 0 65535 0 65536 0 4294901760 4294967295 0 65535 0 0 0 4294901760 4294901760 65536 4294901760 4294967295 0 65535 4294967295 0 +652457100 8628642947 14757055619 8841174305 24237892960 6610685245 493631450 571414491 105514170 21432075 15554668 3558877 668914 839542 1533633 7037972 27708223 9256703 23851076 16580191 41757120 197930080 898068540 261650776 197017328 25353992 2933924 5856325 8516081 1137938 820737 476529 +0 4294049804 1638436 4283498390 17825836 36482 137482 1758721 3013972 1314532 725138 2806301 4445689 1804897 119645 10585 41225 43325 14624 810 197 1877 3400 2756 845 442 725 445 65 34 58 20 10 25 68 20 5 41 49 5 125 377 306 122 585 698 296 256 1145 2017 2473 1361 317 218 650 2561 6885 11700 15545 20096 17289 4625 1949 8177 51401 82025 70916 50473 33640 11449 25 6565 15178 16994 10309 4090 2705 697 461 605 346 212 65 5 13 61 100 109 202 365 477 425 377 949 1346 1114 709 340 221 37 9 1 5 10 5 8 25 45 68 74 50 29 34 26 9 26 82 80 53 1 20 26 2 0 1 0 0 0 0 0 0 0 0 0 0 4294901761 0 0 0 4294901760 65535 0 0 0 65535 4294901760 0 131071 0 4294967295 4294901760 0 65535 0 4294901760 0 131071 0 0 0 4294967295 1 65535 65535 65536 0 4294901760 65535 0 0 4294901760 0 65535 4294901760 65535 0 0 4294967295 1 0 4294901760 0 0 65535 4294901761 0 4294901760 4294901760 0 0 131071 65536 0 0 0 4294901760 0 0 0 65535 0 4294967295 0 65535 65535 4294901760 4294901760 65535 4294901760 4294901760 0 0 0 65535 0 4294901760 0 0 0 4294901760 0 1 0 65535 4294901760 65535 65535 4294967295 0 0 4294967295 65534 4294901760 0 4294901760 65535 4294901760 0 1 0 1 0 4294967295 0 0 65536 0 65535 65535 4294967295 65535 4294901760 65536 65535 4294967295 4294967295 0 +434304470 9920745040 13278495955 9817093234 24275996903 8307106192 312741830 232835386 22204618 22902495 12823996 4640824 813457 300122 381160 477293 3017640 6064145 16195485 17885065 92506863 222810473 693624334 602409633 190105119 28851156 2393151 8159542 17396328 1891183 1048006 1131508 +8 524285 9895896 4270195143 3931190 521050 344525 4615033 5651218 2000960 1023460 1035908 1288125 1318228 839060 260000 24916 22634 15613 6065 9242 8480 4689 4570 1321 148 433 1717 1856 625 4 90 45 10 53 185 122 25 225 170 202 74 306 829 522 850 1861 232 442 585 925 277 200 389 842 256 1037 461 1013 5018 2088 6170 11285 23432 33785 13033 9810 32789 83609 98932 35437 1985 185 1418 7769 5458 1828 1145 244 106 281 288 305 424 404 80 34 25 74 241 173 130 89 325 245 52 45 180 170 61 32 53 29 5 0 2 2 1 20 17 10 65 40 53 65 100 117 29 125 128 45 41 4294836226 4294901760 65535 0 0 0 0 0 0 0 0 0 0 0 4294901760 4294967295 65535 0 65535 1 0 0 65535 0 0 65535 65535 0 65535 0 0 0 1 131071 4294901761 0 65535 4294901760 65535 65535 4294901760 0 4294901760 65536 0 4294967295 131071 131071 4294901760 65535 4294901760 0 0 4294967295 65536 4294901760 0 0 4294901760 4294901760 0 4294901760 0 0 4294901760 0 65535 4294901760 4294901760 4294901760 4294901760 4294901760 1 0 4294901760 4294901760 4294901760 0 1 4294901760 65535 4294901761 0 4294901760 4294901760 0 0 65535 4294967295 0 4294901760 0 4294967295 65535 65535 0 65535 0 0 65535 0 1 65535 4294967295 4294967295 4294901760 65535 0 0 65535 65535 0 4294967295 0 65535 65536 65537 0 65536 4294901760 4294901760 65535 4294967295 0 65536 0 65535 0 4294901760 0 65535 4294901760 0 4294967295 0 +2360907925 23641099792 24190479903 8989470020 8514477146 7420507469 1770403678 154991439 77470283 57133060 18375458 10645259 8301376 511665 1171654 1838584 3423538 11181629 10284332 7209387 12047105 79752205 362456965 901653550 171681651 26149641 5558929 3296404 3567963 1280080 439503 2015916 +65522 6356955 4285202157 64488262 4172218254 685474 1234692 4451872 3511885 1719952 368744 1007812 982906 341332 116849 218437 167081 100 38153 25480 9026 6404 13573 11072 4292 1088 1465 441 674 2372 1053 61 157 272 522 1025 205 369 425 260 2500 1609 5 1525 1616 1300 5881 14004 18089 13625 8389 4082 1028 394 2250 5536 3474 5832 31709 71474 76330 38210 5161 5429 22093 12416 6724 10996 41242 60353 11680 1700 4562 4442 4861 2097 146 1172 1234 1261 2050 1042 89 32 65 194 410 580 365 340 377 482 841 193 200 362 90 16 53 265 314 53 122 85 100 148 64 68 58 34 106 32 212 425 397 194 13 80 250 148 41 4 4294901759 262143 4294901761 65535 0 0 0 0 0 0 0 0 0 1 0 4294901760 0 0 1 4294901760 0 0 4294901760 65535 4294901760 65535 0 0 65536 4294901760 65535 4294901761 4294901760 65535 4294901760 4294967295 4294901760 0 65535 0 0 4294967295 4294901760 65535 65535 4294901760 4294901760 0 4294901760 0 1 65535 4294967295 0 1 4294967295 0 65535 65535 65535 65535 1 4294901760 4294967295 65536 4294901761 0 0 0 65535 65535 131071 4294901760 0 0 4294901761 65535 0 65536 4294901760 4294901761 0 0 65536 4294967294 0 1 0 0 0 0 4294901760 0 0 0 65535 0 0 4294901760 0 65536 0 131071 1 0 65536 0 65535 0 4294901761 0 0 131071 4294901760 65535 0 0 0 65537 65535 4294901760 65535 4294901760 65535 65535 4294901760 65535 0 0 65535 4294967295 4294901760 1 4294967295 0 +4960298104 22328432083 16843586488 5872508968 6210088640 2146584904 1299267949 336760434 159261111 95975655 52071342 9469394 14208987 3370166 6696095 6916563 17041752 37625449 178646601 71244711 125940835 741172861 290740088 471878356 115904649 27906931 9524357 9782136 6484974 3475139 2605818 5507266 +12 4290510856 4271636369 79756588 4260824948 1452685 88650 802530 429458 160901 54333 448645 1545424 1195501 406145 301652 230096 33524 793 1165 5266 6929 5832 8164 4496 1745 2890 482 1480 1937 832 153 50 293 757 1154 610 1360 3026 2257 401 313 1690 745 765 2106 193 941 841 85 97 1549 3172 1250 733 656 1301 6074 15538 16180 14533 2132 8069 19337 8281 3650 8885 19805 49130 56093 15241 130 865 1090 1154 4148 3125 244 1850 3145 1637 153 53 122 137 410 617 845 1445 1885 1768 1114 277 162 1025 970 265 250 810 1061 338 125 178 52 8 61 85 26 17 4 25 113 52 53 49 9 5 61 26 2 10 89 4294574086 262141 4294901760 65536 4294901760 0 0 0 65536 0 65536 0 0 0 0 0 4294901760 65535 65535 0 0 0 65535 65535 0 0 4294901760 65535 0 4294901760 0 4294967295 0 0 4294901760 65536 0 0 0 65535 4294967295 4294967295 4294967295 65536 0 65535 1 0 0 4294901760 0 65535 0 65535 0 65535 0 4294901761 0 0 4294901760 0 65535 1 0 0 4294901760 4294967295 65535 1 0 0 4294901760 0 4294901761 0 65535 1 0 0 0 0 0 0 4294901760 0 4294967295 0 65535 0 0 65536 4294901760 0 0 4294901760 0 0 0 0 4294901761 0 4294967295 65535 65534 0 0 65535 4294967295 1 4294901760 4294901760 65535 65535 65535 4294967295 4294901760 0 0 65535 0 65535 0 0 131071 4294901760 65535 4294967295 0 4294901760 131071 4294901761 65535 4294901760 0 +4513219420 3581289186 2032493116 1245889388 7880899241 5927486252 2069957980 383788919 30756951 60584197 45678440 16577108 13948981 3196244 9749280 22907599 13314734 15141562 9734323 21475900 55257346 195892955 191813710 507652966 86369699 38652965 10923132 26823590 16256703 7986545 1208121 1088002 +65518 4292739084 4286710136 4268227305 100402084 1213136 774400 3558785 3563856 1119425 345512 176346 79865 352397 558610 392516 95720 5986 28836 7993 680 3425 3505 842 265 1040 6610 5417 1225 521 221 306 205 137 104 74 445 653 481 100 200 37 1186 2561 1700 964 400 25 26 45 409 250 288 1490 1300 797 793 2161 2173 481 397 6050 10485 7610 3074 1960 9256 22093 12610 3330 1745 4957 8929 3785 1042 2045 1186 778 49 505 52 100 109 40 232 261 10 409 810 580 80 80 17 100 65 29 212 292 180 208 29 225 197 40 1 10 16 18 10 0 25 65 18 4 1 4 5 41 145 180 241 100 4294574081 4294967295 65534 1 0 65535 0 0 0 0 0 0 1 0 0 0 0 65535 0 0 65535 1 0 65535 65535 0 65535 4294901760 0 4294901760 65536 4294967295 0 0 4294967295 0 131071 65535 0 4294901760 4294901760 0 65535 4294901760 4294967295 4294901761 4294967295 4294901760 65535 4294901760 4294967295 4294901760 4294901760 65535 0 4294901760 0 1 4294901760 0 0 0 65535 65536 4294901760 0 0 0 0 4294901760 0 65536 0 65536 4294836224 65535 65535 0 0 4294901760 65535 0 131071 0 65535 0 4294901760 4294901760 4294901760 4294967295 0 0 65535 65535 65536 4294967295 0 4294967295 0 65535 4294901761 65536 1 0 65534 0 1 65536 0 0 65535 65535 65535 131071 0 4294901760 65535 0 0 0 1 0 0 131071 4294901760 4294901760 4294901760 65537 4294901760 65535 0 0 65535 0 0 +5430960032 18275083952 15118657235 3412749563 1117285414 3148804700 2098188826 226058619 64045356 24328113 12833562 43246712 10106915 2396236 2500634 5144562 8400664 18862668 2806171 8606983 20298825 50751969 125447823 169402516 71788537 11866110 3912105 7332435 2977944 3408669 581674 1180421 +19 4294443006 18284873 4205707085 88079443 688194 775112 5132905 7042192 1944801 60898 62497 305245 583840 744488 590564 73800 25065 33745 3530 14785 26669 15597 218 9412 32957 30420 18450 26585 25181 14330 4633 865 1573 6625 14093 28121 37549 30893 28665 54650 92381 88850 70820 69085 62442 52553 33178 13940 3546 533 445 5629 5450 800 1000 15220 30290 39469 82490 112545 96545 94888 110800 97876 72229 46561 55305 68753 53945 36946 16160 11493 22100 20961 13085 8584 4901 2080 1250 873 1746 5330 10804 19181 32330 37141 39409 38441 32360 26965 20313 10768 5249 2080 872 962 884 1076 1352 1997 1796 1181 1193 1709 2097 2336 2465 2216 1682 1405 466 25 90 394 653 1124 1514 1097 980 890 557 4294049807 655343 4294639625 131069 1 65536 0 0 0 0 0 4294901760 4294967295 65535 65536 4294901760 0 0 65534 4294901760 0 4294901760 0 65535 0 0 0 4294901760 4294901760 0 4294967295 0 4294901760 4294967295 4294901760 65536 4294901760 65535 0 65535 0 0 4294901760 65535 0 4294901760 4294967295 0 0 65535 0 4294967295 0 65536 4294901760 65535 65536 4294967295 0 4294901761 0 65535 0 65535 0 4294967295 4294901760 65536 0 4294901760 65535 0 65535 0 0 4294901760 4294901760 0 0 65535 65536 0 0 4294967295 0 0 65536 4294901760 0 65537 65535 4294901760 4294901760 4294967295 4294967295 65536 4294901760 4294901760 4294967295 4294901760 0 4294901761 1 65536 0 65535 1 4294901760 4294901760 0 4294901760 0 4294901760 4294901760 1 4294901760 4294901760 4294901760 0 4294901760 0 0 4294967295 0 65535 0 65535 0 0 4294901760 65536 0 1 65535 1 +3877771404 27761261248 28420992863 3331593153 1913040185 4709950193 2868691697 271794680 132554333 144464631 154168886 261686856 220920674 46414061 173845813 418420153 944901890 922766313 342868780 46615762 229212299 1344441985 1587270522 957735796 375938118 101153278 388529117 661581116 109769948 39880357 46054200 21636483 +65506 3997721 17039298 4257940410 4269210276 872426 1144841 4063940 3608456 498653 262928 29306 426805 774458 605173 532225 411025 292900 145928 54125 20434 55481 217600 373572 277405 46642 19469 71080 80225 59809 10249 10985 58537 112921 102397 43825 151650 276130 180392 108788 199546 271970 154085 42580 10090 124765 108266 10772 14020 35269 24697 18661 27674 17289 593 10440 29321 18484 57329 100445 35338 1664 47653 140962 78625 18805 5512 5328 17972 20772 3373 17748 30445 1385 6805 3368 2312 3284 50 937 1429 746 3757 8450 12778 9077 22906 27476 15476 15570 15877 11026 1764 2813 6292 5993 6497 2344 90 1224 388 196 305 377 1625 4160 2372 400 5300 5965 1341 674 4693 7065 5248 1193 392 1850 1201 200 16 169 65559 4293853177 262138 196608 0 0 0 0 0 0 0 0 0 65535 0 4294901760 4294901760 131071 0 1 0 0 4294901760 4294967295 65535 131071 0 65535 0 0 0 4294967295 4294901760 0 4294836224 0 0 0 0 0 0 4294967295 4294901760 65536 0 65535 4294901760 65536 65536 4294836224 65535 0 0 4294901760 0 4294901760 4294901760 65535 0 4294901760 65535 0 65535 65535 0 4294901760 4294967295 0 0 4294901760 0 0 0 4294901760 0 4294901761 4294901760 4294967295 4294901760 4294901760 4294901760 0 65536 0 4294901761 65535 0 4294967295 0 4294836224 4294967295 65535 4294901760 4294901760 4294901760 65535 4294901760 4294967295 65535 4294901760 65535 4294901760 0 4294901760 0 4294967295 65535 4294967295 65535 0 65535 0 4294967295 0 4294901760 65535 0 0 65535 0 0 0 65535 4294901760 4294901760 65535 4294967295 4294901761 4294901760 65535 65535 65536 4294901760 65535 0 +5300833505 20834814914 13850962448 1873767095 2487756376 4852873681 3755876693 1919366017 472353020 1689400436 2171894156 520817680 521459944 636950352 1290266840 2313635491 2401912814 1031627313 576525002 328303210 349755481 879293011 1002416987 276910370 201658232 41836064 219476277 344242602 115666562 29492736 80824852 79723660 +65535 2031617 1965652 39977989 4219403607 492985 139124 3395188 5671954 1547001 113005 2091050 3365588 1223965 27290 51641 39385 35865 12869 11285 1205 2888 93904 285673 245506 90593 20813 1962 1640 10090 4721 3133 8537 11349 31601 98612 109012 2285 43650 39617 83098 113941 55970 42281 51701 22945 2925 25552 8116 389 2986 11713 19585 15689 25625 20557 1313 5365 17450 25604 21881 18512 20506 5354 8784 14305 6569 500 2152 6689 24625 40400 23200 7753 1865 2088 5869 6370 10900 20529 25000 16298 5300 612 1213 1090 305 2320 1801 586 1525 2313 7141 12778 6698 5249 14794 19889 10961 3789 2250 2682 2554 1642 1549 3977 5261 1097 250 689 212 2570 2746 697 692 397 205 197 197 218 212 333 1376259 4294115331 131070 0 1 0 4294901760 0 0 0 0 65535 1 65535 65535 0 0 0 4294901760 65535 0 0 4294901761 0 4294967295 1 4294901760 4294901760 0 0 0 65535 0 65537 131071 0 0 0 0 4294901760 0 65535 4294901760 0 0 4294901760 4294967295 0 4294901760 0 4294967295 65535 4294901760 4294901760 65535 65535 0 65535 0 0 65535 65535 4294901760 0 65535 65535 4294901760 4294901760 4294901760 0 0 0 4294901761 0 4294967295 0 0 4294901759 0 65535 0 0 0 0 65535 65535 4294836224 0 0 131071 4294901760 4294901760 4294901760 0 65535 4294901760 0 0 0 0 0 1 4294901760 65535 4294967295 0 65535 65535 0 4294901760 0 4294901760 4294901760 4294901761 65535 0 0 0 0 65535 65535 0 4294901760 65535 0 0 0 4294901760 4294836224 0 0 131072 0 0 1 +1790362822 18781045222 22562441690 6462182676 18128068448 5722057826 337490186 211995011 57085265 911404786 1903408596 221072138 61751041 105471168 731224461 595365388 1005357000 509110744 153303799 200052245 238443672 313109719 200258089 219562319 270700173 252786165 120989451 62254235 230127733 122118288 50809354 22421756 +22 262117 4284088166 45088860 4250272187 175005 228085 2657538 3747565 838273 367056 1554346 867389 51156 27028 29312 9616 1025 9704 9092 4900 873 1033 2074 3589 1514 533 394 1417 3860 4330 1237 29 514 1530 5641 6885 5249 11941 5696 505 4365 325 1017 724 1637 4264 15149 17026 12200 8066 3469 2305 2834 3285 1594 2777 2621 1025 712 160 61 1629 2437 101 1921 3349 1522 1040 90 1985 3368 1117 178 424 641 196 128 500 530 505 325 445 1850 1825 1130 709 562 145 145 1037 3368 1989 100 1480 529 853 1874 360 49 34 37 200 229 226 17 325 520 218 89 34 1 72 197 85 17 16 45 181 370 401 80 262144 5 4294901759 0 0 0 0 0 0 0 0 4294901760 0 0 65535 0 65535 4294901760 4294901760 0 4294901760 4294901760 4294967295 0 4294901760 0 0 0 65535 4294901761 4294967295 65535 65535 0 65535 0 4294901761 65535 65535 4294901761 0 65535 4294901760 0 65535 0 1 65536 1 4294901760 0 0 65535 0 65535 65535 4294901760 65537 65535 4294901760 65535 65536 65537 0 0 0 0 4294901760 65535 65535 0 4294901760 4294967295 65535 65536 0 65535 0 65536 4294967295 4294967295 65537 0 65536 1 4294901761 4294901760 65535 4294901760 65537 0 65535 4294901760 65535 4294967295 4294901760 4294901760 0 65535 4294967295 4294901760 1 1 0 4294967295 4294901760 0 4294836224 4294967295 4294901760 4294901760 0 0 4294901761 0 0 0 0 0 65535 0 65535 0 4294901760 4294901760 0 65535 1 0 4294901760 4294967295 65536 4294901760 4294967295 0 +1059610515 14181243981 14613972842 5466826627 6745692396 786391149 149453393 52667898 55887880 14781041 23641746 8487401 32135496 12305835 46806769 89831400 35767578 32578157 170740089 76209230 38636763 16857759 27269618 30040677 18816332 8955638 22591373 23437362 26077341 6967113 5358029 2881430 +65528 458758 4275044451 41155941 4283565078 435821 955732 6343605 10779485 4085780 211322 2752672 2415305 446548 32000 49716 43664 1450 5122 7978 5850 1940 1105 442 221 521 100 725 601 181 2713 2314 221 64 90 1873 5620 7465 4493 89 1874 2512 1594 5161 5473 2522 3625 18596 25538 10634 1202 61 410 1170 2617 3890 3161 1117 169 442 100 10 1088 1490 954 2665 1853 433 613 1312 373 986 2493 1138 200 41 584 1234 976 153 85 481 160 698 1985 680 180 626 1088 740 290 436 877 962 1445 290 1341 1370 170 628 416 101 90 200 218 17 306 505 170 49 37 9 34 292 416 98 9 116 485 257 17 101 4294639611 196608 0 0 1 0 0 0 0 0 4294901760 0 0 0 0 1 0 0 0 4294967295 131071 4294967295 65535 65535 65535 65535 0 4294901760 0 0 4294967295 4294901760 0 4294901760 0 0 4294967295 0 4294901761 4294967295 0 0 65535 0 4294901760 65535 0 0 0 65535 0 65535 4294901760 4294967295 0 0 131071 4294901760 4294901760 4294901760 4294967295 0 4294967295 65535 4294967295 0 65535 65534 0 4294901760 4294901760 65535 0 0 65535 0 65535 65535 0 0 4294901760 0 4294967295 1 0 65535 4294967295 65535 0 4294901760 4294967295 0 65535 65535 65535 0 131071 65535 4294967295 4294901760 65535 1 0 65535 0 0 1 65535 4294901760 0 4294901760 1 4294901760 4294901760 4294836224 4294901760 0 65535 0 4294901760 0 4294967295 0 0 0 131071 0 0 0 4294967295 65535 65535 4294967295 65535 0 +3558853838 36479353059 45775358167 11896394798 15439046486 2907001113 318857498 79573626 51766602 15361996 3775154 4620117 12891819 11474850 26971555 53566278 30501324 67669079 197406668 35979243 37906039 9377114 23684015 20312735 19246500 11544515 15672959 16358304 21213969 8866935 4931195 4922791 +2 4292542481 4289724662 4273077333 66978442 420452 1460740 9622561 13098346 3380180 1718345 7430312 5418100 783074 14274 58897 34696 1181 6565 1280 820 1360 1954 6224 8177 3205 250 505 1226 1377 1853 1314 225 58 232 873 1105 801 4021 6273 7717 7108 9594 18805 23477 11717 3085 6929 1657 1249 2522 1044 610 457 905 482 18 25 1060 2477 1105 801 6793 9945 5193 1313 1832 1700 2260 4772 7012 3625 145 2120 1594 225 125 164 610 68 442 1213 1025 2626 4825 1961 305 1970 613 45 349 162 17 265 680 809 2161 2740 2020 1312 306 37 13 40 137 346 208 208 122 0 25 26 52 544 580 61 400 757 305 16 130 145 327676 4294901761 131071 0 0 0 0 0 0 0 0 0 0 65535 0 0 0 65535 0 4294901760 4294901760 65536 4294901760 0 0 0 65535 0 4294967295 65535 4294901760 4294967295 65535 0 65536 0 4294901760 1 0 4294901760 4294901760 0 4294901760 65535 65535 0 4294901760 0 0 4294901760 65537 0 65535 65535 4294967295 0 4294901760 4294967295 4294901760 4294901760 0 0 4294967295 65536 65535 4294967295 65535 4294967295 65535 0 1 0 4294836224 65535 0 4294967295 4294836224 65535 4294901760 4294967295 65535 4294901760 4294901760 0 65535 0 0 4294901761 0 65535 1 0 0 65535 1 0 4294901760 0 65535 65535 65535 131071 0 0 0 0 0 0 65536 0 0 0 65536 65535 4294901760 4294901760 65535 0 0 0 4294901761 4294901760 0 0 0 4294901760 0 0 1 4294901760 65535 4294901760 4294967295 0 0 +4711714844 51948308974 52389391761 25027010465 37327136308 5663131971 303650269 65583162 15838335 24131249 55589256 9873513 15351748 7550862 7329051 43135396 121948918 203703621 54327701 17188164 8026672 35595326 82722205 61526159 37550176 10318907 43646151 15113825 27191727 16184164 3858708 8551257 +65534 4294836230 7012483 4260888509 36503253 103690 393689 2390848 2470933 619138 711828 2883922 2079585 222626 6229 15626 12701 9805 4777 2141 637 245 485 164 850 841 544 170 1 10 26 18 18 125 157 241 272 125 298 485 1168 949 5081 4500 538 1460 2132 1754 706 26 113 325 325 225 272 245 306 353 80 265 1381 1360 1305 2306 1105 136 250 808 689 160 20 370 808 405 337 200 25 202 257 146 106 145 153 153 144 410 901 818 241 1 50 90 113 50 9 144 260 164 65 9 82 185 82 52 8 26 20 20 5 10 5 37 196 541 289 1 170 200 52 50 68 25 1 0 0 0 0 4294901760 0 0 1 0 0 0 0 0 65535 0 65535 1 4294967295 0 0 0 65534 0 0 0 4294901760 131071 0 0 4294901760 4294901760 0 65535 0 0 0 0 0 4294967295 4294901760 65535 0 65536 0 0 4294901760 0 0 4294901760 1 65535 65535 0 0 1 4294967295 4294901760 0 65535 0 0 0 4294967295 0 4294901760 0 0 4294901760 131071 4294967295 0 4294967295 0 0 1 4294967295 0 4294901760 65535 0 0 65535 0 4294901760 4294836224 0 65535 4294901760 65536 0 65535 65535 131071 4294901761 4294901760 0 4294901760 4294901760 0 0 0 65535 65535 0 0 4294901760 0 4294901760 4294967295 0 4294967295 131071 65535 1 1 0 4294901761 4294901760 4294901760 65536 1 0 0 0 4294901760 65535 4294901760 4294901760 4294967295 4294967295 65535 65535 0 0 +1241353777 12139827085 10081549048 8833879570 14308666072 1944063668 101436178 63014875 14373077 3407211 6551958 3654837 265591 604374 2326243 4528277 28422415 31578180 14722669 3851178 4350076 13992486 20242710 7999421 7094511 3573494 6609526 6029691 2645998 2174236 1252377 4823878 +65526 589835 10289096 4274717111 4294049098 119074 352180 1945060 1374565 349344 1146344 3477800 2033473 133425 7605 3161 477 34 185 1205 1160 125 565 1706 1130 485 325 242 68 25 50 45 50 40 58 122 113 100 392 2041 3844 3341 1621 629 580 356 1 17 50 100 16 25 106 90 104 98 89 36 293 128 37 197 449 709 533 65 85 81 26 117 277 377 178 29 194 377 145 4 20 1 9 4 8 53 85 157 17 20 34 74 40 8 45 116 109 65 61 58 16 1 29 37 10 5 13 13 10 2 10 13 1 1 45 445 514 234 13 40 74 45 1 18 4294770688 65535 0 0 0 0 1 65536 0 0 0 0 0 0 0 65535 4294901760 0 0 0 65535 4294901760 0 0 0 0 65535 0 0 4294901760 65535 65535 0 1 0 0 65535 0 4294901760 4294967295 0 0 4294967295 65535 0 131070 65535 0 0 4294901760 0 0 131071 0 0 4294901760 0 0 1 4294901760 131071 65536 4294901760 65535 4294901760 0 1 1 0 0 0 0 0 4294967295 4294901760 0 0 4294967295 0 4294901760 65535 0 65535 4294967295 4294901760 0 4294901760 65536 4294901760 4294901760 4294967295 0 65536 4294901760 4294901760 4294967294 0 0 65535 65535 0 4294901760 0 65534 4294901760 65535 0 4294901760 65535 4294901760 0 4294901760 0 0 4294901760 4294967295 131071 65535 4294901760 0 4294901760 0 65535 0 65535 65535 65535 4294967295 0 65536 65535 65536 0 0 0 +1188420328 9265686235 5906008820 11204837640 15439282728 1650704336 19184927 2445049 7813235 6732564 10064406 2742109 637041 540628 1058714 11081953 33689765 7914707 885291 1047270 1717221 3223317 6373933 2659186 3900087 1265970 1099387 1183922 1519546 534873 732169 4831497 +3 196580 9961111 25691139 4214947188 315290 1857785 8102852 5201185 917802 5751496 14945833 7182416 269354 78938 25876 8840 9265 10762 6353 404 1825 3620 4810 4993 1521 441 157 65 20 85 82 52 50 100 100 1 100 436 2329 2501 5525 6068 6637 8080 5825 2386 425 452 596 145 53 85 64 74 221 442 445 281 520 1160 1352 2138 2050 261 1189 1937 2665 2809 5273 8242 3418 281 1049 1424 890 194 538 981 545 241 314 650 1060 853 580 520 208 68 68 37 40 128 137 121 73 34 36 85 50 5 50 58 37 61 50 17 32 250 260 58 10 400 666 130 45 265 181 65 49 36 53 4294836220 65536 0 65535 0 0 0 0 0 0 0 0 0 0 0 4294901760 0 4294967295 4294901761 65535 4294901760 0 4294901760 0 65535 0 65535 0 0 0 65535 65536 4294967295 4294967294 0 0 4294836224 0 4294967295 65535 65535 4294901760 4294967294 0 4294901760 0 0 0 0 65536 4294967295 1 65535 65536 0 65534 65535 4294967295 131071 4294901760 4294901760 0 131071 65535 4294901760 0 0 4294967295 0 65535 4294901760 0 0 0 0 4294901760 0 0 0 0 65535 65536 4294967295 4294901760 0 65535 1 4294901760 1 0 0 4294901760 65535 4294901760 4294901760 65535 4294901761 131071 65535 4294901760 1 65535 0 0 65535 4294901760 0 4294901760 0 1 4294967295 4294901760 0 0 4294901760 65535 65535 65535 65535 4294901760 0 0 4294901760 65535 65535 4294967294 0 0 65535 0 1 0 0 0 65535 +5342412785 38722533089 21689447260 50583681666 60559102399 5420162612 196148329 78721693 35503302 28070904 36470212 4461095 684869 766881 872950 10248336 61127767 81651106 15531901 2191609 4347601 16106647 27094104 69949829 36882222 12746307 13721105 3897734 1912678 1172204 3583264 5906856 +11 1900536 4281073377 64618746 4227072654 235300 2224685 9408970 6811988 312773 7429613 16558274 7217557 326673 29000 23605 5305 2861 2657 2389 2000 522 625 1345 1396 1585 1424 562 450 293 261 85 5 65 97 194 461 689 634 520 1305 2329 970 2393 2930 362 416 2169 2669 1156 200 17 4 58 90 157 269 442 173 10 148 128 1069 2312 1549 533 208 541 1417 3688 3400 1313 388 274 26 137 104 97 325 208 356 442 197 241 577 725 389 50 4 18 17 98 122 153 233 221 205 89 65 25 20 32 17 26 26 5 29 9 73 90 101 29 208 160 25 17 8 0 50 50 4 1 65533 65537 0 0 0 0 0 0 0 0 0 4294901760 0 0 0 0 65535 0 0 65535 4294967295 4294901760 65535 0 0 4294901760 0 65535 4294967295 65535 4294901760 4294901760 0 0 131071 0 0 0 4294967295 0 4294967295 4294901760 0 65536 1 65535 0 131071 0 0 4294836224 65535 1 65535 0 4294901760 65535 4294901760 1 0 0 0 4294967295 4294901760 65535 0 131071 65535 0 4294901760 0 0 4294901760 65535 65535 0 65535 4294901760 0 4294901760 0 0 4294901760 65535 0 65535 4294901760 0 0 4294901760 65537 0 1 65536 65535 4294901760 0 1 0 65535 0 4294967295 4294901760 65535 4294836224 0 0 4294967295 65535 4294901760 1 131071 0 65535 1 0 65535 0 0 65535 0 1 0 65537 4294901760 0 65535 4294901760 4294901760 65536 0 4294901761 65535 0 65535 +5976136105 45889155646 25658879364 59224163000 64547799918 5451541197 122361710 25811723 17488931 8144534 14054226 9800110 3466293 869880 2810809 8112800 20962206 23134912 21780822 3439464 3145343 5567380 19715633 32666498 13694714 4817242 8309353 3003686 3640241 949912 1543539 1762807 +6 4294574082 4283760620 27197173 4288545279 89732 734357 2851069 2329337 37189 1950650 3944009 1515940 66338 325 4736 1097 58 169 389 261 397 689 424 229 145 50 29 113 197 61 10 65 61 74 185 289 136 65 117 338 538 250 0 65 0 25 37 113 29 18 13 53 80 37 2 32 137 125 65 45 17 74 164 122 61 145 193 89 34 65 74 29 52 98 109 29 5 25 65 73 73 45 17 72 85 106 82 1 1 26 26 25 50 18 37 85 40 10 5 8 18 13 13 17 4 1 5 5 5 8 10 13 82 85 90 45 17 20 5 2 1 0 0 0 0 0 0 0 0 0 0 4294901760 0 0 0 0 0 65536 0 65535 4294901760 65535 0 65535 0 0 0 65535 65537 0 0 0 0 65535 4294967295 4294901760 0 4294901760 0 0 65536 4294967295 0 65535 4294901760 0 0 0 4294901760 0 0 0 0 0 65535 65535 4294967295 0 4294901760 65535 65535 0 4294901760 4294901760 65535 65535 4294967295 65536 4294967295 0 0 0 4294901760 65535 0 0 4294967295 4294901760 65535 65536 65535 0 0 0 0 0 0 0 0 0 0 0 0 65536 4294901760 1 131071 0 4294901760 0 4294901760 0 65534 4294901760 65535 1 0 65535 0 0 0 0 4294967295 65535 0 4294901760 65536 0 4294901760 4294901760 0 0 4294901760 0 0 0 0 4294967295 0 0 65535 65535 0 0 0 0 +2008415345 14286546721 8415874099 14778680869 14652446311 1120476353 18617467 2379745 2763813 4639476 2584170 713447 1243275 577744 1812721 1926717 4036292 777832 710735 598220 910191 1268443 1972572 1763893 1248038 1033367 1376615 848022 881743 393300 268536 1244621 +65534 4293525499 4280418556 6159378 41223029 763013 3766277 10812100 6807325 45169 7685665 12335765 3966434 134920 4369 16477 6290 5021 7349 2153 404 850 1556 985 1145 625 202 97 41 277 360 101 61 50 8 125 2 170 148 125 445 1954 1028 388 845 1160 970 377 65 5 9 74 185 125 13 5 49 117 5 41 58 52 261 617 416 281 578 349 104 65 2 178 452 205 13 180 130 52 52 32 164 100 65 45 37 68 200 404 160 26 256 200 45 173 180 34 265 401 29 50 53 2 20 26 10 5 25 5 10 1 17 29 53 81 68 36 4 0 4 5 0 2 65535 0 65535 0 0 0 0 0 0 0 0 65535 0 65535 0 0 0 0 0 0 0 65536 0 4294901760 0 0 0 0 65535 0 65535 65536 65535 0 0 0 0 0 65535 65535 65535 0 0 4294967295 4294967295 0 4294901760 4294967295 65536 0 65535 0 0 65535 0 65535 65536 0 0 65535 4294967295 65535 4294967295 65535 65535 65535 65536 4294901760 0 1 4294901760 0 1 0 4294901760 4294836224 0 4294901760 65536 0 1 4294967295 0 0 65535 4294901760 0 4294967295 0 4294901761 0 0 4294901761 0 0 0 65537 0 0 4294967295 65535 65535 0 4294901761 0 65536 4294901760 4294967295 65535 65536 0 65535 0 0 4294901760 0 0 4294967295 65535 0 0 4294901760 4294901760 65536 1 65537 4294967295 1 0 4294901760 0 4294967295 4294901760 0 0 +11197419827 53747313469 25512828106 52498929124 43039889339 2834476380 79435791 47620341 17388999 10313988 9217184 2076347 2364366 1145721 744706 1928110 12788648 11946948 4706399 1281115 850483 1569666 6871462 4022532 3507189 1789056 2310075 4018858 3929235 1385139 473221 925427 +65532 65553 393570 4249222493 65404918 694234 3210496 8293352 4336036 541172 4840613 6345586 1896570 89906 1865 313 520 1825 2192 521 1465 2482 1737 193 337 657 328 145 212 90 5 2 106 244 106 68 386 461 541 1394 2378 1636 117 200 245 13 225 68 5 17 58 82 90 196 128 52 85 145 58 80 36 5 17 130 125 125 173 305 373 277 194 260 170 26 18 52 29 5 9 10 169 377 400 145 13 8 104 410 625 340 162 185 73 10 29 178 493 545 145 34 41 18 5 2 2 13 25 25 16 34 45 26 40 25 13 1 5 5 1 5 5 4 65534 1 0 0 0 0 0 0 0 0 0 0 65536 1 0 65535 0 0 65536 0 0 0 0 0 65535 4294967295 4294901760 65535 0 4294901760 65536 0 0 4294967295 0 0 0 65535 65536 0 0 4294967295 4294901761 65535 4294967295 4294967295 0 0 4294901760 65535 65535 0 4294901760 4294901760 4294967295 0 65535 65535 4294901761 0 4294901760 0 0 0 4294901760 1 0 65535 4294901760 0 0 65535 0 65535 0 0 0 0 65535 0 65535 65536 65535 4294901760 0 4294901760 0 4294967295 0 4294901760 0 0 65535 0 65535 4294967295 65535 0 0 0 65535 4294901760 65535 0 65535 4294901760 0 0 0 0 4294967295 4294967295 4294901760 0 1 65535 0 0 65535 1 65535 4294901760 65535 65535 1 65535 4294967295 0 4294967295 0 65534 0 0 0 0 +9674828116 40853226428 18099637010 31372683749 21663365062 1421139170 5982313 13535293 12142146 14815410 4509014 2959404 984268 1101467 2330853 10107173 16826751 2462645 903122 1444686 1681280 1016679 2136031 4944177 1982343 1835731 4198975 6033203 4819728 1897796 632957 444856 +65535 4294508542 16122083 4239130641 42401225 551588 2244329 5009346 2307236 255476 1328053 1264293 293665 16021 2720 4100 1924 3250 2285 313 373 776 1360 964 424 500 85 109 20 34 73 53 82 125 145 226 185 49 17 52 65 445 986 490 130 170 106 52 20 4 20 160 125 13 40 53 50 45 36 8 10 13 65 74 1 26 73 85 13 45 52 89 10 17 37 20 13 45 90 109 90 10 17 5 80 130 125 20 10 26 109 250 233 130 89 117 185 89 61 37 10 4 1 10 5 1 5 5 5 1 2 0 5 17 36 45 5 2 13 4 0 1 65537 4294901760 65535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65535 0 4294901760 0 0 0 0 4294901760 4294901760 0 65535 0 4294901760 0 0 4294901760 65536 0 65535 65535 0 131071 65535 1 4294901760 131071 0 0 65536 4294901760 0 65535 4294901760 0 0 4294967295 0 4294836224 0 4294901760 0 65536 65535 0 65535 0 4294901760 4294901761 0 0 0 0 4294967295 0 0 0 4294967295 4294967295 0 0 4294901760 65535 65535 0 0 0 0 4294901760 4294901760 4294967295 65535 0 65535 65536 0 65535 1 0 4294967295 65535 65536 4294967295 65536 65535 0 0 0 4294901760 0 4294901760 4294901760 0 4294901760 4294967295 131071 65536 4294901760 0 131071 4294901760 4294901761 4294901760 65535 0 4294967295 0 4294901760 0 0 4294836224 1 0 0 4294901760 0 1 +6959596373 24875102982 9693726808 7941729113 4020383447 237333518 24200982 19862103 5794857 9243781 5800712 1465016 528385 1003545 1982403 849579 5415628 4060057 745476 1182047 740350 462474 765759 938646 657592 1239116 1277482 2327988 3113696 621882 116217 435541 +65494 720850 36110476 4226941751 8846003 1215569 3208168 6990905 3698425 518288 1529320 387493 10880 6418 24082 10585 3698 2132 640 2020 709 117 85 1858 4394 1885 170 738 968 485 128 20 10 34 40 4 116 360 356 194 65 125 685 1170 925 565 730 772 625 445 661 904 296 8 64 72 106 40 52 90 148 106 85 178 149 29 85 314 281 65 5 17 109 181 74 58 37 130 250 117 146 389 641 421 68 16 144 317 281 265 72 205 1184 576 1 117 65 25 68 52 1 53 97 37 10 13 13 5 4 25 10 5 17 13 2 29 80 49 10 5 5 1 131072 0 0 0 0 65535 0 0 0 0 0 0 0 0 0 0 4294901761 0 4294967295 65535 0 0 0 0 0 4294901760 0 0 4294901760 4294901760 4294901760 0 0 4294967295 0 65534 65535 4294967295 65535 1 0 0 0 65536 65535 0 0 1 4294901760 0 0 65535 0 1 65535 0 0 0 0 0 65535 4294901761 0 0 4294901760 4294901761 0 4294901760 65535 4294901760 65536 0 1 4294901760 65535 4294901761 65535 0 1 0 0 0 0 1 4294967295 4294901760 65535 4294901760 0 0 4294901760 0 131071 0 0 65536 4294967295 4294901760 0 0 4294836224 4294901760 1 4294901760 4294967295 65535 65535 1 4294901761 0 65535 65535 0 0 0 0 4294901760 0 65536 65535 65535 65535 65535 0 0 0 65535 0 65535 65535 4294967295 1 4294901760 0 0 +11213498042 35346955631 15380141567 7629367028 958188131 109069287 70701726 15204656 9379514 5251685 26542446 7720732 5143634 390902 797326 3200745 4910921 11500298 9574115 6990819 1209812 1665187 2313311 2639143 1752545 3939236 5994852 7033823 5485706 1106207 385658 665411 +65434 3669960 45350630 4255843924 4251056667 812893 734985 5027353 5593085 533165 9446788 8266473 1359202 26570 44629 18581 19493 41805 41081 13130 5017 5189 1325 2173 5465 1261 1202 569 3994 4537 1665 757 450 1370 1737 1082 1706 3112 2545 2626 1460 50 377 1125 4069 4949 3233 493 337 1769 981 522 1018 433 610 653 361 20 58 405 733 221 80 109 72 117 37 41 218 653 197 61 293 369 226 185 386 1157 1514 601 82 193 482 269 65 221 637 680 170 338 1889 2466 361 445 656 81 650 730 180 305 221 32 100 58 157 205 225 212 185 104 10 65 325 356 97 10 5 121 125 53 36 36 262143 4294901762 65534 0 0 0 0 0 1 0 0 0 0 65535 0 65535 4294901760 0 0 0 4294901760 65536 4294901760 65536 4294901760 0 0 0 4294901760 0 0 4294901761 1 4294967295 4294967295 4294967295 65535 0 0 0 0 4294901760 0 65535 65536 4294901760 65535 0 0 0 65535 1 4294901761 4294901760 4294901760 4294967295 4294967295 4294901761 65535 65535 4294901762 0 131071 4294967295 0 65535 0 65535 4294967295 65535 4294967295 0 4294967295 0 65535 4294901760 65535 4294901761 4294901760 0 4294901760 0 4294901760 0 65536 65535 65535 4294901760 131071 4294901761 65535 4294901760 0 4294967295 65535 4294901760 0 0 0 0 1 4294967295 0 0 65535 65535 65535 4294836224 0 65536 0 0 0 0 0 131071 4294901760 65535 0 4294901760 1 131071 0 4294901760 4294901760 0 65535 65535 65536 4294901760 4294901760 0 0 0 0 +4151908471 25783138501 20963722347 53261047487 24237659227 1059109658 197300754 293161910 110023109 28198999 31384590 15394241 33201497 11114967 18623849 30687969 13726223 41541520 20886489 12677903 7031868 5290971 2124916 4335075 6243582 14430042 6814970 19823481 14622024 5161140 4419940 3457317 +65512 4288217139 35912949 4290053972 4245289535 368021 366932 1610557 4860313 624181 8645045 17971861 4960882 7306 204461 166517 62213 45965 45305 3793 5458 5338 194 2600 5281 7841 12805 11357 1160 2225 5200 3770 2084 1073 442 425 425 3509 7453 6964 4698 3625 3626 1224 1850 1882 1618 970 449 925 1514 778 41 269 769 692 676 1010 1352 640 65 392 725 901 1433 2000 1685 1445 648 5 522 1460 2165 1874 1114 520 101 164 657 464 0 90 98 18 34 1 85 41 128 313 565 360 757 481 2 929 2273 1082 40 205 577 277 162 205 225 80 153 221 17 36 288 457 450 250 18 125 181 8 125 72 65 29 65532 5 65535 0 0 0 0 0 0 0 0 0 0 0 65535 65535 0 65535 4294967295 65536 1 65535 0 65535 65535 0 0 4294901760 0 0 65535 65536 65535 0 0 65535 0 4294901760 65535 0 0 4294901761 65535 0 1 4294967295 0 4294901760 4294967295 0 0 0 0 0 4294967295 1 4294967295 131071 4294901760 4294901760 131071 4294967294 1 4294967295 65536 0 4294901760 4294836224 65534 65535 0 1 65535 0 4294901760 65536 4294901761 1 0 1 4294967294 0 0 1 65535 4294901760 0 0 65535 4294967295 65535 1 4294967294 65535 4294901760 4294967295 4294901760 1 0 1 65535 0 65535 65535 65535 4294901760 0 4294901760 65535 4294901759 4294967295 65536 0 65535 65535 65536 4294967295 65535 0 65535 0 65535 65536 0 1 0 0 4294967295 4294901760 0 4294901760 65535 1 4294901760 0 +1960807838 11698992199 17602050409 67057545556 59626149119 3824877938 957576562 360136631 87659551 25660229 57599760 93924666 39003744 28963610 9529702 61295249 55207502 26039995 15225624 10238539 12016218 11253646 22026464 18887085 24143240 6981991 1364725 6932771 18750506 9211890 4983732 5015579 +15 3211241 2489951 37225468 4218027418 549225 424882 1525961 3319952 1460693 1654745 9028170 6058089 540269 268909 384116 151700 27061 4082 6458 8333 2005 260 72 442 1480 4328 1544 1810 3280 2050 1352 162 533 274 221 169 274 820 725 712 500 1060 2273 1877 1476 788 533 576 178 260 130 53 41 128 82 1 32 1 64 97 34 20 58 136 386 200 65 178 65 296 1268 578 245 514 145 5 193 346 180 50 85 34 0 4 20 1 17 113 122 101 200 212 82 136 290 160 122 170 125 50 20 53 80 65 244 386 265 130 116 274 461 218 80 4 36 202 289 325 305 229 113 4294901753 196609 1 0 0 4294901760 0 4294901760 0 0 4294901760 0 4294901760 65535 0 65535 65535 4294901760 65535 0 0 4294967295 0 65535 4294901760 4294901760 4294901761 65535 65536 1 4294901760 65535 0 4294901760 65535 0 0 0 4294967295 65535 0 0 65535 65536 65535 4294967295 0 0 4294901760 0 0 0 65536 0 0 4294967295 0 4294967295 65536 0 0 1 0 4294967295 4294901760 131071 4294901760 65536 4294901760 65535 4294967295 0 65535 4294901760 4294901760 4294901760 0 65536 4294901760 4294901761 0 0 4294901760 65535 0 65535 4294967295 0 65535 0 65535 1 0 0 65536 4294967295 65535 65535 65535 0 1 0 4294901760 1 4294967295 65537 4294901761 0 4294901760 0 1 0 0 0 65535 1 0 0 4294901760 65536 0 65535 4294901760 0 4294901760 65535 65536 0 0 4294901760 65535 0 65535 0 65535 +2635049436 9872003780 14558086781 24612304388 43029241942 6433347833 1958473825 285370348 53967072 14007214 9471104 25132244 25606158 8860906 3260197 6803138 12251186 21471749 7927187 2064678 870657 794234 2522193 5478489 8601980 3598645 680058 2417220 4073574 2682617 5959231 5245109 +14 851964 4282384192 48300171 4243259798 319258 718925 3248485 3681290 762205 771664 5379664 5530781 1101572 100010 373657 155700 19042 8072 16154 7240 1945 2141 2440 2250 2393 2978 1157 1345 6165 10285 5666 1040 164 29 10 52 290 400 49 68 265 458 776 580 226 13 26 125 333 180 34 5 2 5 2 5 13 13 5 13 13 2 5 25 90 61 13 58 41 289 872 680 52 10 4 85 225 157 80 49 25 29 45 10 17 9 5 53 117 149 64 2 20 17 2 26 25 13 1 1 5 4 10 2 61 82 45 68 377 650 569 197 26 16 17 13 1 10 5 5 1 65535 0 0 0 0 4294901760 0 1 0 0 0 0 0 0 0 0 0 0 0 4294901760 65535 0 65535 4294901760 1 65535 0 65535 65535 4294967295 65535 4294901760 0 0 0 0 0 65535 0 0 65535 65536 65535 4294967295 0 0 4294901760 65535 65535 65537 65536 4294901761 4294901760 4294901760 4294901760 4294901760 4294967295 65535 1 4294967295 0 4294901760 65534 4294901760 0 0 0 0 65535 0 4294967295 0 65535 4294901760 0 65535 0 1 0 0 0 4294901760 0 0 0 0 65535 0 0 0 4294967295 65535 0 65535 0 0 65535 0 0 4294901761 4294901760 0 0 0 4294967295 4294967295 65536 0 4294901761 0 0 65536 0 0 0 0 0 0 65535 4294901760 0 0 65535 4294901760 65535 0 0 1 0 4294901760 4294901760 65535 0 0 0 +2651651221 17150675800 14469965119 13636585471 33273500830 7206414998 1758370222 285864778 84753792 24333498 23961510 20573463 63212579 34844077 1066985 2685442 3977777 5743617 1972195 1136986 95561 165208 559069 3492449 5317475 2066435 597067 1420664 514618 345402 5189385 3344122 +3 4294180861 4277403689 42073516 4284548042 286408 1130560 4858321 4934800 692370 1497098 7700212 7182970 1187282 212309 1012401 584114 110417 40325 68525 27970 2293 3560 4381 578 2132 6472 5553 3946 13933 18625 5330 65 64 169 58 13 148 169 117 68 100 52 292 289 306 145 125 277 333 80 10 26 36 29 45 136 68 49 20 0 10 50 17 1 36 97 125 17 13 82 578 505 65 25 41 122 61 10 17 10 40 80 85 25 36 41 5 1 52 272 221 72 185 221 130 212 202 50 20 13 20 34 34 68 36 20 34 85 26 41 130 73 34 9 5 10 5 0 5 4 1 4294967294 65536 4294901760 0 0 0 0 0 0 65535 0 0 0 0 0 0 0 0 0 0 4294901760 0 4294967295 0 0 65536 0 4294967295 4294901760 0 0 0 65535 1 1 65535 65535 65536 0 4294967295 1 0 0 1 0 65535 0 0 4294901760 65535 0 4294967295 65535 0 1 65535 0 4294901760 4294901760 4294901761 65535 4294901760 4294967295 0 4294901760 4294901760 4294967295 0 4294967295 0 0 65536 4294901760 0 0 0 65535 0 65535 0 4294901760 65535 0 65535 4294901760 0 65536 4294901760 1 4294967295 0 65536 4294901760 0 0 0 0 4294901760 0 0 4294967295 65535 4294967295 0 4294967295 65535 4294967295 4294901760 0 4294901759 65536 4294901760 65536 65535 0 4294967295 4294901760 65535 65535 0 0 0 0 4294967295 0 4294901760 4294901760 0 0 0 0 0 0 0 1 +3531159376 25147647472 18776052491 20490195192 44600945644 9393331486 5228126307 1236145833 349548411 52192002 24649124 51827336 125620612 41485682 1035161 1495022 1496644 3327860 3062154 1043210 1024827 537686 645819 2381446 3831722 883720 976694 2360246 3866652 1213036 1380602 799619 +0 4293853181 4286578976 4281662523 56361695 372645 668176 3500837 3542201 534784 961973 4565945 4059304 755933 443816 1973185 1294514 164525 50377 95485 32020 9524 25385 34696 10957 1352 16160 16613 2441 18581 35122 14544 2173 2050 2080 605 200 445 404 234 65 5 97 113 90 113 125 130 197 181 20 5 80 121 50 10 53 122 61 13 74 29 9 68 45 4 2 18 64 18 82 845 1184 442 208 85 8 52 37 1 13 74 73 26 10 26 32 5 2 97 340 289 53 122 493 577 185 17 37 13 1 5 9 8 0 1 13 0 9 16 13 25 29 10 0 2 13 10 4 0 0 0 4294901760 65536 65536 0 0 0 0 0 0 0 0 0 0 0 0 0 4294901760 4294901760 0 4294901760 0 4294901760 0 4294901760 65535 65535 0 0 0 65536 65536 65535 65535 0 0 4294967295 0 0 0 4294901760 4294901760 1 65535 4294901760 0 4294901760 0 65535 0 0 65536 1 4294901760 65536 4294901761 65535 0 65535 4294967295 131071 0 0 0 0 0 4294901760 0 4294967295 4294901760 65535 0 4294967295 65536 1 4294901760 4294967295 4294901760 0 4294901760 4294967295 0 0 0 0 0 0 0 0 65535 0 65535 4294901760 65536 131071 4294901760 65535 4294901760 4294901760 65535 4294901760 4294901760 4294901760 4294901760 0 0 4294901760 0 4294901760 0 131071 65535 4294901760 65535 0 4294901760 0 65535 0 131071 4294967295 65535 0 4294901761 65535 0 0 1 4294901760 65535 0 4294967295 4294901760 65536 4294901760 0 +2689356138 17854390463 13572125613 12639287821 25812165685 7838896784 10630986023 2307766001 466730835 212533312 150069330 116881346 204978663 105309915 13685491 4161676 1224780 1492001 2054219 1033583 989467 855353 566092 3107627 8700039 893998 699239 2956926 5916558 440566 277126 282354 +65528 4294901781 8651036 4234149536 73858708 412177 525565 2880776 2668373 481050 618120 2714909 1980250 352125 946530 3185650 1997333 175124 37636 98865 40010 12500 62404 83528 16612 6586 36793 32345 9684 32144 39506 10546 170 305 850 1370 802 400 776 292 1 313 490 289 178 45 0 45 136 306 274 65 85 256 185 13 20 40 40 45 2 68 137 52 2 4 5 36 74 122 170 810 1184 425 64 97 269 106 8 2 5 13 18 1 5 10 16 17 17 212 530 360 197 170 100 218 306 85 104 50 2 26 53 5 5 10 1 10 8 5 13 5 0 10 16 5 1 1 1 1 1 2 0 0 1 0 0 0 0 0 0 0 0 0 0 65535 0 0 0 0 0 65535 4294901760 65535 4294901760 0 65536 0 1 65535 0 65535 0 4294901760 0 65536 0 0 0 4294901760 4294967295 0 4294901760 0 4294901761 0 0 4294901759 0 65536 0 65536 0 65535 65535 65535 4294901761 0 4294901760 65535 4294967295 4294967295 65535 4294967295 4294967295 65536 4294901760 4294967295 0 4294901760 65535 65535 4294901760 0 65535 0 0 0 65536 4294901760 0 131071 0 65535 4294901760 4294901760 0 4294967295 4294901760 0 0 0 4294901760 0 65535 0 0 0 65536 0 4294901760 4294901760 131071 0 4294901760 65535 1 4294967295 65535 65535 1 1 0 0 65535 0 65535 0 4294967295 65535 65536 4294901760 0 0 4294967295 0 0 65535 65536 0 65535 4294967295 65535 4294901760 4294901760 0 0 +2468034019 14392249973 10510746232 7950834690 13720016445 8066648095 17049012169 3138399205 492402616 453731910 329673648 258917680 294714954 86804938 10432947 6893265 3818678 2378920 1963173 2587595 1280722 793862 711593 3720123 8782004 1298230 214480 4398132 4553477 1090233 217234 161015 +65526 720907 19070980 4247978602 13826924 423604 284960 2270824 2363085 537197 715370 2713364 2085280 286417 902788 3725812 2728449 237569 49860 113210 49754 2809 74485 144484 64324 5525 55204 73637 15122 22984 36805 12724 490 34 409 481 26 153 853 1069 325 221 765 293 5 5 65 136 18 50 25 29 148 200 73 45 100 97 26 5 10 53 34 13 13 17 45 45 18 41 148 369 593 628 529 452 338 293 265 232 212 106 40 4 9 13 1 25 97 65 64 394 256 72 362 1129 1000 712 613 464 320 394 449 205 61 13 4 1 10 5 9 1 4 13 4 1 4 2 1 0 1 2 131072 4294901760 0 0 1 0 0 0 0 0 0 0 0 4294901760 0 0 0 0 0 65535 0 0 0 0 65535 0 4294901760 0 0 0 65535 0 0 0 65534 0 1 65535 0 65535 0 0 0 1 0 4294967295 0 0 4294901760 4294967295 65536 0 4294901760 0 0 4294901760 1 65536 0 4294901760 4294967295 4294901760 0 0 4294901760 65535 65535 4294901760 0 0 65536 4294967295 0 65536 4294901760 0 4294901761 0 0 65535 4294901761 0 65535 0 0 0 65535 4294901760 65536 65535 0 0 4294901760 4294901760 65535 0 65535 0 0 4294967295 4294901760 4294967295 0 65536 4294901760 4294967295 1 0 4294967295 65536 0 4294901760 0 65537 4294901760 0 4294901760 0 0 65537 4294901760 0 65535 4294901760 0 0 4294901760 65535 4294901760 0 65535 4294901760 0 0 0 +1930925128 11394149803 9496996200 8425927697 14003531534 8302245381 20903880642 4255067778 568586568 598848990 674150846 462004378 298733708 89528547 3427480 6791855 6494664 2173093 840611 1352961 1410280 560724 461019 2024137 9281243 5551951 1041627 2738005 14367963 9542068 804478 117035 +0 1376219 8847141 12911434 4235001217 333625 143417 1550728 2123089 583677 175825 2019802 2506825 529730 675316 3893665 3380404 457540 60497 151633 61074 778 49097 139880 91834 38404 119425 136721 26640 16154 18730 3368 593 325 290 317 52 34 637 778 34 325 661 277 34 16 65 136 122 121 125 29 2 8 58 34 1 10 20 20 36 65 25 13 5 9 1 16 52 50 36 25 117 229 104 242 666 820 466 205 122 20 5 8 9 5 9 2 10 97 65 125 709 1233 1025 101 457 436 305 218 146 232 130 29 8 41 5 10 10 9 1 4 16 17 13 9 5 0 0 0 0 0 0 0 0 0 0 0 0 4294901760 0 0 0 0 0 0 0 0 0 0 65536 0 4294967295 4294901760 65535 0 0 0 0 65535 65535 4294967295 0 65535 1 65535 65536 0 4294901760 0 0 0 65535 4294901761 0 65535 0 0 0 0 65535 0 65535 65535 0 0 0 4294967295 1 65535 65535 65535 4294901760 65535 0 4294901760 0 0 65535 65535 4294901760 65535 65535 65535 4294901760 65535 0 0 0 0 65535 65535 4294901760 4294901760 65536 0 0 1 4294967295 4294901760 65535 0 0 131071 0 65535 131071 0 65535 4294901760 0 0 1 65535 4294967295 0 4294901760 0 4294967295 65535 0 4294967295 0 4294901760 0 65536 4294967295 4294901760 0 0 0 0 0 0 0 0 4294901760 0 65535 0 0 4294901760 4294901760 4294901760 0 4294901760 0 +1328525791 8226140593 8573256374 5116463892 14132161120 8716741414 23295290048 5806712331 732551143 505886447 899225022 950209192 287283788 38740489 2929819 4581562 5147668 2147565 1584818 755456 365294 487850 304956 682218 4240222 7671975 500181 4526657 12917465 4330371 407572 219544 +65527 655349 4284022623 54722635 4235592314 356921 32105 593137 1906497 1341853 165629 1361465 2970890 1586212 106277 2884690 4146980 1210210 78481 148256 117956 39833 49076 202834 240098 90437 132065 205000 59828 1172 13864 3341 117 0 145 565 890 884 1042 689 340 68 290 468 208 181 260 109 25 80 145 148 80 40 34 9 1 2 5 1 1 50 45 8 20 13 29 29 5 2 17 65 73 10 97 545 425 125 170 325 245 90 52 53 20 20 34 34 113 292 661 801 260 1220 4082 3842 1145 2845 6178 4525 1568 389 106 277 421 160 8 0 1 0 2 2 10 13 4 5 4 4 0 0 0 0 65535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65536 0 65536 0 0 4294901760 0 0 0 0 0 0 65535 0 4294901760 0 65535 0 131071 4294901760 65535 4294836224 65535 0 0 0 1 4294901760 0 0 65535 4294967295 65535 65535 4294967295 0 4294901760 4294901760 4294967295 65535 65535 4294836224 65535 131071 4294901761 4294967295 4294967295 0 0 4294901760 4294901760 65534 0 65535 4294901760 4294967295 65535 65535 4294901761 4294901760 0 4294901760 65535 0 4294901760 0 0 4294901760 4294967295 0 0 65535 4294901760 65535 0 0 0 0 0 65536 0 65535 4294967295 65535 4294967295 0 0 65536 4294901760 0 131071 4294901760 1 0 0 0 4294901761 4294901760 4294901760 0 0 65535 4294901760 0 4294901760 65535 4294967295 4294901760 65535 0 0 4294901760 1 0 0 1 65535 4294967295 1 +1133385167 4253111713 9489616933 5090645284 15469399439 9376440319 22396737262 9193806184 977883467 798546547 1770828072 1354863630 346400303 29244433 5390761 10528631 4395479 3634108 1677060 1456693 261229 230404 423529 413822 2954817 5040869 1500295 10466684 65843411 40471437 1686611 134288 +4 4292608005 4284481593 17825112 25691061 424781 141245 740114 1224513 259186 378890 1085221 982801 75914 1039540 3198645 2290333 265445 22930 51353 54401 24445 18720 142874 142245 15725 65954 128885 36221 7450 19017 4456 41 45 164 797 530 557 346 520 360 485 34 85 25 424 41 289 130 13 5 61 58 32 5 13 20 25 20 10 13 17 130 101 9 37 45 2 0 4 1 17 5 2 18 196 100 1 2 73 130 41 25 13 17 17 40 61 4 20 58 0 725 1745 500 205 1033 2501 3313 4624 2466 305 157 242 397 101 5 10 29 26 1 1 1 8 20 5 1 0 1 5 4 2 0 0 0 0 0 0 0 4294901760 0 0 0 0 0 65536 0 0 0 0 1 4294967295 4294901760 0 0 0 0 4294901760 4294967295 4294967295 4294901760 0 65536 4294901760 4294967295 0 0 65537 4294901760 0 131071 65536 65535 0 0 0 65535 65535 4294901760 65536 0 65535 65535 4294967295 0 4294967295 65535 131071 4294901760 0 65535 0 0 0 65535 4294901760 65535 0 0 0 65535 0 4294901760 65536 1 4294901760 0 4294901760 0 0 0 65535 0 4294901760 1 0 0 4294901760 65535 4294901760 0 4294901760 4294901760 131071 0 4294901760 4294901760 65535 0 65535 65535 65535 0 1 0 65535 0 0 0 131071 4294901760 65535 0 4294901760 0 0 65535 4294967295 4294901760 0 4294901760 0 0 0 0 1 4294901760 1 4294967295 4294901760 65535 4294967295 1 4294901760 65535 65535 0 +1593375707 4272592169 4705338930 3811646116 6072988369 6958443426 18116419114 3684648771 391777920 466306181 989195668 730393632 271793383 39364748 5233658 5991419 4235205 2102618 1997891 584958 312464 514036 938636 195610 781691 1271603 753909 4451140 33391608 36348065 1679905 176958 +8 458775 786818 4229233948 106954487 1099658 52301 1517410 4093570 2666970 413621 262665 868036 684109 503197 2658553 1912914 251681 44273 14240 62957 253530 604196 933433 624905 155636 115229 215933 179218 124029 54260 3546 3370 4673 3109 3362 3497 3202 4981 7120 4628 4573 7298 9704 11057 9850 5945 3209 1609 610 394 680 680 313 512 725 522 205 37 32 40 180 305 365 260 98 145 145 25 5 50 116 173 442 653 793 884 954 562 85 41 80 40 80 16 50 130 200 97 25 41 261 905 1853 821 73 313 821 2210 5573 7940 5330 2897 1885 178 29 5 32 122 116 29 34 52 26 5 2 2 1 8 9 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 4294967295 65535 65535 4294901760 65535 65535 4294901760 4294901760 0 4294967295 4294901761 65535 65535 4294901760 65535 1 0 0 65536 4294901760 65535 1 0 4294901760 1 4294901760 65535 0 65535 4294901760 0 4294967295 65535 65535 65535 65535 4294901760 0 4294967295 65535 65535 0 0 1 65537 65535 65535 4294901760 0 0 0 65535 0 65535 65535 65536 0 65536 1 65535 0 131071 0 0 0 65536 4294901760 0 4294901760 4294967295 131071 0 0 4294901760 0 4294901760 0 4294901760 131071 0 4294967295 65536 4294901760 0 4294901760 4294901760 65535 65535 4294901760 1 4294901760 4294967295 65536 1 65535 4294901760 0 4294901760 4294901760 0 0 65536 4294901760 0 65535 0 0 0 65534 65536 0 0 0 +3381297269 10008656032 19923779456 6206647179 4466848589 6500315031 14744835027 3219672750 638796493 4758309065 5339256144 1665197727 1231201914 111731960 41839582 58386066 82285111 124761447 41117766 8919613 7426713 2276132 4053240 1527105 9156485 9899293 1564027 6679465 30990656 86485180 5837215 546026 +65513 2555939 28311748 4204135260 8452073 1679849 65309 1840410 4048234 748890 542880 1936658 2094586 1092218 8114 2195629 2717794 408041 32825 207056 172570 2753 76085 459252 693125 147797 42850 64010 106146 103681 79570 45585 11636 962 2941 2018 2309 3130 2120 1224 1009 2257 1609 650 1413 1765 260 169 490 65 772 85 685 746 197 569 365 565 485 20 292 64 117 106 193 362 425 53 82 170 52 5 20 40 1 50 82 157 2165 2312 468 173 261 205 221 233 113 40 26 34 50 194 394 145 793 3890 6562 3466 4100 5185 205 2249 3709 3170 1549 281 338 160 4 25 82 113 130 74 170 85 26 16 9 2 10 10 4294901763 65536 65534 1 0 0 0 0 0 1 0 65535 0 0 0 0 0 0 4294901760 4294901760 4294901760 65535 0 0 1 4294901760 0 4294967295 0 0 4294901760 0 0 4294901760 0 0 65535 0 65535 65537 0 65534 4294901760 65535 0 1 65535 4294967295 4294901760 0 65535 0 0 4294901760 4294901760 65536 0 65536 0 1 4294901760 0 4294901760 4294901761 65536 4294901761 65535 4294901761 0 4294967295 65535 0 65535 0 65535 65536 0 4294901760 0 65535 1 4294967295 65535 0 1 65535 65535 65536 0 0 4294901760 0 4294901760 65535 65535 0 4294901760 65535 0 65535 65535 0 0 0 0 4294901760 65536 0 0 0 4294901760 0 65535 0 65535 0 4294901760 65535 4294967295 4294901760 65536 4294967295 4294967295 65535 65535 65535 0 4294901760 4294901761 4294901760 65535 4294967295 4294901760 0 65535 +5130690995 11182565016 14999878302 6703599030 13175402422 6478155605 15251450915 4837860078 1232529311 1375696577 4224259282 784177292 980731963 290238278 29442347 26859042 20425443 16041636 6029955 7143348 7646081 4070675 3652879 2583137 962290 19163541 6146589 3022459 65784087 69675267 12493461 2109656 +65499 4293787613 24051515 4289856486 4240571669 327130 100009 480589 1977665 2021962 283450 640781 1433066 524594 781133 1841674 1919061 483866 9949 82408 114869 99944 32537 88273 303538 168181 10837 13141 40034 46496 25832 14985 11906 637 4010 7208 8761 10580 6521 2466 6850 25106 59930 95805 114841 118277 106033 84825 69397 60125 57616 53209 42201 30397 22741 16425 8497 4705 4244 3677 2098 829 401 349 160 193 234 338 346 145 9 4 5 73 233 292 533 745 640 1588 2000 884 530 845 745 365 205 116 9 13 145 400 205 205 104 452 1189 1268 3370 842 265 1009 509 265 578 769 554 244 101 82 37 25 37 85 100 17 25 45 205 514 810 800 4293722123 458741 6 0 0 0 0 0 0 0 0 4294901760 0 0 4294967295 4294901760 4294967295 0 4294901760 65535 65536 0 4294901761 65535 65535 1 0 0 0 4294901760 65535 131071 4294901760 131071 0 65535 4294901760 4294967295 0 65537 0 4294901760 65536 65535 1 0 65536 65535 0 0 65536 4294901760 0 0 4294901760 0 0 4294901761 65535 0 4294967295 0 1 65535 0 65535 0 65535 4294901761 65535 0 0 4294901760 1 0 0 0 0 0 0 0 4294901760 0 0 0 4294901760 4294901760 65535 4294901760 65535 4294901761 65535 65535 65535 4294901760 65535 0 4294901760 4294967295 65535 0 4294901760 4294967295 4294901760 65535 65535 1 0 0 65535 4294901760 0 65535 4294901760 0 0 4294901760 4294901760 65535 65536 0 65534 4294967295 1 65535 4294901760 131071 4294901760 4294967295 4294901760 4294901761 131071 0 4294901758 1 +1206280417 4026777121 11415006775 5352602812 7135269319 6487994549 12651556535 3944350238 768922737 695447059 1851156050 420238201 376422141 129610728 72826935 90101262 452451467 1435602187 1149121230 706095212 250041616 49622678 6788180 3636234 3492206 19866375 15385766 3844897 19095518 22943392 7301731 3381152 +65500 4290969489 24444660 20710011 4251910392 108986 499417 2995009 3522469 434513 2682529 3847545 2075994 988688 424477 994625 2333250 1537913 378788 42565 43380 24040 94148 471978 718472 362893 117506 35209 87737 78376 19301 8266 19242 30276 9733 2061 8585 509 12130 16393 28873 48626 32845 16677 89092 94129 21312 18513 6305 1157 7796 15056 25012 1189 6586 8605 3944 1465 3505 730 673 1108 370 953 776 50 8 4 137 356 436 288 65 890 1625 1521 1157 269 169 1690 2009 725 4861 3362 3546 2169 628 185 1417 808 932 1889 745 1636 5540 7025 4597 4258 3221 485 1637 1450 845 509 325 1576 1460 370 221 229 82 65 34 109 170 82 234 265 130 369 37 578 4293459982 4294639605 131068 65536 0 65535 0 4294836224 0 0 0 4294901760 0 4294901760 0 4294901761 4294967295 0 4294901760 65535 4294901760 65537 4294967295 1 0 0 0 4294901760 4294901759 65535 65535 0 4294901760 4294901760 0 0 0 65535 1 65536 4294967295 0 4294901761 4294901760 65535 0 65535 65535 4294901760 0 4294901760 131071 65535 4294967295 0 4294901760 0 1 0 65534 4294901760 65535 4294901760 0 4294901760 65537 0 65535 4294901760 4294901761 4294967295 0 1 0 0 65537 65535 65535 65535 65535 65536 65535 65536 65535 65535 65535 1 4294967295 0 1 65535 4294901760 4294901761 4294967295 1 65535 0 0 65535 0 1 4294967294 65535 4294901761 65535 65535 1 4294901760 4294901760 65535 4294967295 4294836225 0 4294967295 0 0 65536 1 4294901760 1 4294967295 0 4294967295 0 4294967295 0 0 0 65535 4294967295 4294901760 65535 65535 0 0 +1507933073 15665494525 13174712205 18167877044 17486286535 6345579788 11717249627 8891291597 731261308 1412151862 4967685464 1233210514 605941997 205483119 114992118 133464785 443761197 795697922 241067272 179661236 90409633 23966124 9456428 3758017 16699850 26363574 55250004 28897717 91735802 39373499 13867324 4389478 +65492 524294 7405469 4289396962 5832506 146408 316577 1519673 3155060 1145761 382100 371986 11026 41330 36181 258661 263825 109125 22922 28397 20885 8321 3917 79346 83668 31865 88650 216817 205085 44585 9797 3985 685 533 2117 6948 6497 4481 5672 6632 8528 12365 14800 30344 69745 72189 37325 25913 28837 24373 17069 14785 12569 9365 4880 2197 666 617 466 2084 4365 2421 1125 2960 2473 884 493 466 557 405 490 585 1028 325 809 3904 3400 1601 2074 1744 353 3796 3474 1616 3728 8541 9605 7225 4481 2285 1105 922 1352 1762 964 170 128 361 1225 2417 1685 585 360 1024 1125 481 325 85 72 200 208 148 218 164 52 116 109 185 196 53 29 97 4294508543 131072 65534 1 0 0 65535 0 0 0 65536 1 65534 0 0 4294901760 65535 0 4294901760 0 65535 4294901761 4294901760 65534 0 4294967295 131071 0 4294901760 1 1 0 65535 65535 131071 1 4294967295 0 4294901761 0 0 0 1 4294967295 4294967295 1 4294836224 65536 65535 0 0 0 131071 0 65535 65536 4294901760 65536 4294901760 4294901760 65535 4294901759 4294967295 4294901760 65535 0 4294967295 0 0 1 65535 0 0 4294901760 4294901760 65535 4294901760 0 0 131071 4294901761 65536 4294901760 131071 0 65535 65535 65536 4294901760 65535 0 4294901762 4294901760 0 0 0 4294967295 65535 4294901760 4294901761 4294967295 0 4294967295 0 0 4294901760 131071 1 0 0 4294901760 65535 4294901760 4294901760 65535 4294967295 131071 4294836225 0 0 0 0 0 0 4294901760 65536 1 0 0 1 0 4294901761 131071 0 0 +1184897717 9489519590 13161607443 3940896631 964142326 475393282 1721182582 761078663 191678384 213333567 667740806 1418962511 860135688 30847144 52034993 75139011 187985265 693983281 439025812 215563048 50720960 35836293 32903588 10828782 26542270 46513943 99317166 86242895 22280320 25839724 8423881 3936547 +65516 3342340 2293384 21234775 4241685204 1806845 1452997 2686357 4768285 6582992 3394564 372717 1386853 2321936 1630850 644629 104050 38749 142532 242280 492388 591172 544769 213524 54965 45737 99796 306512 219080 100805 39785 13770 6025 4645 2720 6370 11520 4513 1010 4057 2925 27290 27378 78885 89074 38216 1885 10138 18945 6485 1586 6389 13520 13669 12114 4001 1381 4432 6961 4141 1250 900 2249 6100 5525 2845 1768 1476 1277 2125 2669 1924 2645 3826 3461 3898 592 1989 6929 9536 8629 4013 677 3609 6280 2548 1960 2210 3825 776 369 53 1025 3330 2389 2305 2304 613 914 202 1885 961 1433 1856 1450 576 305 477 530 585 1241 1125 829 493 148 106 148 333 145 2 9 50 4293984261 589810 9 131069 4294901760 65537 0 0 0 0 4294901760 131071 1 0 0 0 4294901760 0 1 4294901760 65535 4294967295 1 4294901760 0 4294901761 0 0 0 1 4294901760 4294967295 0 4294967295 131071 4294901761 0 0 65536 1 4294836224 65535 65536 0 65535 0 131071 3 4294967295 1 4294967295 131071 65537 4294901762 0 4294901759 65536 4294901760 1 65535 2 4294836224 4294901760 0 4294901760 4294901760 65535 4294967294 1 4294901759 131071 4294901760 0 4294901760 65536 0 4294901761 4294967294 131071 131071 4294901760 4294967294 2 65535 65536 0 4294901760 65535 131071 4294967295 65535 131072 4294901761 4294967295 4294901760 0 4294967293 1 4294967295 65535 65537 4294967295 0 65535 65536 4294901760 65536 4294836225 4294901759 1 0 4294967295 4294901760 4294901761 0 4294901762 4294967294 0 4294836224 65535 65535 1 4294901760 131071 4294836225 4294967295 65535 2 4294967295 131070 4294901761 131071 1 65534 0 +8799836771 17466212413 32665440123 24403786688 8503285165 13175755526 4040900839 916525418 3287256116 4440195764 1148126538 1808176080 1277219974 131040940 71721774 54670601 331957739 727965377 167476152 140134932 106561361 57215247 63617300 37784561 58234141 108326095 85013850 40846623 42192265 30598885 21178158 11369907 +40 5373884 4264558330 117047482 4168549631 1593220 58445 748754 1723690 5346905 5560789 697320 493697 1324305 1012930 1914980 2745000 1497385 354554 149620 162461 170549 590785 579092 239917 78165 4073 53125 55477 36818 19409 2929 2180 4013 1845 10034 7137 12337 16946 24005 99850 144322 72810 11618 7496 1690 15668 59405 47581 17812 8665 11936 10192 585 2533 1156 265 932 130 386 1424 1681 2516 3034 1044 625 928 466 1681 2218 2932 2650 1741 2285 4330 5537 2225 45 170 1044 909 1930 596 2509 9333 9949 7085 3485 4932 2353 1517 7010 7376 2837 1690 265 5386 10170 7345 2088 505 1090 857 373 306 941 3578 3114 2690 3874 1220 18 410 45 449 689 445 13 512 549 317 250 589837 4294180862 131067 131072 0 1 65535 0 4294901760 65534 65537 65535 4294967295 0 4294967295 0 0 65536 4294901760 0 1 131071 0 0 4294901761 65534 131071 4294901760 131071 1 4294967294 65536 4294901760 4294967295 131071 4294901760 65535 65537 4294901759 65535 65537 0 131071 4294901760 1 65534 4294967294 65536 1 0 0 0 2 4294901760 65535 1 0 65535 4294967295 0 1 0 4294901761 4294901760 4294901760 65535 4294901760 65535 65535 65536 4294901760 65534 4294901761 4294967295 131071 65537 4294967295 0 4294967294 65535 65536 0 131071 1 4294967293 131072 4294901761 65534 0 65535 0 65535 1 65535 1 4294901761 4294836222 65536 65537 4294967295 4294901760 65536 4294836225 65535 1 4294967294 4294901759 0 65535 4294967295 1 131070 131073 4294901760 65537 65535 0 1 4294901759 65535 0 4294901761 65535 4294901761 4294967295 65536 4294901760 4294967295 131071 4294836225 65535 131071 131071 4294901761 0 +4857807625 4684720568 19617056396 31803867236 4955030952 9010553928 16402536385 9283905906 1613912232 3863957616 2721204994 414517697 373669558 54762803 77511915 285341973 1127283203 272477508 474958707 147473374 22204190 18946427 28675182 32227063 58805087 29323757 104031048 108459580 104433090 57221973 53538137 15311093 +9 4294312036 4249616321 83950274 2492571 1822981 813658 3003965 3875560 86696 2862665 5874997 3850120 1011173 804322 3193490 3436096 973589 232101 39429 6445 7362 91225 151720 98545 132617 68437 18596 4640 29069 43697 19557 7844 4825 2056 1576 3185 14436 60317 93428 41053 3236 4373 200 6250 11890 6481 12290 5044 2756 7709 2624 626 3701 709 3826 3205 1818 1972 485 785 765 29 277 3434 3961 1421 1490 2664 3497 233 1845 653 1 1332 6698 5914 3181 1989 233 5525 14885 14240 3973 260 538 1325 2029 3600 5122 3508 4589 1445 421 3538 9418 9028 2042 3844 4100 3137 2249 1396 733 320 1252 962 2977 4985 530 629 1192 1378 1145 29 592 580 512 980 580 260 125 196614 4294639617 0 4294901758 1 0 0 65535 0 0 65535 1 4294901760 65536 4294901760 4294901760 65536 1 4294901760 196607 0 4294901761 1 65534 65538 4294901760 4294967295 65537 4294901760 131071 65537 4294967295 65535 1 0 65535 0 1 4294836224 131071 4294901760 0 65535 131071 65535 4294901762 131070 131071 4294901760 0 65535 1 131070 65538 0 4294836224 131071 4294967295 4294967295 4294901760 4294967295 65535 65534 1 131070 0 65535 0 0 65536 4294967295 1 0 4294901760 1 131071 4294901760 0 65537 0 4294901761 4294901760 1 4294901757 65538 4294836224 4294901759 65535 65535 65536 0 65535 1 4294967295 0 131072 0 1 131072 4294901759 65536 4294836225 4294901760 65535 4294967295 131071 4294901760 4294901760 1 65536 4294770688 131071 0 0 4294901760 131070 4294967295 65536 1 65535 1 131071 65536 1 4294967295 131072 4294901760 65536 4294901760 4294770688 131072 4294836224 65535 4294901761 65533 +7330480156 16609548476 13374449909 21888903641 28472566201 10681371317 21811217525 7934125741 414589425 651486731 1165589522 505022475 282410707 159844879 43103177 542021657 334135918 91548305 104735383 48122773 41171550 17496248 32535061 39651417 42812099 102651127 111705587 71170133 113984641 62087517 47392465 21397867 +65525 4291625012 4291231829 4280155631 44957982 92525 148185 1396730 2927353 1371816 86101 139549 322813 207810 234349 634517 501280 70781 2600 3920 5284 4114 21437 37234 22877 8125 2693 1261 404 6689 9778 2276 260 25 377 260 325 180 4481 3460 164 1465 577 58 181 580 289 833 2664 5249 5393 2420 2665 4420 3637 1448 162 320 1061 340 173 338 485 1042 1636 1962 1972 1781 1069 533 1028 1025 52 676 2180 1961 746 514 442 328 113 592 1765 1877 1714 1937 1936 1000 818 1544 1802 1220 481 288 68 468 1224 1332 298 37 34 10 145 136 1066 1552 820 298 169 137 416 400 377 520 626 433 137 5 32 89 37 20 131068 131075 4294770688 65536 0 131071 0 0 4294901761 65535 0 0 0 0 65535 4294901760 65535 0 65535 1 65535 0 131071 4294901760 4294967295 0 0 4294901760 65535 0 65535 65536 4294901760 65535 4294901761 65535 0 0 0 4294901760 131071 65536 0 131071 4294901760 4294901760 4294967295 1 0 65535 0 65536 1 4294967295 0 4294967295 0 4294901760 65536 1 4294901759 131072 1 4294901760 65535 65536 4294901760 4294967295 65537 4294901760 65536 0 4294967295 65535 131071 0 4294967295 4294967295 65536 1 4294901761 131071 4294901761 4294901760 0 65535 1 65535 4294901760 4294901760 4294901760 4294967295 0 65535 131071 4294901761 65535 0 0 4294901760 4294901760 4294967295 0 4294967294 4294901760 0 4294901760 0 4294901760 4294901760 65535 4294901760 4294967295 65536 65536 4294901760 4294901760 65537 65535 65536 4294967295 65535 4294901760 65536 4294967295 0 4294901760 4294901760 65535 65535 0 4294901760 65536 4294836224 65535 +625702055 8504774921 12980538424 2689966485 1703751633 2102469141 3774778781 832820790 37537968 165873540 206806770 27484038 57626150 21396616 3149708 26221776 15662539 4994582 37202246 56286514 27550069 7752774 23610114 22600491 21012791 15007870 32234541 29274214 15314955 10375862 13971888 9079596 +65508 1245176 20906215 4219142327 62978852 1883818 995609 1183417 6152616 7215137 2369666 872420 334216 85000 448208 1706717 1267666 147373 84473 143426 167284 188557 164914 67997 16133 5821 15730 11458 349 20180 28125 4625 1700 4250 2440 2690 6109 8009 9986 19300 17946 10852 5410 4880 7762 8450 3844 640 500 1258 3258 1709 500 9901 12665 4373 2161 2825 5617 5777 3250 2125 829 145 850 2621 5017 4005 365 1657 4850 6625 2210 1620 11560 8245 4948 5256 1825 800 325 58 794 1845 2465 2788 2554 1858 313 900 5290 5578 2141 881 445 400 1249 2106 801 416 2957 5960 5965 3728 2977 1129 125 100 250 653 1780 1913 1105 976 484 50 89 1229 1898 1044 205 8 4294836224 196607 65534 2 0 1 0 0 0 0 65536 0 131071 1 4294901760 65535 1 4294836224 65535 4294967295 4294901761 131070 0 4294836224 1 65537 65535 65534 131073 4294901761 1 4294967295 0 65538 4294901759 65535 1 4294901759 4294901760 4294901759 65536 4294901760 131071 0 4294967294 0 65537 4294901759 65536 2 4294967294 65536 4294901761 65535 65535 4294967295 4294836226 4294967294 131071 0 4294836224 131072 4294836226 65534 65536 4294901760 131071 4294901761 4294967295 131071 4294967295 0 1 4294901760 4294901760 4294967295 65536 131071 4294901761 4294967295 1 4294901761 4294901760 65535 65536 4294901760 4294901760 4294967295 65535 4294836224 65535 131071 4294901760 65535 65535 65535 4294967295 65537 4294901761 65535 1 65535 1 4294901761 4294967294 65537 4294967295 131071 0 4294901760 65535 65535 65536 65535 1 4294901760 131072 4294901760 65535 65535 131071 131071 0 4294901760 65535 65535 65536 4294901760 4294967295 196607 4294967295 0 0 0 0 +7942449073 12549071554 37862431503 22111769861 3321796076 3397947899 9696101223 2370351364 1329201747 1392781535 320445636 102043833 171236102 70907865 46505081 140095821 156987770 87062258 29289267 60491731 92476199 61315586 33280233 58752054 109291434 63859244 35969405 57265624 36095817 81099274 31695923 24573369 +65439 7602164 28573479 4267181695 4221106315 1819625 753197 3961674 10786513 5144805 136981 2168297 613625 218777 1286657 3068233 2030690 208577 48913 124105 12017 121936 53170 20644 94196 94693 37008 709 12637 13124 37000 40477 19309 4392 305 3649 3205 2258 19010 44356 28373 15368 11789 13058 23329 15305 11945 13553 22280 31189 25301 12157 5650 10057 15300 3833 1780 2645 2509 2896 4100 5485 12308 6625 4325 20872 34634 20165 2250 2754 2837 5069 1985 7925 39730 48500 23913 10512 5261 8957 11273 11025 15385 14033 7093 2237 2000 1384 1192 13124 20789 5597 2545 2810 3700 6500 4000 397 2708 10386 18617 16290 8465 2250 1205 522 1405 1058 890 1305 4549 2290 3880 3961 980 981 2861 2650 9 1642 584 10 131075 4294639617 393216 4294967295 65538 4294836224 196608 4294901762 4294901760 0 4294901760 65537 4294967295 1 65535 4294901760 196607 131072 4294901761 4294836225 196607 65538 4294770687 131071 1 4294836224 4294967295 65538 4294901760 1 4294705153 65533 1 4294901758 131072 4294901761 4294967295 65536 2 65535 4294901760 4294901760 4294967295 65533 65539 196606 4294770691 262142 4294901760 65536 4294901762 131071 4294901760 131072 131070 65539 4294901759 196607 2 65534 65540 4294770688 262142 4294901764 4294836223 4294901760 4294901759 131069 4294901760 131072 4294836226 131069 1 4294901761 65535 196607 1 2 4294901759 262142 3 4294770688 4294967295 65536 4294901760 4294836225 4294967295 65535 0 4294901760 65537 65534 4294901760 4294967293 1 4294967295 1 65533 327679 4294836227 196603 4 4294967295 0 4294836223 196607 4294967294 1 65536 4294901761 0 1 65535 4294901761 4294901758 65535 131072 4294836225 65536 4294901763 4294836224 65535 4294901761 4294967295 196608 4294836223 0 4294901761 65537 4294770686 196607 2 4294901759 131069 3 +7177065731 27296218233 47594933532 12201429684 7508406139 7787942516 17147770595 3344923997 640996045 588235407 715176244 295290820 232007772 252139481 36244711 221315637 285268621 226591117 295250070 227033690 94050213 75985131 234440956 194101174 357316577 322585390 188272947 166223568 121985693 210343986 53015728 62797518 +4 4293525467 1376031 39911932 4228448181 385060 504520 1024533 2519309 2604785 783925 17585 196996 64265 34285 127465 177106 45764 7720 14569 28224 50373 24245 3538 34514 23890 4525 34 689 2853 6409 3848 1258 2402 3600 433 1108 3737 7465 5121 4265 5141 2225 2340 5378 4553 2570 6329 15025 13498 2626 2 580 3929 6885 4770 3026 3172 3665 4682 6165 5224 965 333 1613 2385 3208 2009 4420 5717 2125 81 2417 3305 818 980 1421 1825 3200 1885 125 530 250 10 61 153 657 901 1301 2890 905 725 4285 4810 4385 3208 500 125 41 445 170 65 257 1061 850 1220 2873 2804 2297 1525 296 916 2993 1989 569 261 629 1476 1448 773 365 153 4294967287 4 65536 0 0 65536 0 0 65535 0 0 0 4294901760 1 0 1 4294901760 131070 65536 4294901760 0 1 4294967294 0 4294901760 65535 0 0 65535 196607 4294770688 131071 4294901760 0 131071 4294901760 65535 65536 4294901760 65535 4294901760 65535 4294901760 0 1 4294967294 4294901760 65536 65535 4294901761 4294901760 65535 65537 0 65535 131071 65535 4294901761 65534 1 4294967295 65535 65537 4294901760 4294901760 4294836224 65536 4294967295 131072 1 0 4294967295 0 0 4294901760 0 65536 2 4294901760 65536 4294901760 1 4294967295 0 65536 4294836225 131071 4294967295 65535 0 4294901760 65535 65535 4294901760 65535 0 4294901760 65535 65534 65536 4294967295 65535 0 4294836225 65534 65537 4294967295 131071 65534 0 65536 2 4294901760 65537 4294901760 4294967294 1 4294967295 4294901760 131071 0 4294901761 4294967295 65537 4294836224 65535 4294901761 4294967295 65535 0 65535 0 65536 4294901761 0 +2337773680 7309566459 14801657761 7176957560 805387261 528593059 995158038 394826627 212307176 262055828 220277966 54044754 35002809 33866875 23296997 58449045 55407599 55507554 126956238 53378795 68657945 71688372 38021275 60553511 37553778 32386758 7812694 41946056 55645055 14394219 47986037 32390008 +65425 786448 4269867019 78117949 4281403451 1581530 574001 4982746 5510564 1077682 4159530 1818145 903044 420480 193541 484465 834709 343165 72613 60660 20689 104954 230800 102625 95026 69049 36997 38461 33849 43114 56132 45610 18965 4321 6709 20381 8521 8369 22801 24208 3592 10322 29650 32409 28193 18850 5672 929 4212 6305 6445 4580 22544 16754 338 11156 5945 1060 157 1154 9700 12356 9050 5645 2381 928 3425 15329 4981 6401 27625 34002 22888 6817 218 2069 4721 7381 9650 4181 5410 4133 2941 4349 10457 17753 16145 6929 1160 5408 6596 2536 9433 2074 4244 5840 601 7789 1696 2836 10036 6309 937 37 4916 14801 5650 6949 3109 1424 6733 3706 1370 14153 10016 2273 640 1586 272 424 980 2754 983004 458760 4294901766 4294967292 65539 4294967295 0 196607 65536 4294901760 65537 4294967295 4294967295 4294967295 65535 131073 4294836226 4294967294 4294836224 65536 4294836223 131071 4294901760 131070 65536 65535 65536 4294901763 4294967294 65536 4294901760 4294901760 4294901759 65533 196608 4294836224 65535 4294967295 196610 4294901759 1 4294901760 131069 65539 4294836224 1 4294901759 131073 4294901758 65536 1 0 4294836224 1 4294901757 196609 4294705153 196606 4294901760 65537 65536 4294901759 2 4294836221 65534 65538 4294901758 131072 4294836224 131074 4294901761 4294901760 65535 3 4294967293 65536 4294901760 4294901756 131073 131074 4294770689 65533 65537 1 4294836222 65538 4294901760 0 65537 4294901760 4294836224 65534 4294836225 65535 0 4294836222 65538 131070 65535 0 131072 1 65533 65537 131072 4294901762 196605 4294901762 4294901760 196607 4294901761 4294901761 4294901762 65533 1 4294836224 131069 1 0 4294967295 131071 0 4294967295 65537 65535 65535 65537 4294901760 131070 4294901760 65534 4294901762 4294901760 65534 1 +6046596233 25253943382 21742296418 21572249812 7935159819 2807538510 4463643538 2371843820 477267601 1347163060 919215284 421756089 487698103 297825307 134980049 196728935 235049753 309552333 77540179 165912218 109102241 94745557 103497585 246149174 248478488 117665019 180592448 154574135 109365391 129086298 148305794 126572548 +8 4293066734 4293787870 4272422268 65012101 662404 219330 374218 1596474 4188040 4028648 1670356 453825 54793 6970 36738 118170 112261 11554 9293 20313 49057 65025 32969 12325 21568 12317 1922 1217 565 580 2197 1616 2932 5290 5800 2762 2306 13736 32218 26585 7954 3112 6905 4709 1810 3737 7325 6850 3869 2624 7300 11236 5378 260 3233 6400 6122 4770 3181 2900 4637 5722 3349 709 2906 6786 3725 1370 293 4621 3725 5101 4797 6100 7309 5993 820 965 1361 349 977 697 625 2164 2749 916 738 9841 20897 17833 7085 1066 954 5860 9252 3121 2560 8429 9461 4469 612 586 1769 4768 5608 1370 1210 680 229 985 64 1413 2900 3313 1844 505 409 689 244 464 493 655353 196618 4294705148 196608 4294901761 65535 1 0 1 4294901760 65535 0 65536 4294967295 65535 4294967294 0 65535 4294836224 65536 1 4294901760 4294836224 131072 4294967294 0 4294967295 1 4294967295 65535 65535 0 4294967295 65535 0 65535 65535 1 65536 4294901760 1 0 131071 4294836224 0 4294901760 65536 1 0 65535 1 4294967294 131072 4294770688 0 65535 4294967294 131072 1 0 4294967295 131070 4294901760 65536 4294901761 4294901759 65535 0 131071 4294901761 4294967294 65537 4294967295 0 4294901760 4294901760 65536 4294967295 4294967295 2 0 4294901759 0 131071 65538 4294901761 4294967295 4294967295 65535 65535 65536 65536 4294967295 131073 0 0 1 4294901761 4294836224 0 4294967295 65536 1 1 131071 65535 4294901759 131070 1 0 4294901760 4294901761 65535 0 4294967294 65536 4294967295 65536 65535 1 4294836225 65535 1 4294901760 65535 65537 4294836224 4294901760 4294967295 65536 0 4294967295 65537 65534 2 +2482510738 3438291754 16013403574 25549731472 5581583516 490118426 565096383 545958421 173219808 451581527 217609846 82442676 10837682 25359092 51647568 171316459 191286047 61242489 77041846 94361758 73210822 73273377 63869368 58136238 100905104 45909251 33836093 211808645 135636783 97216943 45813997 40036664 +65454 10354698 4288086514 4248501957 20446685 369625 2069426 1803325 99412 1697825 2317361 3959005 3786788 1094085 201625 111130 134260 221945 111940 13177 33917 81317 11268 52065 10330 73825 252297 148772 23677 3385 370 3400 4745 401 2669 1972 20420 43165 35689 7585 14900 22397 22850 7129 12593 8962 2009 5188 14530 16136 9826 16245 20557 1250 18180 3434 24313 60794 17473 2228 13833 58898 109370 93626 61245 71514 97162 75560 44785 20714 26738 176353 287225 163109 93834 140593 79641 39565 59098 48672 19625 8053 6068 1972 3034 9320 20509 32625 2664 21268 33282 45005 24805 9005 10804 35137 43570 24665 2645 19277 15545 5186 15570 5365 3770 10161 6058 3380 1369 2305 14650 12618 2650 1297 2250 965 2626 5618 7444 9620 7796 3060 4293328887 786428 131075 4294836225 1 0 4294901762 4294967294 262143 1 0 0 0 0 4294836224 0 4294836223 65536 4294967294 131071 196607 4294901759 4294901762 4294967292 131071 2 1 4294901759 65535 4294901760 65536 4294901760 65535 65536 4294836226 4294901757 131071 4294836225 4294967295 4294836224 4294967294 131071 2 4294770687 4294967294 131068 65536 4294967295 65535 65535 65535 196608 4294967295 131071 65537 131073 65537 4294836225 65537 1 1 4294967294 4294836225 65537 4294770689 65533 65538 4294901760 4294901761 4294901760 4294901761 4294967295 4294967295 65533 65537 4294967295 196607 0 0 0 131071 2 4294836225 0 4294967295 4294901762 65533 65539 4294901759 4294967295 131071 4294770688 131071 196606 65536 1 65537 4294901758 196607 4294836224 327681 4294705155 0 65534 65536 4294901761 65536 65537 4294770688 196609 4294901760 4294836225 4294967294 131073 65535 0 65538 65535 4294901760 4294901760 0 0 4294836224 0 4294967295 1 65532 1 4294836226 4294901759 65533 4294836225 65533 262143 2 +6005577148 10361578336 5499850377 18824686244 23839289913 6194273642 1140881685 1220742485 386003454 392065145 564659148 1469245201 189397527 31994341 103827053 340931677 234547962 140085192 149629184 212309949 329765153 614939006 1425759264 1402856201 2886912421 1097431041 239235379 532403289 597181906 308022360 162363562 134388866 +65493 4294770748 2359259 4280942604 21495788 291005 1733741 3207730 2111405 476657 5162 127618 111130 410 15165 11016 46537 97029 103625 52186 14841 2362 79168 195637 230305 182169 135845 68000 17113 9124 10613 3364 2609 6058 2069 1429 8109 3698 257 136 2269 6272 10370 10388 3770 1024 733 1226 1949 2458 1345 1018 3673 6370 6805 4394 10301 14120 3545 25 2853 9445 5042 9490 10858 8330 7333 1850 2117 1885 7808 26965 15025 6425 10170 9005 12069 16658 14184 2713 2153 11348 22105 27833 18938 6212 397 1297 15130 33722 35730 35449 31921 22050 13010 10036 16565 12721 820 4517 15210 19433 9305 3016 1850 4410 15541 21178 18056 4658 765 2041 313 1444 2330 2978 1285 208 317 1418 1145 146 4294246403 524277 7 4294967294 65536 0 0 131071 65537 4294901760 1 65535 65535 0 0 4294901760 65535 65536 4294901760 1 0 131070 0 4294967295 65535 65535 4294901760 4294967295 1 65535 4294901760 4294901760 4294836224 1 4294967295 0 4294967295 0 0 65535 4294901760 65537 65535 0 0 4294901759 4294967295 65536 131071 4294967295 131071 0 0 65536 4294836225 131071 1 65534 0 4294901760 65535 4294901760 65535 65536 0 65536 4294901760 65536 4294836224 0 65534 0 1 4294967295 0 0 0 4294901760 131072 4294901761 0 4294901759 0 131071 4294836224 1 4294836224 65536 0 4294967294 4294901760 4294967294 65535 0 1 4294901759 65535 65535 4294901762 4294967294 65535 65535 131071 4294901760 65537 4294967295 65534 4294836224 65535 4294901761 4294967295 0 4294901759 4294901760 131071 1 65537 65535 131071 1 0 4294901759 65536 131070 4294901761 65536 4294901761 4294901759 4294901760 4294901760 196607 4294901761 4294901760 65535 1 +4976124203 17103236797 8886612270 972614885 688432390 125681039 269886822 728523694 328765789 699247293 1964140608 983888132 161906359 50668386 44643549 30865144 75440878 63495672 22927173 49906428 121756205 89913669 144554167 128146397 242608495 229381232 304290428 520416520 401708572 251849615 245014203 48888072 +31 4289789836 20447216 4278780595 4244634586 1237690 1021673 3671476 4553785 560554 1080850 1967737 657050 52265 91426 116293 1800 161146 234153 86701 6185 137713 283517 477725 524897 191309 113809 131636 105145 97732 76409 27725 4721 2873 19853 17741 13418 27905 15425 22741 47912 5696 30906 41410 6856 1525 4645 6581 3172 8273 32765 46733 35197 23872 30565 54580 67204 38641 5188 1924 8168 24832 36360 92944 76833 19433 13325 22580 17956 16433 50824 52852 23341 31505 26234 12625 1285 4057 19917 18504 4392 79641 84276 67730 19994 10397 14125 10205 28793 25805 20705 7540 8010 2521 18218 2525 21217 52676 54745 40210 64090 26469 3137 19009 30600 10522 49205 187400 150925 123092 130905 99097 47732 9866 2106 1037 2132 6184 6641 3074 65 333 4294770698 4294115320 131069 262141 262147 4294770689 131071 2 131071 0 65536 65537 4294836224 4294901761 4294901760 4294901760 65535 196607 4294901760 65537 4294836226 131070 4294770690 4294901758 4294967293 65534 4294901760 196608 4294770688 0 4294967295 131072 4294836225 4294770688 131069 4294901759 196606 4294901760 0 4294901760 131070 2 4294901760 65533 131072 4294967295 1 131071 4294836224 131072 0 131072 1 65538 4294901761 4294967295 4294836223 131070 4294836226 131070 65535 1 4294967294 1 4294836224 4294901760 65534 4294901760 196606 4294901762 4294967295 131071 4294836224 131070 1 0 4294901761 0 4294901759 131071 65535 131072 4294770689 65534 131074 4294770690 4294901758 131070 4294901760 65535 65536 4294901760 65535 3 4294901758 4294901760 131070 196608 4294836226 4294967295 0 65534 65535 131072 4294901760 4294901761 131071 1 4294967295 1 4294901762 65533 4294901762 65534 1 131071 4294770689 4294967294 131072 0 4294967295 196606 4294967295 65538 0 131070 4294901762 196606 0 4294836226 0 4294836225 4294967294 65536 1 +6090467809 20155652713 16794708544 8636815204 6987319465 939720016 606870074 1304660187 737907949 2365890851 3863588022 1304580576 976860358 228676104 189562733 284175486 355739621 200192212 137950714 504845896 680360534 347997407 859665822 507802247 540486367 463426695 883873959 398332294 538245923 905454393 2553728946 771749081 +65442 9043966 4281925666 28770153 4277994106 635089 565901 443845 1639298 2960794 3316141 1724642 234884 128456 173216 93145 44641 53348 41962 151033 183501 111962 161125 310658 572665 379013 100906 58337 26192 5300 23765 8480 1700 7184 26050 42925 34682 17410 30312 54149 57317 72202 109969 81917 24210 20074 17573 10001 10625 2468 31313 60701 26100 6292 6728 6466 514 14282 8381 101 3889 5284 25105 73450 60229 12869 5465 5365 13025 24809 15569 17645 37729 44081 14221 7978 20345 8609 8884 24712 39821 71338 108866 122944 101161 45428 22544 12890 13282 17978 26233 45617 74633 64034 17873 7060 22321 15445 21141 17069 57769 82850 38897 4842 1421 41066 142925 160186 80818 22994 1901 1850 1602 7220 3329 265 2482 1885 3922 6637 5645 4001 2228244 4294049788 65536 131072 4294901761 65534 0 65536 4294901760 65535 65536 65535 65534 65535 4294901760 65535 0 4294901759 4294967292 131073 4294901759 4294901761 65535 0 4294967295 4294901759 196607 4294705152 65533 196606 2 131070 65535 4294901761 327678 4294836225 131071 65536 0 0 4294901760 4294836225 4294901758 131071 4294770688 65533 0 131069 65538 4294770688 131070 131071 0 65537 4294967294 196609 4294770688 262144 2 4294901760 4294901761 131071 4294901759 4294901760 4294901759 65534 65536 4294901760 131072 3 65535 4294770690 65534 4294901761 0 4294901760 4294836224 4294967295 65534 131073 4294901759 4294836225 1 4294901758 4294901761 65537 0 4294836224 4294901760 65535 65537 4294770688 4294967294 131072 4294901761 65535 4294901758 65534 4294967295 4294901761 4294836223 262143 4294901762 4294901758 131070 4294901760 0 131073 4294901758 131074 0 4294967295 65537 4294836223 1 65533 1 131071 4294705155 196605 4294770689 131070 2 4294967294 1 65534 4294901761 65534 131071 65538 65538 4294901759 0 131070 0 +3224016691 4338379168 12976914061 20894584783 5034741646 1133599883 648001229 502753565 1253051496 1702828293 4085184714 1163694552 202926742 105583933 346290304 440669922 979093135 584597296 211004197 425233986 117367561 164643633 613232986 299306589 490263396 602047556 1614927769 743901983 736697030 1072714158 1590236639 129053730 +65497 4294246536 4285202152 11337787 7995451 112400 322186 61000 128437 156917 433013 1600394 1165141 389000 371620 91250 14521 9945 43210 100445 116500 41000 5800 75322 338890 310913 62705 25649 7241 11285 5386 788 4793 8345 2293 3089 25317 57130 69922 32029 2074 1962 4672 3973 12058 18265 32245 25625 10 11618 229 9061 4005 14705 19625 22786 20933 4706 3748 15370 15921 11602 10036 42125 52021 10025 9872 15341 25064 13810 692 11273 21800 11465 3233 14900 14842 5409 5741 10201 14221 27250 39089 33800 9041 1961 1885 2081 1721 1933 2554 9505 47944 51245 2381 30617 43265 2665 26177 53090 23545 27536 34112 18628 16769 3848 10525 29597 22117 8642 4436 3413 1205 436 3121 4673 4049 3881 2749 1025 1690 709 1441812 4293591046 196603 2 4294901760 1 1 0 4294836224 0 4294967295 65535 4294901761 4294901761 4294967294 4294901760 196607 4294770689 4294967292 131071 4294901761 65533 65538 4294901759 262145 4294836224 131073 4294836221 131076 4294836222 65533 131072 4294836226 196605 3 4294901761 131070 1 4294901759 196607 4294901759 131073 4294836224 0 4294901759 131070 65534 65538 65533 131074 4294836224 65537 4294967294 2 4294836224 4294901760 131071 4294836224 65537 4294901760 4294836225 4294967294 131073 4294836224 65533 131075 4294901756 1 4294901761 4294967292 131072 65536 1 4294901758 65536 65535 65536 4294967295 65536 196608 4294705153 327679 3 4294901759 65537 4294836225 65533 65539 4294901761 4294901758 131071 4294901761 0 131072 4294639617 131071 65537 4294770686 131070 65538 4294967293 131071 0 65533 131071 65537 65537 65536 4294901759 131073 4294967294 65537 4294967295 2 4294901760 4294967293 65536 4294901760 4294901761 0 4294967295 65535 65536 4294901760 4294770689 4294967293 4294967295 196609 4294836222 196608 4294836227 4294901758 0 4294967294 65535 +1097476178 915709831 845753022 4769534864 8298187396 3063024599 718278018 279312287 787638110 418343968 2354346912 792335948 96968259 50105885 144381988 565074570 118376217 205787733 205129540 133248688 260822608 219911270 468065353 276707757 230721104 274481966 385569749 222564925 681777581 671036064 364396821 93738895 +65513 4289527819 6291180 21562023 4236770582 1150020 316385 308149 883601 732922 564066 1075922 1039924 1053202 622549 209050 157421 166225 146061 111410 19144 14585 50612 23202 8138 53716 102772 65305 10049 2906 7813 8749 6970 2665 2521 3601 3392 13282 15293 29341 15380 5714 6824 3920 481 349 949 14065 42877 31058 23357 54085 68202 43541 15464 15188 19816 997 3613 45 9490 4885 2965 29609 34949 5330 1629 10898 26690 36178 15080 4481 3250 1429 7120 24197 24466 14050 2545 1618 2813 6500 18944 25992 27169 11700 4985 3988 2581 2512 3560 9461 12005 27233 31120 41480 42466 25805 39002 45853 39572 56653 24848 11290 22786 12725 305 6506 7585 8489 2689 1157 6664 3001 1877 2425 964 680 17 1802 2952 1466 1638402 4294443014 65535 4294836226 131070 0 4294901762 4294967295 65537 0 0 4294901759 131071 4294901760 4294967295 65536 4294901760 196607 4294836225 4294967294 4294901761 131068 4294901762 131071 4294836226 4294901758 4294967292 262146 4294770689 4294967295 131073 4294901757 4294901760 0 65535 0 0 2 65533 4294836227 4294967292 196609 4294901762 4294901759 196607 4294836224 0 131070 65537 4294770690 196606 3 4294836222 131072 4294836224 65535 4294836225 65533 0 131068 65539 4294901758 262143 4294901763 4294836226 4294901760 65534 4294901762 4294836220 262144 4294901759 131071 1 4294901759 65534 0 4294901760 0 196607 4294901760 4294901762 65534 65537 65535 65539 4294836224 4294967295 1 4294901762 4294967294 4294836226 65534 4294770690 65534 4294967295 131070 65536 4294901761 4294967294 0 4294901761 4294836224 65534 65537 65533 2 0 1 4294967293 131071 0 1 65536 4294967295 65536 131073 4294705152 131069 3 4294901760 65533 4294901762 4294967295 131069 2 4294901760 65536 131072 4294836226 131070 65538 4294836226 131068 1 1 +4157140845 2613794305 4727677279 5266829776 7424920178 5789172423 1898804582 1268984326 589508951 284955983 330923704 652302163 117550766 71398485 47435034 192953592 149161984 37318450 352312438 682325331 291320265 96148797 293130744 328654162 209549663 211642083 327489326 178558175 766989134 843444145 208471186 70954403 +65474 7471075 4285071296 31391550 5768153 1783700 799396 204802 669652 1018018 1155050 259117 1089 65344 75272 230816 156404 26442 49562 359585 701026 573604 273325 62297 80272 101881 137252 126338 25625 6058 2426 2601 7309 17680 31385 36809 30925 12665 2305 80 5393 10625 3042 2650 12965 9649 10436 25250 23593 3593 11464 46649 60229 24392 19645 37873 20752 720 11765 22345 28250 34933 16712 349 18421 19385 8820 27050 91165 89828 43205 31841 20890 4420 5202 24804 22129 6445 30004 30042 15457 22266 16000 21530 22501 1781 461 4240 19946 26948 28537 21572 14841 14365 12346 4586 221 2180 10309 30025 43316 28881 9386 2329 7129 13241 21305 21805 4525 6597 31316 24425 1508 7865 11405 2237 477 2250 1621 81 520 1508 4293984281 786422 4294377478 262143 4294901759 65535 0 65535 131071 1 0 0 4294967295 65536 65535 65536 65536 0 0 4294901761 196606 4294901761 131071 4294967294 196607 65536 65538 4294967295 1 4294901762 4294901757 196607 4294901762 0 4294901760 65535 4294836224 131072 0 4294901758 131071 2 65533 65535 327680 4294836227 65533 131075 65535 65535 4294901763 4294967293 65539 65535 4294901760 65536 4294901761 4294967294 262145 4294836224 0 131071 65537 1 4294770689 131071 4294770689 4294967293 65536 4294901759 4294901761 196604 65537 4294901760 131072 65537 65535 4294836227 4294901760 4294901760 4294901761 4294901762 4294901758 131073 1 65535 4294901760 4294901761 131073 4294836223 65534 3 4294770684 65536 4294967295 131072 65537 4294901759 196607 1 4294901761 65535 131071 65535 196610 4294836225 131071 4294901762 4294901760 4294901760 4294901760 4294901761 65535 1 131072 65537 4294901761 4294967294 4294901761 4294967295 65537 4294967294 4294901760 65537 0 4294901760 131071 4294901762 4294901760 4294967294 131073 65537 4294639617 4294901760 65532 +7180286108 2837910580 4805969914 6663145588 692560277 633585785 1288025150 782157731 4189382490 3312477086 958640458 1070047065 191834520 110954995 347219876 127320436 74010293 134611189 251041074 517901069 373619273 346336747 309180068 973624603 406885805 444251827 334254365 409321913 282700762 478584273 384632376 199537764 +65527 4287627376 720645 7143573 4270718896 757145 550817 4756 110245 627298 2308393 3108865 1528705 394837 22105 77480 128825 28885 64786 356546 427561 136421 219413 394501 101677 10324 97448 164900 80532 3474 4205 6376 3194 24336 28793 16978 39217 62442 41893 34033 29768 21305 25000 39546 41922 22181 7748 8082 44314 59252 16609 9872 19269 33172 20354 29530 19058 6586 185 2600 2665 8770 25640 34101 14837 1801 5545 13225 2725 60586 65185 17101 3796 4450 841 11041 14836 2768 13840 35537 48501 48365 30717 6928 5634 17405 12753 2501 4226 5077 6109 2628 2818 6290 612 10250 16034 11080 18020 23857 10933 4754 2386 2378 617 2501 4097 850 4745 6925 14717 24905 15424 13428 12629 2873 2402 914 1394 2000 2113 2290 4293197850 4294508530 262138 196610 4294901760 0 4294901760 0 65534 1 1 65535 4294901760 4294967295 4294901761 65533 65536 0 4294901759 0 4294901763 4294967292 196607 1 65534 196607 4294901761 65534 131073 4294770688 131070 131074 4294770688 0 1 4294967295 4294836223 131071 4294967295 131071 4294901761 2 4294901756 196607 4294967295 196608 4294901760 0 65534 0 131074 4294967294 131073 131071 4294901760 131073 4294770689 4294901759 0 65536 4294770689 131069 65537 131071 4294836225 4294901760 131071 131072 4294967295 65537 131072 4294901763 4294705149 262143 4294836228 4294967293 65536 2 4294901760 131068 3 4294901759 131072 4294967295 2 4294901758 4294967295 65537 65536 4294836223 4294967294 131071 196607 131071 65538 4294901760 196606 4294836224 1 196607 65535 131074 4294901760 131072 4294901763 4294705152 65535 4294967294 65536 1 65535 3 4294901758 4294967295 65536 4294836225 65534 4294836225 131072 4294705152 262141 4294901761 131071 4294770689 131069 0 4294901761 4294967292 131072 4294901760 4294901760 0 1 4294901760 65535 +3549752231 1081587661 2098594318 15670333735 13125036779 2212510201 668787910 799489594 2728346648 2295605347 1496766054 1019414618 350942674 121873407 341801137 545001242 382478865 397069631 417857927 361768822 317470503 130730389 284446221 477789783 266571294 486338168 433798147 131472826 231804649 215843507 191568207 245515551 +65510 4294901712 3276886 2293679 4285661173 156157 269009 831353 2287433 5069896 5219405 1429909 523673 282761 22160 7156 35410 43040 4797 22697 55777 17650 43880 94032 53312 10404 4493 1354 8164 1813 1789 4426 2692 1600 3796 1616 3601 7218 11489 8425 6185 10693 8593 2837 2210 1217 1508 5617 9577 18778 24293 9850 2209 1249 10769 8389 1745 1028 1945 1165 4 185 26 601 1066 985 1697 4580 7957 5725 2813 1585 1885 5113 4797 185 1989 1445 356 149 3092 6400 2722 2061 937 521 3577 5085 5917 7400 4513 980 596 1521 274 2969 4356 2276 3961 5924 2020 149 596 1373 2861 2624 2609 3209 1865 584 13 514 2141 3764 3233 697 205 569 505 272 73 50 4294311938 65532 327679 0 0 4294901762 4294901760 65535 0 0 65535 65536 4294967295 0 0 0 4294901759 65536 65535 4294901761 4294967295 0 65535 1 4294901761 4294901760 131072 4294901760 4294901760 131070 0 4294901760 4294901760 4294901760 0 4294901758 65536 4294901760 4294967295 65536 4294967295 1 4294901760 0 65535 4294967295 65536 0 65536 0 4294836225 4294967294 65535 4294901760 65535 4294836224 65535 65534 65536 65535 65536 4294901761 65535 65537 4294836224 65536 4294901760 0 4294901761 4294967295 4294967295 4294901759 131071 4294901760 4294967295 4294967295 65535 4294901762 4294901760 65535 131071 4294901761 65535 4294901761 4294901759 4294901759 65535 65534 1 4294901760 4294967295 65535 4294901760 65535 0 65535 131072 65537 4294901760 0 4294967295 1 65536 1 4294901761 4294967295 65535 4294967295 0 1 4294901760 65537 65535 0 0 4294836224 65535 0 4294967295 65536 4294901760 4294836225 65535 65535 65536 4294901759 4294901760 65535 65536 0 4294901760 0 4294901760 0 0 +1100895391 5944158185 20634198057 31279035181 5532838495 1211751434 185620946 218129583 278239137 438555499 472347464 49821426 37765394 32961789 36121470 99356229 107249759 41443901 150329006 156190804 76305527 13528800 19747772 80944325 59395556 38588595 59382503 92873214 60702491 59337446 51312578 39023889 +65492 2293792 4293328932 4283367266 39714803 780930 883885 1639913 4933325 10029193 6855281 991978 493637 432425 155513 56900 21289 33800 20813 1513 29236 14314 2594 18577 3301 4321 13456 12209 16677 13141 1780 49 148 2304 2785 113 1181 1241 1765 7748 8522 9457 9421 1853 11882 20736 14594 3700 1625 3730 9377 10196 4421 1453 1097 5213 8840 6498 2701 4321 4717 3466 5380 4265 2705 2074 2450 1746 202 242 689 674 2081 3978 576 5185 13274 13549 6154 778 2770 4825 2729 730 493 2080 3617 2500 1602 1450 3005 5737 4394 2834 2213 2340 3029 3869 9601 18005 14837 5300 745 580 2601 3874 3076 1088 58 565 130 169 1069 1769 125 292 229 82 65 104 360 208 65537 4294967290 65539 0 0 0 1 0 4294901760 65537 4294836224 131070 65538 4294967295 65536 65535 0 4294967295 131071 1 0 0 65534 4294901759 131072 65536 4294901760 65535 65537 65535 65536 4294967295 65536 4294967295 196609 4294836224 131071 0 65535 65537 4294901760 4294901760 65536 4294901759 65535 0 0 65536 65535 4294901761 4294901760 4294967294 0 131071 4294901760 65536 2 4294901760 65535 4294901760 4294901760 65535 2 4294901761 4294967295 0 4294836224 65535 0 65535 131072 1 0 65537 4294836224 65535 65536 4294901760 4294836225 0 65534 4294901761 4294901760 0 4294967295 4294967294 2 4294901760 65535 65537 65535 65535 4294967295 65534 4294967295 1 0 4294901761 4294901759 131071 4294901761 4294967295 65537 65536 4294901759 1 65535 196606 65536 65537 65534 0 4294901760 1 0 0 65536 4294901760 0 1 65536 4294901761 4294901760 4294967295 65536 65535 0 4294836224 4294836224 65535 0 4294901760 4294967295 65535 0 +4410573765 12774598301 41832160677 44700663352 4576701622 2082746085 429967465 197563025 141399631 109501830 78255428 121860269 105534550 11302932 16973718 40400621 107411346 162682307 97826762 89032476 78784929 77709024 59426154 19965316 74563247 131305094 47049398 66518581 117846439 170567788 35402405 12946196 +65492 4286382203 27655901 4254794552 8977691 282146 867609 445460 620330 3301829 8228340 3806288 130792 1093 165818 354960 243236 152921 47888 47185 161114 124813 14425 20266 34450 1557 27145 32317 41288 54521 47858 23725 10000 4586 1225 5273 6658 27154 59077 65620 32825 4265 18581 33529 10760 7045 16666 113845 126565 33524 4033 7025 13005 6884 7045 31568 91177 126340 63268 5576 16976 37234 17245 2720 18770 12050 1042 2098 6125 3026 1865 24946 52105 34330 5512 1625 11969 6250 1313 12994 7090 58 4545 10996 4493 2009 7652 7240 689 104 6442 24037 16025 2074 386 1417 2509 548 6084 9857 5770 4724 9512 4369 13021 14733 5125 1153 3730 14482 17161 9365 5441 9745 9745 6737 6805 6373 5809 4329 2434 2417 2490393 4293066754 589816 65539 4294836223 0 0 65534 65536 2 131071 0 65536 65538 4294836224 4294901759 65537 4294967295 4294967295 0 4294836225 131071 65536 4294901760 4294901760 327679 4294836225 65534 65536 4294901761 65535 4294967295 196610 4294901761 65536 4294836222 65537 131071 4294901761 196607 4294901762 131070 65535 4294901762 4294967295 131072 4294836224 196610 4294901758 1 0 4294901761 131071 4294901761 131071 1 4294770689 4294967294 4294901761 65534 0 0 65535 4294836224 4294967295 65536 4294901759 131070 4294901761 1 65535 4294836225 131068 131076 4294770685 196608 4294901760 65536 196607 1 131073 4294836224 65535 196605 4294901763 65534 0 0 0 4294901759 196607 4294836225 65533 196605 65539 65536 4294836224 4294836224 65534 65536 65537 131070 65540 4294836222 4294901760 131070 65538 65537 4294770689 65535 4294836227 4294901756 65534 2 65534 0 0 4294901757 131071 131071 4294836225 65534 65536 65533 65539 4294967293 65536 4294901762 1 4294901759 65536 4294770688 0 4294836221 2 +2894552609 3797055728 11070337016 44830023179 9421062938 919576239 2136647181 971272589 885414244 579265818 215974286 277805290 496340961 184461986 73794839 510567707 352635930 304997437 990823923 206599052 856982848 658699988 232404631 156340838 418513647 131715390 125235512 160984806 125341342 184518063 235497079 227972411 +65513 2686852 24182636 4286252162 4233886599 773152 171296 834637 2947113 3480034 181789 1832648 2328178 688005 524232 505921 232360 128578 78073 100369 14324 70402 97316 10141 54557 143226 60328 5668 3653 5524 6929 1017 914 226 1940 21061 73540 196180 213970 53146 4505 26469 18756 12868 10312 6184 4457 28442 56009 45764 37264 31378 11700 841 4706 5617 333 13625 27200 4717 712 1525 21290 27044 5202 85 586 7450 5625 5458 11965 7433 1000 17117 11945 2258 6689 14501 7893 1088 11357 9572 7328 16865 20800 17728 19172 21365 10674 5096 12944 20717 12506 7300 2858 4036 11257 10984 5485 6409 14625 27437 40690 40954 23329 4645 290 436 954 2340 15250 15220 11729 10634 6786 5746 4768 2080 884 545 1637 1108 4294770699 327684 4294443012 4294901753 65537 65535 4294901762 65534 4294901762 4294836223 131071 0 4294770690 131071 4294901761 4294967293 131071 1 4294967294 65536 4294836224 65536 65535 0 262143 4294836227 131070 1 0 4294901761 65534 2 131071 65536 4294901762 4294967294 65534 65537 4294901762 4294901758 4294836225 1 1 4294901759 4294901759 65534 65536 4294836226 4294901757 262143 4294836225 65535 0 65535 65534 131075 4294901758 65536 4294901760 1 4294967294 65538 4294967295 196607 4294836226 131071 4294901761 131072 4294836222 196610 4294770688 0 4294967294 4294836225 4294967295 65535 4294967295 131071 65536 4294901763 65532 131071 2 4294901757 393213 65538 4294901764 4294967295 65538 4294836225 4294967295 4294901758 131073 4294901758 0 4294967295 131073 4294901758 65538 4294901759 131071 1 4294901759 65535 4294967295 65537 4294901760 65535 1 4294770688 65536 1 4294836224 131069 4294836225 0 131071 4294967294 131073 65538 65534 4294901762 65536 65539 4294770689 65533 4294836226 131069 65536 262143 4294770688 1 4294967294 196607 3 +2696561632 6478771567 18237271645 9249167455 13258896558 5487310594 2927509458 1023239367 538600627 584901084 696905960 447012548 54857462 18338811 432082218 1686129018 366641126 156393143 512191027 344969883 115854742 173670715 179416736 110651092 181075210 171004213 331721282 316314710 208810463 532662227 243854811 196314357 +65483 983067 4288937820 34537729 4249485354 79637 37885 459316 1148458 897056 1375700 1389818 619805 169177 29097 30280 99257 49985 14330 13637 4745 2421 2465 13621 45890 17316 6370 11905 9530 9090 13901 21908 16040 5128 4097 17674 31520 21460 5186 8026 5834 954 225 2069 4469 3258 522 1250 1421 2930 8874 17352 15490 4658 250 778 3060 5402 2473 853 80 1445 5716 5701 1213 232 2890 6749 7193 1700 125 116 2248 1521 2125 2452 1649 466 794 2689 2080 530 197 2725 3650 985 657 2340 2125 410 1424 4105 4040 2704 1409 298 569 1105 514 281 629 698 2448 7688 4437 405 125 725 2169 5252 4925 3204 3610 1332 361 709 800 544 580 689 298 25 4294574087 65530 1 4294967295 0 0 0 0 4294901761 0 0 65536 0 65536 1 0 4294901760 131071 0 196607 4294901761 4294901759 65535 65535 0 65536 4294901760 65536 4294901760 4294967294 65536 4294901760 131071 4294901761 0 65535 4294901760 4294836224 131071 4294901760 0 65535 65536 4294901760 4294901760 131071 4294901760 0 1 0 65535 4294836225 131071 1 65535 4294967295 65535 0 4294901761 4294901760 0 4294967295 131071 131071 1 4294967295 65536 131072 65536 4294836224 65535 65535 65535 0 65535 1 0 131071 4294901760 131074 4294770688 4294901760 0 4294901761 4294901760 65537 4294901760 65536 0 4294967294 131071 4294901762 0 4294901760 4294967295 0 65535 131071 4294901760 65535 1 4294901760 65536 65535 0 65535 4294901760 4294901760 0 4294967295 0 4294901761 4294967295 0 1 4294901761 0 0 65534 131072 0 4294901760 4294901761 4294967295 4294901761 65535 4294901760 131072 4294901761 4294901761 65534 0 4294836225 131071 1 +325785899 2972654488 6067265796 9334371356 5637012374 984307289 458104498 335088999 76713832 50761382 262959506 105377715 131984032 159794061 181939775 177845178 41791465 35482416 42788660 156130189 48261205 38297859 56378337 62910556 31262894 30750286 39552841 47077650 36096826 49911884 74330384 43967527 +12 4294770566 4276617394 53607463 5900119 3021346 860317 1050113 6327085 8662600 5575498 1084240 450617 65349 308768 487565 146690 15140 29674 59357 93901 243828 383162 194192 370 85418 105370 65938 26093 27770 50404 30545 6341 38281 60370 38186 40450 33293 857 13320 13481 12946 29709 45530 21325 900 12928 21892 30250 34229 22061 15178 22250 47673 48313 45841 28372 3332 488 3418 9613 1913 3616 5098 281 4594 1181 785 490 12676 32058 27898 14618 8845 15073 35285 29993 3988 1394 1040 449 2624 3697 2305 4733 1994 680 8321 10900 5653 10880 5018 1930 6442 6917 5525 6100 15769 13513 2925 7346 22932 32689 17429 5968 11125 6905 3730 365 3929 6100 3434 6920 569 3600 4040 3778 2848 1877 1300 328 178 4294836225 4294770695 4294967288 196610 4294836225 196606 4294836226 0 65534 4294836224 327679 4294901761 65535 65536 4294901760 196606 65537 1 4294901760 65533 1 65535 2 4294967292 1 4294967295 131072 4294705153 65531 196612 4294836223 4294967294 4294901763 65532 0 4294901760 131073 4294967294 65535 2 4294901760 4294901760 4294967294 196607 4294901762 4294967294 131070 4294901761 196607 196607 4294836223 65537 0 4294901760 4294901758 196608 4294901761 65535 4294836225 131070 2 0 4294770688 196606 1 4294901760 4294901760 131072 4294836226 65535 3 4294836222 0 4294967292 0 131072 4294770690 4294967293 65538 4294836225 4294901759 4294967295 4294836224 4294967293 262143 4294901762 4294770689 131070 1 4294836224 4294967292 131073 0 65536 4294901761 196607 0 4294901761 65537 4294836224 4294967293 4294967294 196608 4294770688 131070 4294901759 65536 65534 4294901760 196607 131072 65536 2 4294901759 131071 4294836227 0 65535 4294901760 131073 4294967295 65536 1 0 4294770688 4294901759 4294967295 65535 131070 4294901761 196606 4294901762 4294967294 131072 2 +10990759093 12003943325 42266037627 37612699642 4202785560 1862249317 2302618798 370490871 847458520 2504998573 918153876 744446242 396277496 330378407 518987036 245698150 264961315 293261687 345452014 442180495 506957636 87733807 52827940 199969695 396467384 174260642 71157899 153940723 181696593 384841219 165598855 94858503 +65514 4293001326 4287430923 4251581358 105251650 1535482 1575605 4387666 8959808 2184674 1582309 4062725 977993 383440 336232 52666 31729 7481 65572 55764 50989 178949 367033 398890 237653 51641 4608 10525 2410 2378 1597 1601 4849 6961 14473 41810 95778 41876 5648 30202 14365 2873 14386 3748 38440 42289 16666 23965 45245 26570 9448 9549 17000 13138 8986 11817 421 11290 14885 9061 7857 941 10980 23165 12773 2260 1105 3890 8356 4148 3445 9901 6173 2000 4885 12674 26261 17044 1405 5392 5290 1800 290 1156 8485 23113 35685 36497 17485 4973 10730 15332 3757 169 4450 25930 43154 16936 3373 8 4253 1570 5122 7673 1538 1460 1378 5930 4052 145 6673 12752 9986 3140 1642 449 2089 3341 40 1753 2105 1024 4294377458 458750 65540 4294901762 65534 3 4294967295 131071 65536 131074 4294901761 1 4294901759 4294836224 131071 4294901760 4294967295 0 4294967295 2 4294901758 131071 131073 4294770687 65536 65535 2 4294967295 65535 65538 131071 3 4294901757 4294836226 65534 131069 1 0 4294967295 196607 4294836224 196606 131073 65534 0 65538 4294836225 65534 65537 196607 4294901761 0 65536 4294967294 196610 4294836223 131071 4294836228 0 4294967295 3 4294836222 65536 4294901760 4294967295 131071 1 4294901759 65535 4294901759 262143 4294901763 4294967294 65536 65536 3 4294836222 131071 131074 65535 65537 4294770686 131072 4294967295 4294967295 65537 4294901762 0 4294901759 65535 65538 4294967294 262143 4294901761 196609 4294901761 4294967295 65537 65535 4294705152 196608 4294836225 65534 65537 4294901761 65532 2 4294836224 65538 4294770686 0 4294967295 262142 4294770688 131074 4294770689 196607 4294770687 65537 4294967295 131070 1 4294967294 4294901762 4294967294 0 4294967295 0 65537 4294901759 65534 2 131073 4294705152 2 +8287008349 28381126978 34695907392 16789000355 13437895853 2788548039 607776570 312623176 651528790 2640181090 2139524770 135776980 29481891 55807068 467957774 433989861 161592354 364352505 413919453 218426838 154740493 156825765 176803172 97899529 165406399 184670220 259085635 365699794 354694505 138039161 121835372 103399287 +65485 4325420 262178 4274520333 4286577800 1028681 785525 1233296 2705690 2584465 738433 148096 109172 22345 19233 57797 45769 8273 3625 3809 7913 8593 170 452 13124 21250 8605 9953 5769 925 392 2050 2320 1412 1609 4122 13568 19885 23104 16712 5905 8945 12589 8738 9333 4545 797 338 3033 1666 613 605 857 2405 136 3145 3517 197 1445 2965 3616 2896 1921 1924 490 250 109 1250 2858 1301 45 305 292 180 1025 1445 2152 1261 1037 1445 2621 2466 1777 298 1220 493 193 73 2152 2740 1421 3274 2906 169 313 2777 8594 6865 2509 1201 1097 325 125 820 673 226 25 218 1810 3497 1549 100 1105 629 65 29 442 1138 1105 425 36 50 65528 131074 4294901760 196606 1 65537 4294901760 0 0 0 0 0 131071 4294967295 1 4294901757 0 4294901758 0 4294967295 4294901760 0 131071 0 4294901760 4294967295 131071 65535 1 0 4294901762 131071 0 65535 1 0 4294901760 65538 4294901759 65536 4294967295 4294901760 131071 4294901760 4294901760 65535 131071 0 65537 4294901760 4294901761 4294967295 65536 65535 131071 0 131073 4294901761 65534 0 4294901760 4294967295 65536 0 4294967295 65537 131071 0 1 0 0 2 4294770688 131071 2 4294901759 65536 0 4294901760 0 131071 4294901761 4294901760 65536 0 4294967295 4294901761 4294901760 1 4294967295 4294901760 1 4294967295 4294901760 4294901760 0 131070 2 65535 4294901760 0 65535 65535 0 0 65536 0 4294901760 65538 4294901759 65535 0 65535 65536 0 65535 65535 4294967295 131071 4294901761 4294901761 4294967295 4294836225 65534 65537 4294967294 0 65535 4294901760 65535 0 4294967295 4294836224 65535 1 +4911003947 8763526232 15394600326 7189649512 756198362 243463683 343585242 95431383 52850061 33645734 114133620 104520383 28547201 20236364 72365414 221040839 139421779 94663512 24179563 17080685 32425849 42222208 22805983 20806474 15004565 34699445 25032637 39707359 78535598 35508375 28240865 18823022 +65448 4282515537 28245573 1376977 4283170590 154760 387700 1140560 1980212 1208146 432692 341002 244325 58760 40842 261416 376081 233837 66617 26485 55130 111332 110752 79253 87165 56405 1460 42365 28900 11161 16861 9605 5200 5617 24457 20392 1717 149 3488 32485 32786 6205 1685 19890 38440 38545 14689 4633 1730 3341 25700 48544 35528 15129 15385 15028 8842 3796 53 10000 22688 12970 1937 890 4490 4162 725 2385 9685 10413 2465 898 1165 1037 7508 11090 8552 3442 442 592 11909 39257 34389 8138 5384 13050 7841 1346 7625 5569 9650 31117 35869 12170 1565 1125 9985 14625 4770 53 1517 3706 1994 4493 6130 2938 2624 2450 362 970 800 2080 5794 6472 1802 898 1825 1514 269 274 34 293 655358 4294836227 4294967295 131071 4294901761 65535 131074 4294770687 196606 4294901761 196607 0 0 4294836225 131069 65536 65535 2 65537 4294967294 131070 2 131071 4294836223 131073 4294901761 65534 4294901761 131070 4294770687 262143 65536 0 65538 4294967295 196605 1 4294901762 65534 0 65538 4294901761 131070 4294836225 65533 131074 4294901759 4294836225 196606 1 4294901759 4294901761 131074 4294836223 4294836224 196607 4294836225 4294770686 131073 65533 65539 4294901760 65536 131071 4294836224 65537 131071 131070 4294901761 4294901760 65536 65534 0 65538 4294901760 4294967292 2 0 4294836226 65532 4294901760 0 131073 4294901762 4294836224 0 4294770688 65533 4294770689 65533 262145 4294836225 4294967295 262143 4294836226 4294901759 131072 65537 2 4294836225 65534 65536 4294901762 4294967293 1 131071 0 4294836224 131071 4294901762 196606 65537 4294901761 4294901760 4294967293 2 65536 4294836225 4294967295 1 4294901760 4294967293 4294967295 65537 1 4294836222 65533 2 0 65536 4294836224 4294901760 196605 4294836225 65534 +1378411220 6974660084 9598764672 4186331074 1725406180 684780427 2169545646 1424156315 484405791 914588364 717986872 286024031 202642971 107504739 166271847 138646137 222384425 358232022 159562359 433089923 190166981 166600545 76685655 96984659 90062497 199844955 324996331 286756381 255877843 100836359 68013968 64490643 +80 2031338 24772768 4269998602 5176605 862930 1767033 603850 25448 115985 289748 382852 481618 435425 63620 91802 9250 104905 223577 132625 37000 6730 10809 19720 40153 71968 58049 8842 3700 6037 6826 3060 925 1220 6656 17492 23060 22529 44325 49810 19732 11689 29224 21250 530 3625 6185 15426 22882 47497 80789 50660 3922 1285 1124 1753 4068 3393 2512 3257 4868 65 8258 15578 10169 5513 2245 3904 2665 533 11920 11945 468 8541 23445 22049 24445 27585 13729 4628 18269 34340 14978 1885 1570 5153 15921 17581 14737 12610 9553 15976 35325 19325 1440 10949 12296 11090 24197 18169 2074 1405 2410 4777 5008 1730 3562 2216 3490 5057 3560 2069 3133 5584 4000 1360 1082 2504 4385 3016 522 729 2031618 4293656576 524289 4294770688 4294967294 131070 4294901764 65532 196607 4294770691 65533 131070 65537 4294901759 196607 4294901760 262143 4294836225 65535 2 4294836223 131069 131073 4294901761 1 4294705153 65535 65535 65537 65535 1 4294901760 2 4294770685 65533 4294836225 196603 4294901762 65533 131073 4294901759 0 131071 1 196609 4294770688 65535 4294901760 131070 1 4294901757 131076 4294901758 327679 4294901760 1 65535 65535 4294901761 65534 131075 4294836220 0 131069 65537 4294967295 65534 131071 4294901761 131074 4294770688 4294836225 65534 65536 4294901759 131070 4294836224 4294967295 65535 65535 131072 65534 65535 131071 65534 0 131071 1 65536 65535 65536 4294967295 65540 4294901758 4294901760 4294901760 196607 4294770690 327679 4294770687 131071 131070 65537 2 4294836224 65535 65537 4294836224 131071 4294705153 65536 131070 2 4294901758 2 65534 4294836224 4294967295 131072 65535 4294901760 65535 65537 2 0 4294901760 4294836228 131070 131070 0 0 4294901759 1 4294967295 0 +6749167969 5310966082 625348962 2011130207 3103917658 1833241905 473889147 1147073253 789219547 132072786 439624698 338110434 61639154 30999599 160385005 424786885 317599916 137921697 425942590 486475842 40957736 68557134 141457430 89658927 280279769 399481450 251894730 354942073 352755460 181417864 93692656 86388788 +65302 12583204 4263378570 63177125 4212719771 260000 614681 631045 439353 4258321 6956797 4609834 2110429 449210 141661 13130 47122 164482 267361 238212 83233 46681 52285 46258 12424 4985 12260 25120 18265 10709 5141 4660 13250 19981 12577 17221 5480 14650 37060 13465 15353 19682 27220 22130 9050 765 7949 28549 17953 7757 12010 52993 51400 13025 725 8017 21008 18314 5553 725 1874 2146 20050 31946 18148 12800 13648 7880 5608 4441 10249 10282 10025 2938 9445 18280 4121 17629 15956 3368 3845 19429 13320 4149 3650 5716 2762 820 1277 4810 3361 164 8125 13226 5524 680 22237 29549 3573 4093 5185 3365 8621 17866 17905 5305 541 877 3785 11314 9908 2330 4 1924 3700 3092 3706 2834 1130 1865 2377 1825 2555900 4294443026 4294639614 262142 65537 4294836224 0 131071 65536 1 1 196606 4 4294901760 2 4294901759 196607 4294705152 327679 4294770689 131071 0 4294967295 65538 4294967294 0 65536 65537 4294770689 131070 4294770690 196606 4294836225 65536 4294901762 1 4294901761 0 4294770689 65534 0 0 131071 4294901761 262142 4294836226 1 65535 4294967295 2 4294967295 65535 131073 4294901759 131069 4294901761 196604 4294901764 4294967295 65535 4294901760 65534 131074 1 4294967295 4 4294901759 1 4294967294 4294901763 4294967295 4294967294 4294901764 4294836224 65535 131074 4294770689 4294967294 4294967295 4294901760 4294967295 4294967295 131073 4294836224 65534 4294770688 262142 4294967295 1 4294901758 131069 131071 2 4294901759 0 4294836226 131070 4294967293 196612 4294770688 65533 196608 4294901762 4294901759 196607 4294901761 4294901759 65536 65535 65536 4294770689 65534 196607 4294836225 131072 4294836224 65536 4294967294 4294901761 262143 3 4294967293 2 131070 65537 4294967295 196609 4294770690 4294967292 131073 4294770689 4294901759 4294901760 4294836224 65534 +2228758013 3860922313 12958321825 42569535724 18753064984 3033056480 465171772 1621218248 1366368893 479180367 199993446 164284814 124447333 130884997 166063678 249608692 268469255 176808652 241549506 453941159 209476733 129777923 308329916 161704970 186483300 240014684 146700237 87424784 247414711 239903892 163911599 89934460 +33 4283563984 12779434 7929744 2621936 165610 207073 290825 385097 1760429 2839745 1609760 442034 32013 6925 8042 3712 13172 27833 44500 21898 6410 1508 746 2257 4820 10853 11889 1625 2980 2561 2626 6337 977 6354 14004 9089 3001 2309 4789 8068 8500 5213 4082 1305 2340 6884 2389 2628 4505 1874 7250 9965 2980 610 353 2404 1885 13 1684 3645 1810 3033 7060 5341 4292 6154 6353 3604 3393 4360 3725 2305 136 5490 11773 5186 773 2305 4349 6849 1189 1898 1730 2041 4178 4057 2725 1657 2738 4489 2257 200 245 85 905 2610 1325 1090 985 34 1586 4034 1460 585 2333 1289 490 985 1348 488 221 900 709 901 905 221 296 520 680 962 740 655370 4294967295 4294836224 196607 1 131071 2 65535 0 4294901760 65536 2 4294836224 4294967295 131071 4294836225 131071 4294901760 1 4294770688 131070 131072 0 65535 131072 4294967295 4294901760 4294901761 65535 0 65535 65535 1 4294967295 4294967295 1 65536 4294901760 65535 0 4294901761 131071 1 4294967294 131074 4294901761 4294967295 4294901760 0 0 65535 131071 4294836224 4294901760 4294967294 65535 2 4294967295 0 4294967294 4294901761 4294901760 4294901760 65535 65535 0 131071 4294901760 4294967295 65535 0 4294901759 131071 1 4294901761 131071 131071 0 4294901761 131071 4294901761 4294901760 4294967295 1 4294967295 65535 0 0 4294901760 0 4294967294 2 65534 65538 4294836224 0 65534 65536 0 4294836224 4294967295 65536 0 65535 1 4294967295 65536 65535 1 65535 65537 4294836225 4294901760 4294901760 1 4294901759 131070 1 0 0 0 4294967294 131073 65537 4294836224 4294901760 65535 4294836224 0 65536 4294901760 0 1 65535 1 +981921049 1839318665 5986324757 16937531804 5370394950 390524988 54784028 174597656 247498023 44105349 32766124 85536044 34912885 43770492 97878196 60989880 86880344 47567967 52628401 81227357 27662193 38248479 89976008 83498668 82354097 84771869 61738901 59775987 27305025 40147973 29121503 18911904 +65478 18677585 4285203159 4259118296 52887581 528292 1368869 2140069 2163869 2178589 1239745 55700 21456 231844 204530 207274 433280 484520 175972 73861 62900 14692 25636 84317 96106 90100 114777 121757 60065 16465 1258 8333 15761 13690 67141 70600 33245 29725 28649 24917 25514 57170 65905 20858 50 9653 51482 93600 76861 46196 45037 47952 22480 3236 1018 997 2601 8501 2245 2725 23589 54869 62050 35858 23333 23530 11930 2417 6005 5641 4297 7765 2458 3114 16372 41218 28496 6628 87785 121064 66344 42026 25442 10729 7753 1444 7012 9572 16160 13120 39317 50881 21445 4633 1933 2885 3497 360 4013 20557 27880 9616 5066 10413 1186 2554 3373 2626 3112 5389 9700 4013 450 900 1160 530 362 2329 2504 4138 4106 1233 1179682 4293066743 917503 0 65538 4294901763 4294836224 65536 65538 4294705152 196606 4294901760 0 4294901757 65538 65534 4294901760 262143 4294901760 131075 4294901757 131074 65534 65537 4294836224 2 4294967294 65536 131072 4294901763 4294901759 262143 4294836227 0 4294836225 196606 4294836225 1 4294967295 65535 4294901760 65534 65536 131072 4294770690 131068 65538 4294901759 0 196607 3 4294967294 131074 4294901761 4294836222 131076 4294836222 0 65535 2 4294770688 4294967294 196607 65536 0 1 4294901758 131071 0 131070 4294901763 4294967295 4294901759 0 131071 65536 131073 1 131070 4294901762 4294901760 131070 0 131073 4294901761 0 2 4294770689 131069 4294770689 131071 4294836224 65535 65535 3 4294770686 262143 4294901762 65533 1 65535 4294901760 196607 4294770689 131072 4294967293 131072 4294901760 131072 65535 65536 4294836228 4294967293 4294901763 1 4294770687 131071 4294901760 196606 4294901761 4294901761 4294901761 4294967293 65535 131073 4294901760 4294770690 65534 4294901760 4294836225 131071 4294901760 4294967294 2 65532 +4813127041 12566699389 13082844505 8427270364 484645604 1504024072 2547359144 2673686483 648288796 357668585 907410788 1024591769 314612570 182934563 599268946 378911578 561754031 366772503 928286985 469398985 59436565 379515144 561681954 135133180 264077498 1209598503 474263768 468533054 246433937 261913996 109527904 61620491 +65419 4292149514 4282777493 4291166055 18677710 75917 631325 1619386 1522196 2086625 3683809 2709986 694564 92410 148733 386720 324090 42089 58640 114613 106353 70130 67113 89905 46594 6205 1125 19573 26154 5746 2020 4381 18056 34625 55456 79061 56360 6125 2693 2273 6833 4160 9629 1745 1709 3697 21074 24938 2600 1690 5508 19637 26725 8725 37 5245 10440 1424 11245 19242 10818 26996 4949 7157 1885 234 7681 20673 7673 289 5417 7717 2900 122 2581 13757 69277 110717 69953 27565 10629 5017 5537 13705 8941 1802 2250 7069 21460 20725 7177 49066 44789 17125 17389 12049 9256 1730 4925 14906 5945 10993 23285 16160 3250 1184 7146 2858 1557 11197 10825 4106 170 1369 2692 905 500 5785 5570 338 1658 3425 2752511 4294377489 4294508540 65532 65537 65534 65536 65536 0 1 4294836225 65532 65541 4294705152 131069 131073 4294836229 4294836221 196604 4 4294967294 4294901760 4294901761 65535 65533 1 4294967295 65534 4294901760 65536 4294901761 131070 2 4294901757 131071 4294967295 65536 4294770690 262141 3 4294901758 131073 65537 65535 131073 4294705154 131070 0 2 65537 4294901760 65535 65537 65537 4294836226 65535 4294967294 4294901761 4294836226 131069 4294901761 196607 0 65536 4294901762 4294836221 65537 0 131070 65539 4294770689 4294901759 65533 65536 4294901761 196606 1 65536 4294770691 65534 4294967295 4294967295 4294836226 131070 4294901760 131070 65536 131071 131075 4294901760 65537 4294967295 4294901761 4294901762 65532 1 65534 131074 4294836223 196609 4294770689 4294967295 65534 0 65535 0 4294901760 65537 131073 4294836225 4294901760 4294901760 4294967293 0 1 4294967295 3 4294836224 131070 1 65535 65538 4294901755 0 65538 4294967295 131073 65535 4294901762 65533 4294901763 4294901758 4294836225 4294967295 65535 +1723000379 8692041694 10853116140 22752064976 8914343954 1503676193 2359816603 809163005 855538770 703174981 433704754 124524739 110495301 220092074 660779188 179784049 70522154 99030830 161603184 204224364 113447459 231388479 132881881 138814588 294283155 971842590 183845225 459888531 399329293 271372669 157609500 84971990 +50 4291821357 23331131 4259839737 35848569 622505 1732802 2197666 1785928 3900884 6969748 3622169 574577 570314 359170 183569 294113 82053 55368 18421 29860 100026 106945 84505 24210 11560 17417 42913 47016 11412 797 6401 2050 4705 7604 10805 3893 4768 34957 55997 52040 38308 22345 10256 5162 8276 10985 2132 6029 11185 1744 256 3625 13320 21305 23825 9677 585 11565 6698 41130 105536 90340 33937 4330 1684 13352 8545 72 9608 21493 20137 6857 2309 11593 73181 106013 38281 21402 29608 34000 43216 19202 4804 4637 15242 24113 11026 4253 13474 18530 27833 22725 3209 11848 8712 1908 13472 6714 1060 13725 20474 9410 178 7114 2228 1538 5013 2080 425 628 117 521 544 1021 584 757 4181 2801 1044 340 2026 2162719 4293722105 524295 4294836222 0 0 4294836226 65533 4294901761 65535 2 4294967295 4294967294 131071 4294901760 65534 196606 2 65534 65537 3 65535 4294901761 65535 131074 4294770690 65532 131072 4294967295 0 131072 4294836225 65536 65537 65535 4294836225 65537 4294770688 4294967293 65536 4294901761 65534 4294901762 196605 4294901761 4294836227 4294901760 4294967291 196610 4294770688 131072 4294836222 65535 65535 196606 65535 65535 131075 131071 4294770690 4294639616 327678 4294836227 4294967295 65536 65535 0 4294967294 65537 4294901760 65535 4294901760 131071 65533 4294901761 131070 2 131071 4294836226 65532 0 131072 4294901762 65535 3 131071 4294836225 4294967295 65536 65535 3 4294836222 4294836224 196609 4294770688 4294901761 4294901759 0 196607 65538 4294901758 2 65535 0 4294901760 65537 4294901761 4294967294 4294901762 4294967294 65535 4294967295 65535 1 65536 4294967295 131069 2 131071 4294770689 65536 65537 4294705152 262143 4294836225 131074 4294836222 131073 0 1 4294901760 4294836224 4294967293 4294901762 65532 +5955798956 13011487852 16747084566 40355942156 11218700845 3274420136 1875658878 795480823 350443640 849401228 378564042 300207510 199351197 45863545 85186913 346101031 492575079 134782785 93329725 104266023 226234829 646316968 585231526 186119288 548549905 882535759 379305301 357415627 254453355 225306409 61600250 32835119 +65405 10682477 4286447735 4268425200 12058093 756640 4044410 3447860 2286585 2516978 2042708 324250 457210 997450 253933 124937 502605 594578 203508 116821 96730 125 87938 47545 8068 47666 43940 52240 41821 5780 12025 20450 8537 10049 6525 1570 3506 208 7045 8685 3925 3125 11108 6098 7361 8473 8765 30685 30293 7497 3365 12554 16801 11258 9973 2549 10980 21697 28013 15208 7417 76729 72497 6245 11089 33797 32833 8212 1602 937 3194 6290 7381 13032 20644 9722 20808 25657 4005 4981 8746 2665 25940 25985 13346 5954 3217 6442 9418 1025 1556 4808 10484 4573 3925 4973 650 19210 36522 31714 17009 6784 13009 6757 7274 2978 3330 2005 185 260 1352 809 74 937 965 4513 4225 100 1508 1250 740 200 1441796 4294508562 4294508538 65535 65533 262145 4294901760 1 65535 196608 4294901761 4294901759 131071 4294836224 4294901760 131071 4294836225 131069 2 131072 1 4294901760 0 4294901761 65534 0 4294967294 65536 4294967295 262144 4294901761 0 2 4294901760 65535 4294836224 4294901757 196608 4294770689 2 4294901759 4294901760 1 65535 4294836224 4294901759 4294836225 4294770685 196605 131071 65537 4294901760 4294967294 196608 4294836225 65534 65537 65535 4294901762 4294967295 4294967295 131071 65533 2 4294901758 262143 4294836224 65533 131073 4294770688 262142 4294901761 4294967294 1 196606 4294901762 131073 4294901760 4294967295 65536 4294901760 2 4294901757 131072 65535 65538 4294836222 131073 4294901760 4294967295 4294967295 65538 4294901760 65534 65534 65536 4294901760 131070 1 65538 2 65535 4294770688 65537 4294967294 131070 1 131070 2 4294967295 131073 4294901759 65537 4294967294 65536 65538 4294967295 65533 65536 65537 131070 131069 65540 4294836224 196606 1 65537 4294901761 4294901761 4294901759 4294901761 131070 131074 4294705154 65533 +11838552610 22156984835 14878391780 12647758850 3556377710 4060740550 2633194175 3236337077 900648528 494806198 336715032 464102756 219720549 138303264 53837886 58682030 82108336 129712051 272164505 174576002 200090207 520329331 541018536 170864530 246263075 260575469 289063917 119565437 255126675 369452892 63912690 47084642 +65511 4286709780 13041463 5439927 4251909637 1557200 1182649 1541682 1988416 763001 590229 686545 92218 115117 346912 395585 264721 90266 18181 56645 132545 100256 45044 94649 93098 34421 6137 11093 617 10009 27242 20609 5490 488 7496 13858 12500 15317 15524 12193 7290 2738 8969 23962 11745 6586 28642 41269 17425 12456 41984 65509 34600 1517 31842 44210 26960 22817 21605 4453 10280 53365 57812 15725 3029 12020 12260 1370 4453 14800 18250 13450 7688 3721 9792 13261 12658 6056 2960 6613 8452 13441 20250 24336 17597 6066 1440 1856 12017 12836 1618 4346 1864 6436 16660 29993 35789 13241 1066 3673 3464 35793 65000 51400 39821 36650 30218 24712 20660 13250 5050 7650 18530 23225 21402 20813 20308 20392 16145 6100 1229 250 4294377476 458751 4294901762 4294836225 131071 4294836224 65535 65536 65536 4294901760 131072 1 65535 0 4294967295 196607 1 65534 65536 4294967295 131073 4294836224 131072 3 4294967294 4294901765 4294967294 4294901761 4294836225 65534 4294901761 4294901758 4294901761 65533 131073 4294901762 4294901759 4294901761 4294901756 196609 4294836224 65534 1 65536 1 4294967295 4294901760 65535 327679 4294770690 65533 65536 131074 4294770688 4294836222 196608 1 4294901759 65537 1 4294770687 131071 4294901761 4294901761 4294967294 4 65534 4294836224 4294967295 4294901760 65535 65533 2 4294901759 65534 0 131069 3 131069 4294901763 65535 4294901761 65533 131074 4294901761 4294901758 2 4294836222 0 0 4294901761 4294901758 131071 1 65534 4294967294 262146 4294705154 4294967294 4294967292 262146 4294901760 4294901759 131071 65537 65536 4294901760 0 65535 0 0 4294967294 196610 4294705152 65534 131071 4294901760 65536 4294901759 131070 65537 4294901759 131072 4294901760 65537 4294901757 131074 4294836221 131072 4294901761 65534 4294901760 0 0 65535 +7418852477 9841116714 8646445852 4740775472 2076656057 1820878906 2458052915 715842561 756044873 743352930 694224940 113629248 148593534 126128948 119001275 171717464 121341830 232640909 394904848 550424478 456127913 409460680 359755392 189997607 200565690 188135115 298011472 154573244 371304148 773153329 661894937 487793218 +65415 5373654 1507908 21822767 4294312464 827713 2307780 822274 3331850 4827226 4347146 6191993 4376770 1055629 582317 151682 281538 356425 526525 112361 63125 293213 419525 273440 65650 86816 102589 69290 15668 34821 25605 725 13225 20693 11978 32162 34180 25636 82640 170953 111033 108496 51985 1853 35513 8513 13285 21001 22753 34120 9594 95042 62600 66664 62145 8552 52994 108980 63169 13850 36104 81325 37825 18866 20714 9945 10210 16829 12308 10525 1913 21841 40525 62900 59810 58066 58564 22805 40621 46196 18234 2745 925 11221 23764 16648 3442 8077 27325 21613 51080 72676 63522 33581 8641 25045 15794 8081 46490 18685 109234 160450 22736 20610 18317 32356 67477 41704 68725 53512 26792 26165 42797 26050 7328 4825 2005 1341 17722 15650 3285 2738 4291166223 1114088 65539 4294901761 4294836231 4294901753 262143 4294901765 65533 131073 4294836224 131072 7 4294705148 196604 4294901762 393217 4294770685 4294836226 196606 4294836223 4294967294 4294901760 131072 131071 4294836230 4294901754 196613 4294967291 65542 4294836221 4294901757 196607 65534 196609 4294705153 65536 65536 4294770688 2 4294967295 65534 196607 3 4294705153 196603 4294836230 4294836222 196607 65533 4 4294836225 131068 4294901758 4294901761 262143 4294770686 196606 4294901762 4294967295 65533 4294967295 262141 4294901763 262142 4294901759 65541 4294836223 65531 131073 1 4294901759 131071 2 65529 65544 65533 4294901763 4294705152 4294967294 65535 131071 65538 4294770691 4294770686 393215 4294705153 196604 4294967294 196607 327677 4294639620 262142 262145 4294770694 4294705146 262145 1 4294901762 4294770686 131072 262143 4294836226 4294901761 4294836222 131073 4294967295 4294967295 4294967294 262147 4294639616 65532 262144 0 131076 4294705149 131073 4294836224 4294901759 65536 4294705155 4294967289 196611 4294967292 262147 4294705156 4294705150 196606 4294639616 196604 65532 262149 4294836221 262144 5 +7928047846 10514725198 23134328842 35679202060 31108429793 7651737428 2201803923 3158697181 1540626881 2900683119 1372586694 731920790 298172871 148676784 295422333 990824747 1235861224 304410678 338340361 891490880 886560293 855966951 455502558 252757660 908360053 732981696 284796896 775448158 769196362 1512979353 1164291045 482140784 +65429 3801197 4285989046 4274519333 82379462 3714793 5318305 6057085 3584025 373061 153365 201140 1314965 534645 15809 87754 206081 362925 234664 35821 7585 1640 9665 24125 93229 55189 30421 11812 12010 22093 5904 545 298 545 904 19477 47605 57493 60205 31898 2257 2885 5050 13185 1117 5929 5002 1469 3973 17162 38216 29314 12253 28305 35122 12610 4468 2113 2693 1370 10309 31700 72080 45833 8720 3121 1609 1249 3098 4058 4132 8000 14642 21825 11986 4477 20168 4765 2165 4453 5986 13185 17924 10949 3221 3338 4133 12373 12890 9530 2770 178 801 2125 1762 1970 14625 16025 2225 16144 18650 2953 1576 16209 26960 10418 1450 13780 9425 1201 482 1657 6676 11765 5668 4050 7522 7325 6725 2690 122 292 4293328920 786407 4294770698 4294967294 131071 0 0 1 65535 2 1 4294967295 4294901760 65535 65536 4294770686 65536 65537 4294901757 0 131071 65538 65535 1 4294901762 131069 4294836225 131072 4294901762 65537 4294901763 4294901757 131073 0 4294770689 4294967294 0 65535 4294901760 65536 2 4294901760 4294901761 4294770688 196605 4294836224 131074 4294836220 196608 0 65535 196608 1 65537 4294770689 65535 4294901761 131071 4294901762 65534 131074 4294901758 131073 4294836226 4294836221 196608 4294836223 0 4294901760 1 4294836223 196606 65536 4294901761 4294770689 131070 65535 65536 4294967294 196607 131071 4294901759 196607 65538 1 0 0 65534 4294901761 4294705152 4294967295 65536 4294901759 196607 4294770688 131070 65536 0 2 4294901760 4294901759 4294967295 4294901761 131069 131072 1 65536 4294836226 4294901757 196608 4294836227 4294967295 0 2 4294901759 4294836222 196607 1 4294901759 65535 1 65535 65536 4294836226 4294967294 65537 4294836224 65535 4294901762 4294967293 131072 4294901763 4294901758 4294901761 65535 +23623554631 35394494905 14210622249 1539047576 5700295980 2476863507 1209012726 2147737903 402298794 102639732 593830974 248993803 141217279 12980440 236394340 578069988 130111427 76563384 153297318 392535717 224287771 282915574 439071281 77078682 252028480 166151812 195283824 144397132 153003714 293391894 220106443 162080020 +33 4289462225 21627058 4245946514 8584601 90473 414976 2950690 2608733 648369 1751165 2881090 1745605 308125 14368 20500 11629 25749 75025 16154 24677 39794 25253 78498 191105 105268 4616 1090 21425 75301 66260 29812 7157 485 17914 37409 15668 656 1241 11216 7865 12869 43681 66170 50641 33293 17370 8656 1521 8450 47125 49365 19828 7298 7400 7808 11629 9925 6121 2169 13460 25378 29160 17396 1565 1229 4040 5429 2866 3232 7432 10853 3805 884 2920 14530 26773 10676 3716 4973 4450 3370 11281 10865 6176 16741 13658 5837 1217 2285 2665 10093 12157 8693 4850 11281 26689 20978 5741 5545 1649 293 377 5273 9113 256 5328 4253 2197 3645 3490 1961 2186 6554 2117 2965 3610 1025 1973 4385 3328 1604 4294311966 4294115315 458751 65536 0 1 0 131069 131074 4294901762 4294901759 196606 4294901760 131072 4294901758 196609 0 4294901761 0 1 4294836225 4294967293 3 4294770689 4294967293 131071 196608 4294705154 65533 65536 0 4294967295 65533 1 4294836226 131069 131071 131072 4294901761 131069 4294901763 65534 4294901760 65536 4294967295 4294901762 4294967294 196607 4294901760 262142 4294901761 65535 0 0 4294836224 65535 4294901760 131070 65536 1 4294967295 1 131069 65537 4294836225 196606 2 196605 4294836227 262141 65537 4294901761 2 4294901761 4294901759 65537 4294836224 0 2 4294967295 4294901758 262143 2 65535 131074 4294836224 65538 4294967295 1 65535 1 2 4294967295 65533 131074 4294836225 65536 4294836226 4294967295 65534 4294836226 4294967295 65533 3 4294967293 65538 4294770691 4294967291 65538 4294967293 131073 131071 4294836224 4294901760 4294901760 131072 4294901762 4294836224 131075 4294705153 65533 1 0 65535 65536 0 4294901762 4294836223 196607 4294770690 131070 1 4294770689 196608 65535 +1252719074 14398893403 10859527460 13061193324 13240512230 2017557642 135854050 335685158 267622253 392171933 1215484130 233473405 564412739 222547375 231821509 87021685 318629949 580571438 219511774 412018020 147011999 220643777 203455138 89939285 154581398 189620851 202916053 151894800 292746372 130303163 99560020 87839523 +65419 4849684 6225992 4279697779 4288412792 1554085 1490450 696392 641842 1639834 7010125 6496241 949645 154244 61605 65425 34625 24106 38800 75490 59450 67589 197341 319465 186337 16981 22340 52825 78773 67769 13162 15665 15586 265 14569 10777 4772 33989 56394 51124 26597 8765 14948 19449 5402 3529 11701 6653 170 5938 5044 17357 23981 7381 2650 1546 3418 3005 19265 12064 829 89 45 1973 6010 2498 2960 9754 7913 3065 4133 5309 785 3988 14741 28580 18005 1396 3305 2248 405 1060 5045 21685 25000 15850 7720 7253 14261 17092 8116 145 3392 5602 7085 11540 32525 33597 10970 493 1402 2057 373 4360 5513 1058 5305 11861 9881 4933 7178 16385 14578 2770 340 2165 2048 1233 1033 740 386 1 720890 4294180871 262142 65534 65539 4294901759 2 4294967295 4294967295 65538 4294901760 131073 4294836223 131071 65537 131071 4294836224 131074 4294901759 65534 4294901759 131072 3 4294901756 131071 1 131070 196607 65536 65539 4294967295 4294901762 4294836221 65536 1 1 0 4294836225 4294901760 65537 4294836222 4294901759 131071 4294901760 65535 131071 65536 1 1 4294901759 4294967295 65534 196607 65537 0 4294901761 4294901757 131075 4294836223 0 131072 4294901762 4294901760 0 4294967295 131073 4294836226 196604 3 1 4294836224 4294836224 65534 65536 4294836224 131070 131071 131075 4294901758 1 65537 4294705152 196607 4294836225 4294901760 131073 4294770688 65534 65535 65535 4294901760 4294901761 65534 131076 4294705152 4294901757 262143 4294901764 4294967294 196610 4294836224 4294901761 65536 4294901759 131073 4294836225 131069 65539 4294836224 4294967295 65537 4294836224 4294967295 4294901760 0 131073 4294836222 2 0 4294967294 131073 4294836226 65535 131070 4294836226 65534 65537 4294967294 131073 65534 65538 4294901761 65536 4294901759 65535 +8140037620 5823570578 6890255178 42057838819 18794511313 1274369067 392094795 310414680 558606828 1571754616 1607541006 421514817 548857322 137486958 131860091 480050694 294248226 134600860 81883582 189721940 90830919 109094917 56525695 101515509 190477468 141464979 275775163 228652878 320289931 149924776 207833913 123357813 +65501 4294770691 3735530 1900546 4391180 259400 441338 555300 713410 1031220 2042969 2008480 1052861 426178 130010 29600 12554 3026 1961 2353 970 12850 54673 74762 15300 2925 6098 320 3370 2009 1073 8929 9928 1640 724 1332 2665 18820 23850 6890 85 2117 2965 1125 68 1202 5524 6277 3860 6340 13850 24418 19213 2809 965 2938 5057 18397 29489 18945 8020 5113 3541 961 164 1213 1585 5 2626 4090 2312 1684 4122 772 4100 5760 904 6464 9488 4625 533 1241 3809 3029 242 136 289 1745 4129 7396 3364 740 857 1865 2258 6500 14381 6800 562 2834 4450 4420 3133 1565 1217 3065 4057 2169 218 340 801 293 328 1921 2225 1517 2045 2729 1801 1258 1636 1872 1179622 4294901773 4294705152 65534 65536 65536 1 65535 65536 65535 0 0 0 0 65535 0 0 4294901760 65534 1 131071 65537 4294836224 65537 4294967294 131070 1 4294967294 0 131071 131071 0 4294901760 1 4294901760 4294967295 4294967295 65536 65535 0 65536 0 65537 4294967295 4294901761 4294901760 0 65535 1 4294901759 131072 4294836224 196607 2 4294967294 4294901760 65535 65535 4294901760 65534 1 131072 4294836224 4294901760 0 4294901760 4294836224 131071 65536 4294901760 0 4294967295 4294901760 65536 0 0 4294967295 131072 4294901761 4294967295 4294967294 65536 4294901761 65536 0 65535 4294901761 4294901760 65536 4294967295 4294901761 65536 0 4294901760 4294901760 1 65535 4294901760 65534 65536 1 65534 4294901762 65535 4294901760 0 0 65535 0 0 1 4294901760 65536 4294901760 4294967295 65535 4294901760 0 4294967295 65536 1 65536 0 4294967295 0 4294901760 65535 65537 131071 1 196607 4294901761 65535 0 1 +1815637874 3568197906 5166037614 13304675121 8912509802 2301628493 265287052 32813507 29952031 375597467 265789246 31561726 29903417 69841397 35983956 169608506 39637086 27584505 96971589 210476099 139632021 233024928 32581846 41560165 62014558 97974207 37350504 68202916 118092531 91633746 42079014 44716264 +65516 327653 6946909 4278845492 4294180669 51538 222037 1028845 2040116 2852545 2398964 827300 409253 249026 136197 258505 544085 567890 255986 61073 17960 23162 110548 112945 47170 37636 4849 97 3577 23090 19465 1490 18560 30152 16642 21352 9605 3589 18281 9469 12337 9620 23173 22280 5281 5785 14504 11450 2260 5840 33085 73341 16081 10361 23337 13621 4925 6793 45821 33541 14689 25604 21290 6093 5501 16153 16776 7712 11713 13138 17914 30308 30440 23656 7396 13653 54613 44740 5000 9077 6148 14081 2512 1553 153 9026 28786 19865 2329 13000 10882 1985 149 2873 3985 13730 23578 5300 2785 2938 410 745 937 901 1413 7345 4000 2330 4325 2858 1825 2362 1153 225 1258 541 2920 4397 2952 661 1377 5364 3932140 4294246420 196604 65537 4294770688 65537 0 0 0 2 0 4294967295 4294836223 65537 4294901760 4294967295 4294901760 4294901758 65535 0 65533 2 4294836224 262143 4294836224 0 262143 65537 4294901761 4294901759 1 4294836222 196607 4294901760 65536 1 4294967295 4294836225 65533 131073 4294901760 4294836224 65533 131073 4294901761 4294901759 65534 131074 4294901759 196608 4294770689 4294901759 1 4294967293 4294836222 262145 2 65534 2 4294836225 0 4294901760 4294901760 4294901759 131072 4294967295 4294901761 196606 65535 65534 196609 4294836224 131070 65538 65534 2 0 65534 65536 65536 65535 4294836226 131069 65537 65537 4294901760 1 1 4294967294 4294901762 131070 4294836227 4294770688 65533 65539 4294901761 4294836225 196606 4294901762 4294836225 4294901759 1 65536 4294770688 65535 131070 4294901762 0 4294836224 65534 196607 4294901762 4294901758 131069 65536 65536 65536 65536 4294836227 4294967294 196608 4294770689 4294967295 0 4294836222 196609 4294967295 65539 4294836223 131072 4294770688 65535 131069 4294901760 2 +679549357 6337421806 14084578207 15472174351 3674276710 1626583953 3035532487 3298124769 566591630 696815515 589970900 85196334 154178937 189888941 211903465 141773909 193961282 169966663 181384300 477779183 252552003 419142260 235109221 295002447 489444336 400512313 179675619 229045914 190122325 71261613 81524660 52752179 +65427 4292411402 11337817 4281466899 4294770478 509690 2183017 1860665 3012128 3056941 1360372 2811194 177973 626585 588209 550049 866489 1068112 523162 143953 128745 99713 32525 154970 90621 129380 315418 350370 231025 67709 10829 13274 85933 111722 85453 160285 346853 339524 158506 58378 19345 60257 228653 301597 167873 64501 44186 43682 73757 131762 87905 55738 154404 73124 9314 28970 7250 66610 128330 47240 6464 10242 65969 76661 83653 24466 8306 26729 28629 27289 45370 68276 66085 71833 26690 75242 264500 337301 303572 254228 199445 78160 7605 53685 115825 136953 61322 12053 36868 13345 7369 30821 29090 34885 25994 27514 32449 12805 33850 42664 14261 2738 16596 13837 2960 2690 14705 4141 464 260 3490 4868 4786 9505 5617 12148 12545 10553 7058 2257 2612 7297 4718604 4293459993 196609 4294443006 262143 4294705153 65537 131068 1 65537 65533 65540 4294901759 458745 4294901770 4294901759 4294901761 131068 4294836228 4294901760 262141 131075 4294705154 4294967293 196608 4294901762 4294836224 4294770688 196604 2 4294770688 262141 4294770687 327679 4 4294967295 131071 4294574080 196607 327679 4294901762 4294967294 4 65534 196611 4294639614 131070 196608 196607 4294836224 65541 4294836221 4294901763 65533 4294639619 65533 4294901759 458748 4294836226 65537 4294901761 65536 4294901761 4294901759 3 131068 4294770688 458751 4294770691 65536 4294836223 327679 131071 4294901761 1 0 131071 4294836227 4294770688 262143 4294901759 65536 262147 4294639614 0 2 4294508542 262141 0 196606 4294836224 196607 65535 131074 65536 65534 4294901761 262147 4294639616 327674 4294901769 131070 131071 4294901763 4294770688 4294901765 4294967291 4294705155 4294901755 196607 4294705155 131065 1 196608 4294836227 4294836222 393214 4294836228 4294836220 131074 196607 65539 4294836223 196611 4294901758 196605 65538 4294836231 4294770684 4294901760 196602 196613 4294705149 327684 65533 +6690001121 13819641770 17821382115 15052593019 7993930918 4237686504 5792575305 6170956221 1583154888 804851022 1317521490 2799342211 1129755519 730293398 2170310099 2523714349 1547582881 2105923327 1085263785 1374868672 735135906 849156531 891953600 647572760 1777103546 4637709535 1880820792 772903882 686462170 420434578 139411965 216279535 +65492 7405523 4286120072 10289061 4282974052 459409 512464 642445 4412500 5739506 2705588 328481 119144 238132 155860 87074 25285 21041 15112 5650 845 35802 153949 169069 78805 14449 21053 37865 14290 5917 2180 208 6322 19600 17812 11861 6113 1921 13320 8065 2813 365 6994 3816 7985 4849 193 4105 8744 16945 8993 640 13793 35125 43018 16369 2500 13297 7226 1280 5960 19396 33813 37925 31905 10400 673 2612 3541 1945 1802 7241 17210 4157 8473 20602 9265 3536 12365 2836 24065 55145 25748 3065 1665 7265 6905 4612 1018 4160 25873 35890 33218 37757 18805 2080 5524 3357 773 3362 7301 9970 3770 1205 3970 7709 2152 3161 4925 4392 2836 730 4276 5248 3202 2341 1234 18 505 997 629 26 1048563 4294639634 131068 4294836225 65535 65536 0 65537 131069 65539 4294901760 65536 4294901760 4294770688 262143 4294901760 65536 1 4294836223 262146 4294836225 4294836224 0 0 4294901758 131070 131075 4294770688 0 65535 1 0 4294836224 1 65535 65535 1 4294901760 65535 65536 2 4294901759 131074 4294770688 131069 2 4294901759 4294901759 196609 4294770690 4294967295 65535 0 327679 4294901763 65535 131071 0 4294901762 4294901759 131072 3 4294901759 131071 65539 4294836225 4294967293 4294836224 327678 4294901762 4294901759 65536 65534 65539 4294901758 1 4294967294 1 65535 4294836224 65537 4294901757 131074 4294901761 4294967292 131073 4294836225 4294967293 1 131070 65538 4294901761 4294967295 131070 0 4294901760 196607 4294901761 4294967294 262143 65538 65539 4294770688 0 65536 4294705151 131071 262142 4294901761 4294901762 4294967295 131069 65539 4294901759 196607 4294901762 4294901759 4294901759 131071 4294901761 65535 4294901760 4294901761 4294901760 131071 4294836225 0 4294967295 4294836224 131069 65536 4294836222 196609 4294967295 2 +2576846530 7887106348 28590018627 20259554678 1475143403 1321388518 526756454 148376018 85610426 982241714 816609030 242390414 92548948 91539878 150145675 93874171 55265478 69845679 110407413 247911019 298851808 199202026 405268852 82416156 191720992 323411760 303399863 360609094 362141232 126549461 102223705 68019463 +65483 2162739 4271833091 46988971 4266656233 57940 1235853 2511769 3794173 1355680 594596 350498 170420 420593 452930 327245 96122 67525 27040 5729 6385 62753 96829 42772 86225 54305 4820 4100 13058 22786 25877 14906 6442 17666 25121 21650 14033 18521 64621 95044 40840 3617 1361 925 6730 12802 5620 4820 18000 29045 6176 9945 16936 11185 24698 32996 22873 5218 2344 1669 5882 15325 11345 6125 3457 401 3985 4797 4948 4122 1690 1813 1576 1289 21704 33709 23741 20072 11866 1858 10682 20098 8676 482 40 2522 10037 11978 16010 16425 5309 1825 15140 12770 389 13325 18306 6697 2845 4645 6445 5380 2810 4100 13690 26064 19060 5140 641 1225 1565 2810 4176 1165 97 274 242 565 109 250 136 170 4294246375 1245186 4294574088 4294967292 0 0 65536 4294901761 196606 4294836227 4294967294 65537 4294901759 65534 2 4294901757 65535 4294967294 65536 4294901762 0 4294967294 1 131069 2 131071 65536 1 65535 131071 4294967295 65539 4294901761 4294836226 0 4294901762 4294901758 0 4294967294 196607 0 4294967295 196608 4294901760 4294836224 131073 4294901761 0 131071 4294836224 65535 4294901759 196605 2 4294901760 4294901760 4294770689 131066 65538 1 4294901760 65534 0 4294967294 65538 4294967294 65534 131073 4294901762 4294967294 1 4294967295 65535 65536 4294901761 4294836224 65535 131070 4294836227 4294967292 0 4294836224 131069 65537 4294836223 262144 4294836225 4294901760 4294836224 131070 0 4294901760 1 4294901760 0 4294967294 65535 65535 4294901759 65534 131074 0 4294901762 4294901757 65538 4294770689 65535 131072 4294901761 4294967295 196606 4294901760 4294967295 131071 65536 4294901760 4294901760 4294901760 131071 0 4294705154 196605 4294901759 65537 4294901758 65536 65533 4294901760 262145 4294836224 0 4294901760 4294901759 327681 3 +3104297449 15424324525 16041853687 5081039884 1925059696 3015870954 1837919511 417683449 153565466 619680784 623833410 140973309 212287710 169246675 238904272 603095298 332614046 86200723 198568905 229155020 316020800 119910581 105160177 66207829 232660094 321630478 148565277 244482037 224465013 200539505 201191098 28990018 +65522 3211288 4276813907 14023975 58852322 2819042 2126165 1389449 1344773 2036288 2569274 2177653 1127444 357850 286661 468305 278437 34697 129650 86074 5792 23090 57649 44690 38792 29817 8297 6445 13381 32045 19786 8722 17209 28746 4801 898 18580 57205 150858 230089 136465 33408 9028 2336 2610 16029 15794 14165 26561 13194 7265 67777 51169 4234 169 674 145 4153 6362 3445 562 776 7345 5882 50 1217 409 1165 2205 11428 10282 5536 2290 8210 35620 39656 7978 4936 8720 3460 7373 4849 1604 1082 6740 19450 18757 4777 405 17 3250 2025 784 2048 1160 23432 40445 15560 3025 8768 5813 785 170 450 3313 9700 6845 3733 4937 3188 4768 7897 7760 4905 2165 808 1413 2057 365 205 1033 580 4294836216 0 65532 262145 65535 65537 0 131072 65536 4294901761 0 65534 65538 4294967294 4294901761 262141 1 196607 4294705153 196607 65535 0 65537 65536 4294770688 196608 4294901759 0 1 0 65534 65538 4294901760 1 131071 4294901761 4294836225 65534 196607 4294901762 4294901758 131072 4294836224 0 65535 65536 4294836225 196607 4294770689 131066 131075 4294901760 4294901762 4294901758 4294901759 0 131070 4294967295 196607 131075 4294770685 196608 4294901761 65535 65536 4294836225 4294967294 131072 4294770689 65536 65535 4294901761 65534 131074 4294836224 131071 4294836224 4294836225 4294901760 65533 4294967295 131070 196607 4294967295 131070 65537 65535 65534 131076 4294967294 1 196609 4294770690 65536 4294901762 4294836225 4294901759 4294836224 4294967292 0 65534 131071 1 4294901760 0 4294836224 131070 4294901760 4294967295 131073 4294770688 65534 196609 4294901760 65535 1 4294836225 0 4294901763 4294836221 131074 4294901759 2 4294836223 131071 65536 4294901763 4294836224 131070 3 4294770687 65536 4294901759 131071 0 +13395391949 10226868149 10021641587 17258278094 9488778299 3034874960 2619684142 912831554 461552070 365750733 362883574 123507344 227194881 191310363 167188786 1468932321 1024710335 127877534 271661823 481507642 63021840 56963550 46330541 92130609 310777888 204309345 161588975 98490936 306449383 143066969 139612668 88350626 +65406 4291690812 4287692516 4277600504 4289002969 405313 1816490 2052801 1161541 315200 468161 2304938 1816490 709013 404473 204802 179600 729293 484706 544745 272884 87805 6970 104498 164305 200345 236980 229762 72641 8410 61924 119185 173330 194825 268112 258025 162586 81229 6800 234740 283450 73933 27529 16393 34985 97109 61385 94117 134865 50626 83104 101313 73908 127465 87481 58753 59732 38921 7330 3146 9745 17306 49540 63040 21024 12680 36788 50425 25625 16425 22313 9113 5317 30277 18100 22282 5330 70217 146353 48322 15881 18545 27010 23801 25010 22725 10421 4628 25636 22181 9605 26914 37636 18472 12629 80000 171522 132229 48061 31061 47545 36473 25408 13165 9857 23581 20386 12953 27229 9178 7709 15850 5013 1913 7684 7412 6130 9764 9050 4594 610 464 2162684 4293722120 524278 262146 4294770694 65531 4 131071 4294967293 262151 4294705146 196612 4294836227 4294836218 131067 393220 4294836228 4294967289 5 0 4294705152 65537 4294770684 65536 4294901761 4294901755 196615 4294508543 4294574073 524287 262140 4294705155 65536 262142 4294836226 65533 1 4294967293 262142 327677 7 4294836224 4294901761 131069 4294639619 65533 327678 4294836226 131069 327683 4294508544 196608 196604 131075 4294770687 131071 131076 4294901759 4294836229 4294770684 196610 65532 5 65537 4294377476 262139 4294770689 4294639613 262139 3 4294770681 393214 196606 131079 4294770686 0 4294770690 4294967290 327678 131073 131074 4294901762 4294705151 262143 2 262140 4294705158 196608 4294443008 262137 4294901763 131072 4294967295 4294836217 131076 327676 4294836224 196607 262145 4294901764 2 4294639616 196604 3 4294901759 196608 4294574080 196610 4294770685 4294967292 196609 4294770688 262143 4294836225 2 131069 262148 4294574080 131076 131070 4294639619 4294967292 131074 4294901764 4294770684 4294836224 262142 4294836226 4294967292 4294967295 4294967293 393215 65536 4294901764 65532 +5511067876 11964126519 5165671177 6379383989 12612646756 4591002424 2215408965 4557488349 3220687086 722144762 1597221408 1973353097 695914636 1813036564 2608078656 1561284647 1651988109 732998875 1346887344 1397611074 1031393610 341035614 625553176 481900370 399485779 1153064652 477281099 456673035 1626740414 1044344727 419127730 208348104 +15 4288085911 34602698 4264625254 1112742 828125 755417 419341 51521 573049 469849 269954 256418 358793 654418 1105364 1441105 1178973 485357 126482 121970 203284 451733 557120 175474 65050 63314 15588 170505 154568 111524 61000 14130 3005 15578 79924 72769 56125 29461 8090 54288 6178 10312 77650 222868 171601 32425 44532 30497 36945 68129 62901 42881 49349 48740 14985 16250 2173 8109 19972 31865 43049 23329 4420 13885 15650 14132 28913 54161 39538 23677 31904 53477 27425 24804 112781 250900 263885 97994 16160 19072 18245 33002 62441 29060 15266 20353 5284 6841 10489 14625 42986 54341 34336 53045 4817 12385 109 35578 32193 4941 4986 6856 25000 24650 31121 20090 3620 3701 22961 19093 22100 31905 17953 13364 16757 14761 9874 2516 277 1417 4469 3080193 4294574085 4294705163 4294770679 196609 131072 65534 5 65531 262147 4294836230 4294770680 131074 65535 131072 4294770687 196609 131071 4294705152 131071 65541 131073 4294508542 524286 4294508548 262138 3 4294836222 4294967294 393213 65538 4294770687 131075 4294967292 4294901764 4294967290 65539 65531 262146 65535 4294836227 262140 131072 4294705155 458750 1 4294705153 196608 65535 65536 4294901756 131075 196608 4294901761 4294705156 131071 4294901761 65535 4294836223 327679 4294705153 262144 4294770686 327683 4294770690 4294770689 4294901759 131067 262144 4294770692 262142 65536 0 4294836227 65534 327679 4294705152 327679 131073 131074 4294836228 4294770691 131069 4294901761 2 196607 4294901763 4294639619 196607 4294836225 4294836224 4294574080 327677 65535 4294639618 262142 4 4294901754 196611 4294770691 4294770686 65538 131066 4294770692 65532 65538 4294836225 196604 4294836229 4294967295 65534 196610 4294770689 131066 6 4294836221 196605 4294836222 196610 327677 4294639618 327678 3 4294967292 4294901762 131072 4294836225 4294967291 262147 4294836224 262140 131075 4294639619 2 65531 +4245510791 2911364353 1817951281 3240079600 1960884004 4224929249 9393275262 7078446278 1604866995 3363966833 2369526478 678503798 1401714121 405013220 567057034 533074256 406335772 1720259922 723708675 804565052 380546833 373741765 330089746 647287167 1433271445 2249083105 625932431 494033574 650545524 430181062 481972882 436360489 +65351 10354765 4289658527 55640882 4171890983 4160322 1481065 3805525 4670237 1296985 246065 815509 1193609 1022992 634661 231386 475306 925922 446536 35620 44197 57322 175240 340033 24417 109609 110804 41725 49306 30625 20624 19801 35810 72626 173385 139880 69098 39940 67762 130385 165458 110410 46925 2857 53829 69536 2789 27637 42017 48938 41092 43664 106301 138010 102493 29521 47378 81242 61924 19066 11729 3298 5441 4724 521 1537 185 1780 6032 29277 33826 55098 94250 57698 19930 59881 57850 17 46026 57089 36242 32749 31588 17957 22826 40609 62946 39780 6833 2180 1553 5072 11306 15705 71045 193825 196313 114010 106577 135720 108450 78849 56785 14701 1088 14500 6953 2050 13649 12625 1394 23101 15545 2041 6084 3028 3025 6010 3293 58 1553 2980 2752528 4293525524 4294901753 196606 3 4294639621 65530 131076 4294574080 4294901755 262141 2 4294836223 196607 4294508545 393210 4294901763 4294836224 4294901756 262143 131074 4294901760 4294639619 65531 65537 65534 4294836224 65539 4294836220 1 4294901758 196603 65537 65536 4294770691 4294836220 65533 65539 4294901757 196605 262146 4294901763 4294967295 4294967292 196611 4294967294 262145 65541 4294443008 4294967293 65538 4294770687 4294836221 262143 131071 4294770688 131069 4294836225 4294901757 3 4294574072 393213 131073 4294836221 196607 196607 4294770690 196604 65537 4294967291 2 327677 131074 4294705153 196608 4294901760 262143 65536 196611 4294770688 65536 65538 131067 65539 196607 4294901764 4294901760 4294836224 0 4294901761 196608 4294836225 262147 4294574081 4294901760 196606 0 4294574081 327679 4294901757 2 65536 4294639616 262138 65538 4294836225 196606 196612 4294639613 262144 4294901760 131074 4294770689 4294901759 4294901759 4294639616 196599 262141 131078 4294967293 196607 131075 4294705152 327680 4294770692 4294967294 65538 4294901758 4294901760 131072 1 4294836225 4294901764 4294901753 1 +15837441009 21566240869 19034108281 4396065580 7311081053 5853188690 3565186420 4912226756 834113530 1468120149 1309321896 760213287 349693107 561354554 1383019501 1055481694 1323427950 547426640 533256372 1195722014 1140699492 473574750 51822514 399148385 1051651936 822357546 731652471 421976218 2511470853 1910720663 289675973 183460534 +65500 4288217109 3407684 17891396 4284612746 233797 2654450 5277581 2268832 483025 1000004 1080400 564580 223434 51012 19925 50994 113920 40050 5545 6613 49320 110402 49041 28781 50725 27241 9540 5141 6242 8357 7093 7794 27565 47008 23530 11861 5410 200 1186 265 8000 37960 27077 3986 4909 3226 601 401 2080 18477 19009 6725 13858 10305 3898 1618 3001 148 884 6250 32308 54557 45124 21605 11026 11405 11509 7025 1289 641 9792 15650 4122 4457 7921 5017 2440 17357 14258 5337 3653 520 1073 2696 2088 10249 14669 6596 2205 1421 1949 1394 1165 1872 24698 31585 7858 1930 3626 90 5498 2393 628 2053 520 5017 2545 260 1060 7709 10565 1762 617 1781 1168 1154 1877 2465 1189 145 153 4294770675 327690 4294836221 1 65535 65538 4294836224 65534 65539 65535 65536 4294705152 196608 4294901759 196607 1 1 4294836227 65533 1 4294836224 131072 4294770687 4294967294 65533 4294901763 4294901758 4294901761 4294967293 131072 65535 65535 65537 4294836224 131070 65536 65535 196609 4294836226 196605 4294836226 131071 4294967295 65537 131070 4294836224 4294901760 131070 4294836225 262142 4294836228 65533 2 4294967294 2 131069 4294901760 0 65537 4294967294 4294901760 196608 4294770688 0 65536 4294901760 65537 4294901762 1 4294967293 4294836225 4294901758 262143 4294639616 131068 4294901762 131073 4294705150 131070 131073 1 4294967295 4294901759 327682 4294705152 4294901758 2 4294967292 1 65536 4294836222 131070 131071 4294967295 65535 196607 4294836224 65536 4294901761 4294901757 131072 1 4294836225 65536 0 1 131070 2 65535 4294836224 0 0 0 4294901761 65536 4294770686 65535 2 4294967295 196606 4294836227 65536 1 4294836224 65535 4294901761 65535 4294901760 4294901760 65534 4294901761 4294901757 196606 65535 0 +6991516564 26536810676 10241189823 6648423391 4781035548 1165600805 362196314 552572883 150283520 636935013 426124828 209705222 75465686 172375881 314739611 53009594 176027830 164570405 57387671 191428320 83954446 232355962 496243174 140564769 138010160 175709611 95524615 109665385 249133993 96933615 81765835 68175275 +65449 4293591003 12452007 4273995365 34669050 293746 1307921 4117220 6014125 3617786 883732 107549 515849 348125 18421 28561 171565 370773 309322 189800 166721 80650 55681 150820 120938 48905 17753 7120 1165 7488 2312 3725 7274 25034 39701 18685 8149 25226 39185 29682 30964 40277 25009 1369 6617 18122 25666 27136 22385 29585 54977 65237 29125 4549 2797 10889 10433 1952 928 3541 11714 13049 5693 9602 15145 17186 22565 15885 10250 19700 36853 76036 88520 41444 15325 18980 14705 296 17585 15250 3380 9860 22930 10820 2594 7058 8324 493 3385 6772 6586 7082 5024 4468 2906 9325 24797 17800 5553 3825 4090 392 776 1460 3218 5949 4936 4129 3305 4625 9076 8829 3860 2925 1669 1636 1706 1069 2061 1700 625 296 4294901747 1 262144 65536 4294770688 0 0 131071 4294901760 131071 0 131071 131073 4294901760 1 0 65538 0 0 4294901762 4294836224 4294836224 4294967294 131071 4294901759 196607 4294770687 196607 4294901760 131072 4294836224 0 65535 4294967294 65536 131073 4294901759 131072 4294836225 131068 0 131072 4294901760 4294836224 65536 65537 4294836223 327679 0 65535 65535 65537 65535 131071 1 4294836226 65533 2 4294836223 262144 4294836225 4294901760 65536 65535 4294836223 196610 4294901760 4294836224 4294901759 65538 4294901760 4294967293 4294901761 4294967295 131071 4294901760 131071 65538 4294901760 131070 4294901761 131071 4294901761 4294967295 1 65533 4294901764 4294770686 131072 65534 4294901763 65534 0 65533 1 1 4294836226 4294967294 0 4294836224 131069 65537 4294901760 4294967295 65537 0 4294901759 65533 0 1 4294967295 131073 4294901761 4294836224 4294967293 131072 4294836224 65534 4294901761 131072 4294967294 1 65538 4294901758 65535 65536 0 4294705152 262142 4294836225 131069 4294901761 0 1 65535 +3973772185 23832149477 29242277876 9286521854 2469973759 1404243484 929912962 2509864028 1578640392 866309862 981761046 161403460 48533456 139368762 279478811 352157635 388221921 201220879 437065939 547789365 117623820 116492343 247752466 531476687 825205459 255474844 200465233 124280351 233825955 113745496 131328950 85255791 +65499 4294049730 16515340 4238868491 47381576 564845 53509 1035680 5521952 4709412 856801 996404 669170 72826 40706 53329 72740 94945 85193 7813 102829 34388 148705 310833 121460 25705 35269 61069 58376 41248 10898 2176 10322 30242 27136 11245 15760 35920 12829 1394 3673 389 5512 15325 8089 3240 15577 5162 3076 404 5008 9802 46058 51157 14474 1469 24922 22100 13284 17425 8010 2005 6425 5380 2066 4477 8608 9778 180 2482 8633 6833 4637 14557 15776 30674 68986 61466 21904 3744 4441 4736 6964 14585 29725 14408 200 8788 6698 481 1042 3497 5513 5581 6322 6565 9490 3881 493 1152 5197 14401 14170 7321 3389 1873 936 1256 2693 3229 2029 4628 5693 5066 1433 1037 5429 4138 2305 3600 2281 1060 65508 655377 4294508537 262142 4 65535 4294967295 0 196608 1 1 4294901758 196607 2 2 4294967293 65536 4294901760 4294901759 131071 4294836224 131070 0 4294901760 65535 65537 3 4294967294 4294901760 131071 65536 4294901760 131070 65538 4294901758 131070 65538 4294836225 65535 131071 4294901762 131070 65536 4294901760 4294901762 4294967294 131070 4294836226 65533 4294705152 196605 65537 196607 4294836225 65534 0 2 4294901758 65536 4294901758 196607 65540 4294967294 65537 4294967295 131073 4294901760 65537 4294836227 4294901759 4294901761 4294901759 4294901760 65535 4294967295 65536 4294967295 2 4294901759 131069 65539 4294901760 65533 4294901760 131072 0 65538 4294967295 4294901760 131071 65537 4294967294 131074 4294901764 4294901757 131073 65536 4294705152 65533 65534 4294836227 65533 0 65535 0 196607 65537 4294705153 262142 2 0 4294901759 4294901761 131070 65535 4294901762 196606 4294901761 4294836227 4294967292 0 65535 65536 4294967294 65535 131071 1 4294901759 4294967294 65533 65537 65537 4294836223 65536 1 +1800047747 9718070402 29359056370 12395903961 4766794892 792553273 504749245 653093277 496990989 1318353341 1341130282 465051857 380015840 158772520 249779474 202245705 59025271 124720402 77848585 352377572 323251868 203443632 91429727 100783885 402239094 560877295 263946069 114086007 129673752 176203486 84561493 97937251 +65486 8060932 4521990 4272095628 21298750 868361 4563865 9422753 5610020 20817 3731193 1875700 285156 956801 547912 96032 101666 125933 121288 82820 86080 13394 99450 307682 200489 62101 22052 3560 1108 1108 5066 16385 28328 17492 1808 1205 2036 23624 92660 83344 47056 27882 6617 229 101 3400 11237 14930 13396 7778 3240 1205 13617 23236 22321 32842 18037 4861 8957 13690 11493 4178 10225 7445 6713 5645 2225 157 3242 10202 16354 15786 4157 845 6877 12370 4372 458 3665 11250 10730 5165 1618 725 7177 10121 3281 3636 4264 1737 1930 2837 3701 9928 13625 19240 26793 16609 4969 4640 2873 21618 28264 8082 1681 2048 2152 3085 7685 8090 1168 2210 2329 9605 4709 738 5760 2561 981 7937 7685 2890 4292804583 1703938 4294705153 65539 65535 4294901760 65537 1 4294901759 65536 65538 131069 3 65535 4294901760 4294901760 65535 4294901761 65535 65536 65536 4294901762 65535 4294901760 4294901760 131070 0 131070 1 131070 4294901760 65536 4294901760 4294967294 262143 4294836225 65534 0 1 4294836226 65532 4294901761 65536 131069 2 196607 2 1 4294901759 65536 4294901761 131073 4294705152 0 4294967294 1 65535 131073 4294901759 4294770691 196605 4294836224 131069 3 4294836224 4294967294 262142 4294901763 4294770689 196608 4294967295 4294770690 131070 65537 4294836223 65536 131069 131072 4294901759 262144 65537 4294901760 131072 1 4294836222 196608 0 4294901760 4294901760 131072 1 4294836225 4294901760 65535 4294901760 2 4294836223 131071 65538 4294705152 4294901758 65536 131071 1 4294901759 65536 4294836224 262141 1 4294901761 4294967294 131070 1 65535 4294901761 131071 4294967294 262144 4294901763 4294901758 65537 4294901759 0 65537 65534 3 65534 4294901762 4294967293 131076 4294901759 65534 1 65536 0 +13402136927 48709925606 21007888885 18328565424 6561402118 4716959753 1266761327 970492734 686687816 1070863377 1705636192 183156179 43429471 206120034 73900592 670786295 449233059 60188238 152700208 171596362 323884691 168642878 111671088 134338999 146821033 129244189 114201224 94745153 316889572 299713247 129524976 120777699 +65458 4290117758 4587104 28902152 4202889018 2449010 531754 1882337 6339853 6293842 2859986 997853 936281 141538 116516 99626 127474 163445 68053 64426 115300 294856 349073 69898 25636 55274 30529 17140 3385 4525 5525 10501 6362 85 5825 6354 8933 42260 104200 78065 16825 3226 6273 26962 16025 2468 1433 850 2378 1192 1241 6893 16564 13780 7650 8100 9065 1469 586 5444 14225 14965 5626 1585 5450 8468 4058 941 1098 13780 20621 2498 3490 7834 11861 12244 6514 4010 3700 5330 14125 13577 6701 2770 2260 6760 3908 40 1268 980 689 4226 13653 4420 197 7345 26186 9925 1160 1170 16714 11520 3293 8989 5021 2197 949 754 1480 1346 2645 7633 11602 12085 12393 7720 1714 29 1810 3946 3730 676 4294180864 131055 655360 4294836228 131069 1 65536 4294901761 65534 2 131072 4294901760 4294901760 4294967295 65535 4294836225 65535 4294901759 131071 4294770690 131068 0 4294967295 65538 4294901759 4294901761 4294967293 131074 4294967294 4294901763 65534 65536 4294836226 131070 131073 4294770690 4294836224 65534 0 4294901760 196606 4294770690 131071 4294901761 131071 4294836225 65536 4294901760 131072 4294836221 2 4294967294 131072 4294836224 4294901760 4294901759 65532 262145 4294836227 65533 65536 4294901761 131072 4294836224 4294836225 196606 4294901761 65535 65535 131072 0 1 4294901761 4294836223 1 4294901761 4294836223 4294901761 131072 4294836224 65534 2 4294967293 131072 65534 1 65535 4294967295 65537 65535 65535 131071 4294901764 65532 131071 65539 4294901762 4294901758 1 4294770688 262142 4294705154 65533 2 4294967293 196610 4294836225 0 131071 65538 4294770688 65534 131071 4294836225 0 1 4294901762 4294836222 65534 65537 4294967292 131069 65537 2 131069 131073 131074 4294901761 131074 4294901758 4294901762 65534 1 4294836222 0 +8515819862 14540741423 36370976979 22895019916 5783948057 1429973621 947504119 945703100 1044158335 2312106327 584813150 249467236 66850260 67985421 102639420 741690894 299005196 153894601 25276178 134107247 122617892 129071743 105794167 135314407 173076680 159820686 124146574 71055562 206248309 198451358 95266876 187817401 +65481 3342126 130952 54788365 4251582455 901105 2226409 3811258 686137 1108544 213097 1569626 2326421 895410 734705 643373 337570 188026 153865 119641 67509 356425 913040 623493 139525 59170 29705 2746 19237 29320 10244 33826 39085 2677 34821 39962 28340 3349 6317 36397 67204 94568 179650 181458 44305 6554 100269 182565 140450 53505 29185 92434 64994 49684 84250 81440 91009 71865 18824 10817 25826 25733 86729 171496 113101 24098 9881 13898 18874 67869 110925 87874 19897 1600 4874 20386 477 11925 24826 29185 18701 7738 3809 1373 22061 54920 62185 20933 10468 39722 44370 58021 90425 42601 4210 60201 92233 65896 77617 89245 43489 30244 21960 5953 12708 4469 5825 6212 6610 4132 2525 845 7925 9265 10865 10996 6740 6957 2929 2637 2701 100 1048593 4293853188 393205 4294443017 196606 4294508544 327678 4294901758 131073 4294836221 2 65533 4294639616 196604 131074 65535 65539 4294901756 393220 4294574087 4294967293 4294508545 4294967291 4294967292 327679 4294770691 65533 4294836226 196605 4294836226 1 4294705153 4294705150 131071 4294705149 196606 4294901759 65530 131074 131066 262149 4294770689 4294967293 262142 65534 327680 4294508546 327675 65538 65537 4294901761 65537 4294770685 4294901760 262141 4294770689 196609 131071 4294705158 65532 4294836226 65534 4294836226 4294901755 65537 4294901755 4294901760 131070 65534 4294967291 196610 262142 4294967295 196606 131073 4294770691 327677 4294836226 4294705154 131069 4294901756 458754 4294770687 393217 4294901761 4294901760 4294967294 65539 65532 4294901761 393216 4294639620 131072 4294967295 131072 4294770689 65535 65537 65536 4294639621 4294901758 4294967294 4294901760 131070 65533 4294770691 196603 327680 4294574082 393211 196610 4294836230 4294901759 4294836222 131072 2 4294901759 131070 4294901760 196606 327683 4294639617 0 4294901762 4294770683 589823 4294705157 131068 131076 4294901763 4294639618 4294967287 65540 393214 5 +7952341567 18699651433 6407428608 5286897917 12882655656 6860628001 3935796828 1583823195 1241106085 5530728622 2544684008 236455785 232020003 300962187 337663281 263258899 1391711140 1289186636 1575390634 1018595248 1173824760 689757438 1402138169 882143674 569554204 341740699 492750798 986031996 1465790708 996319288 166286506 197567807 +65448 4291821677 4292214650 10682097 21627631 914729 669474 1351962 3447890 4118101 2913829 1803961 799417 208800 56693 35744 56169 27914 1181 4628 4761 28417 48442 213453 191561 86161 23153 1737 13 2308 8893 7508 1217 5821 20241 18125 3805 15354 36073 43173 21818 10996 3242 17450 6084 932 9061 9472 7186 28037 60917 59348 10193 32569 42890 6617 6597 1768 2650 10370 11840 3545 3970 18772 15661 9396 20329 28970 7312 641 2293 8720 549 8200 29860 43210 29045 14800 4688 2 1458 3880 2768 7250 8712 3204 3940 16325 26129 13060 9722 14213 10301 53 12938 20261 15053 15325 23524 21386 11689 6001 2245 1537 5652 4505 2465 5002 12553 18580 22797 15490 4489 1354 1037 1053 2601 1256 32 178 1220 1053 65549 4294836218 655364 4294574082 65535 0 131073 4294901760 4294901760 65535 131071 196607 4294901763 65537 65535 65535 4294836224 262143 4294836224 65536 1 65535 0 65537 4294901760 4294901760 4294836224 65536 4294901757 196607 1 65535 4294901760 4294836225 65533 1 4294901758 131073 65537 4294836223 65537 65535 4294901760 196606 4294901759 196606 196609 4294836226 131072 4294836224 4294967293 65536 1 131069 131072 0 4294901761 196607 4294836224 4294967293 131073 131071 0 65536 4294901762 131070 4294901761 131071 4294901759 131072 196607 4294836226 131071 65537 4294967294 0 131073 4294901760 0 65536 4294901763 4294967295 196607 4294901760 65536 4294901759 131072 4294901760 196608 4294901761 4294836224 262141 131075 4294967294 3 196607 4294901762 4294836223 196608 4294836224 4294901758 131070 131072 4294836226 65536 65535 2 4294967295 65538 4294836226 4294836223 4294836224 131070 65537 4294901761 65536 4294901760 131072 4294901759 1 65536 4294901760 0 65537 4294901761 4294967293 196607 2 4294901760 4 4294836221 4294901759 65537 4294901758 2 +4298089100 9781258002 21778093844 21183521812 7286073417 1298309836 358888939 164751882 69292545 678522232 1497486092 216862219 43780399 71713908 162851148 323325669 232708549 104643346 272595917 588707153 238758774 122915021 249006695 195893186 326774777 246569211 137556615 299235358 349218187 245990662 257059234 124676392 +65518 4294049741 15138933 4261478404 11730623 255025 396164 487346 1001125 650600 5393 30740 482569 195236 47457 33122 125728 125501 36505 62281 104948 63433 280957 428909 122777 2285 10762 14050 8177 4437 452 7684 6196 421 5674 9522 3077 18081 83745 148384 148825 79186 14522 2197 8420 2097 1282 3485 13514 9610 1906 39641 73049 55080 18650 12724 5389 3034 2665 10280 20261 18121 17498 13000 9041 13369 16153 22250 20785 9360 6218 9332 20018 40409 35554 11752 1256 1808 745 1445 12965 32976 39889 26042 11909 16273 16634 10196 2665 2336 6218 7072 9673 13673 3445 386 545 612 25 2545 5309 6857 13658 14929 9685 5476 2420 2605 8545 14922 18720 12130 2330 1138 1930 1192 193 1460 3301 3177 1961 1469 4294508520 262160 4294836218 4294836224 196608 1 4294901760 4294967295 131072 65535 1 4294770689 262143 4294770688 0 65535 65534 1 4294770686 262144 4294836222 4294967293 131073 4294901760 65535 4294901761 131071 4294901760 65535 131073 1 4294770688 65536 4294901759 196606 65538 4294770686 65537 4294967295 131071 4294770688 65533 262144 4294836227 131071 4294770688 65537 4294967293 131072 4294901763 4294901761 0 4294901760 65535 3 4294901760 4294901760 4294901758 65536 4294901760 65537 4294901759 1 196606 0 131074 4294836223 131071 65538 4294770688 131071 4294770688 131070 4294836223 131072 0 131070 65539 65534 4294836227 131071 4294770689 196606 4294901761 65536 4294901760 65536 4294901764 4294770685 196605 2 0 65535 4294836225 4294901758 262142 4294901760 4294901760 131071 4294901760 0 65536 65533 1 0 196607 4294836224 196609 4294836222 196609 4294836225 4294901760 4294901758 196607 4294770690 65531 196609 4294901760 4294836224 65536 4294967295 65536 4294901762 4294967295 4294901760 196609 4294836225 65537 4294836225 4294967293 4294901760 4294967293 65537 0 0 +1695481222 3539400635 4906576856 1071284597 1989301906 1035261490 628215813 725394761 655757131 2100035882 1591483374 99973002 58239475 52926950 78621570 891923191 1089873680 84544173 113100295 582127301 272099009 208699166 263583472 281747152 416193689 206480599 458784717 181142870 98525525 177207041 234923919 109191855 +65456 4293656646 17301351 4259971616 19266566 1365757 1881477 2187140 2412436 2883409 3185012 2682153 1279682 159080 7786 43045 65601 130325 129389 81625 106373 187029 303364 338720 150853 49185 49130 29857 20417 21037 8768 6976 3042 5057 6778 24674 25469 14130 2925 7250 4900 153 6058 5525 7393 9512 6514 3380 2997 17533 3428 6673 8177 20561 35746 19133 5657 1658 6410 9800 2434 15844 14933 5482 8693 12325 11912 11885 3769 1781 5140 5125 7930 7250 1037 1921 2665 8845 5585 1205 1872 2722 19649 41490 29824 10693 1325 377 5545 10330 3697 5785 18496 11920 137 7108 11889 6805 1697 4325 12832 2837 6569 4500 180 373 1810 1517 1864 1165 200 1341 8468 12546 11168 4181 290 290 626 4680 3778 1556 4294377452 1703933 4294574086 4294836227 0 65534 131073 4294901760 0 0 65534 65539 4294901760 131070 3 4294967294 131073 4294770689 4294967294 4294967294 4 4294967294 4294967295 65536 0 1 4294901762 4294901756 196608 131073 65538 4294770688 4294967295 65539 4294901758 131071 4294836224 4294901760 4294901757 196607 4294967295 131072 4294901762 131070 131073 0 4294836225 4294901760 65535 196607 4294770689 196605 65537 4294901760 65538 4294901763 4294705152 196607 4294836223 4294967295 196608 4294770689 65535 4294901761 65536 4294901761 196607 4294967295 65537 65535 4294901761 1 4294967295 4294770688 65537 65535 4294836223 131071 2 4294836222 65534 4294967295 65535 4294967295 65534 4294901761 4294901760 4294967295 65536 4294901758 4294901761 4294967293 0 4294901756 196608 4294836225 65534 4294967295 65536 4294770688 65535 4294967294 0 1 4294836224 65538 4294836222 65533 4294901756 196607 262143 4294901761 131071 65536 4294770692 4294967291 131073 0 4294901761 131071 65536 4294836225 4294967294 4294901762 65535 4294967295 65537 4294901759 4294967295 131070 4294901761 65535 4294967295 4294967295 65534 +8510117155 13884387566 15794051016 21913858747 10968655927 1303076227 448448334 964848503 992064497 2357517463 1662721684 374439955 186519371 62314872 191854669 135480078 54909501 97244482 99910699 191353961 246353442 137257224 189199967 126966954 96601459 107821342 374125964 170153263 188516188 130001722 61100510 141178549 +65476 4294574048 19005239 2949971 4246207825 778933 1021621 474305 108445 194545 988117 317396 139805 377705 60125 2410 15866 45530 13705 15925 23049 17824 32416 94466 52730 2845 4610 1165 24208 14330 5477 8125 9325 32906 125018 169025 106101 77857 66305 27506 19144 35645 44433 33056 21177 8105 2437 1865 4537 12805 29745 66592 92362 55301 3482 24004 39049 15385 3362 4973 21501 39641 30610 9529 113 3253 765 2957 15705 48341 52229 18517 4589 2125 1378 11101 5626 10242 33949 26977 9412 6565 18248 24457 6309 17 2900 7405 17474 20177 7717 10457 43037 46665 45506 83749 74945 38338 31025 23972 16925 16729 5261 698 746 5706 17568 27842 20917 10504 5328 10169 14824 5794 1325 5684 5578 4384 4330 7202 8973 4985 4294246445 4294574046 720910 4294836221 3 4294901757 196609 4294901763 65534 1 65535 4294901762 65535 4294967295 4294901762 4294901758 131073 4294901759 0 1 4294967294 65536 4294770689 4294967292 196609 65534 4294901761 4294901760 131070 0 4294770690 196607 4294901759 0 4294901761 196607 4294901761 4294901759 4294901761 131071 4294836225 4294901757 131074 4294901761 4294901758 2 4294901759 131071 65535 4294901761 4294836224 65533 196609 4294836225 4294901760 4294901760 4294901759 131070 2 4294901758 65536 65536 4294770688 2 65532 3 4294967295 65538 4294901759 0 4294967295 65535 4294901761 4294770687 196606 4294901759 4294836225 4294901760 131069 65537 4294901760 4294901759 262143 4294836224 4294967294 131071 131071 1 0 4294836222 131071 131071 4294901758 131073 4294836225 65535 4294836224 4294967295 1 65535 4294770688 4294967293 131073 65534 196607 65537 65539 4294836223 65535 0 4294901762 4294836222 131070 65537 65534 65536 1 4294967294 4294901762 131071 4294770688 4294967295 65536 4294901759 196607 4294836225 131070 1 4294967294 1 4294901760 0 4294901759 131073 0 +4731506179 3633393437 1076228277 4831240828 1688829220 1365181475 154342268 222601007 162634693 369155009 446761288 67374098 139402621 264561946 1381869817 845826015 443191697 270175876 145373315 803874910 427878214 314165876 200651750 412663185 229836836 355944100 249233074 392082238 1193399118 439470232 353505302 187884713 +65480 4292476891 7864184 19923208 4273471621 10765 343012 801169 591005 199970 1308985 2177800 956530 168013 170804 413401 434314 230633 65426 17170 18005 35641 94784 154037 109800 93850 98321 66322 42517 21845 7105 6570 19125 48593 135505 188725 150484 194548 342101 230933 122996 81157 49946 24525 38169 28570 9157 5746 7720 5234 7218 8245 269 21677 10225 15509 73778 52610 15237 7957 3250 2920 10036 22562 48050 36073 12937 6466 5002 22856 30929 10420 8333 512 10216 11912 22373 31333 6833 5840 32770 44138 47588 30825 11188 9605 11618 2986 3893 13402 4580 5465 36922 40976 30673 34173 32850 20578 17488 17506 22698 35269 31588 14920 2664 11225 40522 35657 13757 18504 10309 2465 7218 3217 628 218 68 205 1040 3050 2210 394 458763 4294574085 4294180858 524284 0 65537 65538 4294705152 131072 131072 4294967295 65538 1 4294901759 0 0 196607 4294770689 65536 4294901761 131071 4294901758 4294836225 196606 4294901760 65535 65535 65537 65535 0 0 65536 0 4294901760 131071 4294967295 65537 65534 1 4294836223 196607 4294901758 262144 4294836225 131068 65538 4294901760 65535 65535 65535 65537 0 196607 4294901760 65536 4294901760 65536 65534 4294901760 262144 4294901760 4294836226 131070 65539 4294770685 196608 4294836226 131071 65540 4294770688 4294967294 131072 1 4294967294 131073 131074 4294836223 2 4294967294 4294901760 4294836224 65534 65540 4294836222 2 4294901760 4294901759 196606 65536 4294836224 131071 65536 4294836224 65536 4294967294 196609 4294836226 65535 65535 4294901761 4294901760 65538 4294967295 4294901760 65535 4294967295 4294967295 0 0 4294901760 4294967292 196611 4294705153 0 4294901760 4294836225 65534 131074 4294967295 65536 4294901762 4294901758 327679 4294836224 3 196605 4294770691 65536 4294901758 4294967295 131073 4294639616 131071 4294705153 65532 +845853406 4183388227 2707347057 9369426635 8665134206 1974409414 2951152667 1469653952 232863088 757908143 1145007316 763564862 265183947 347274196 1724893842 2920507584 1400764934 409551488 123205194 130226254 522627637 263670779 432783097 304345277 243052060 453694500 517002629 286026232 687333067 592265999 490494808 83790335 +65481 4652989 4285268185 24182335 4275503728 78557 4930 741940 3588525 3005972 342225 584449 294545 23120 125050 99985 6250 148850 97234 17000 3609 12868 9748 60265 142085 45370 18173 10877 12721 1810 2977 13273 9873 37745 29844 35173 24466 45065 211149 175396 54314 26073 38036 14578 19973 28450 8548 22765 9610 1040 7433 11009 1737 8093 48997 52634 9640 820 5402 7229 12553 27985 25457 18666 17945 13061 4033 3041 6370 18868 54641 74170 59624 30641 17725 9685 2785 17170 40226 13844 11860 33125 23248 4981 1088 4176 9650 4825 6529 16040 14293 20513 22877 4205 272 125 5065 20213 31460 48529 60266 86877 55690 7748 3109 10705 965 7492 8477 1801 17069 4933 1810 6596 4225 1322 281 58 650 3796 4041 785 1179638 4293853199 458736 196617 4294836224 4294901759 131072 0 1 65536 4294901762 4294770688 327677 4294901763 4294901760 0 65535 0 4294901763 4294967293 4294901759 262141 4294901763 65532 196609 4294901760 2 65533 1 4294901760 4294836224 196606 4294901759 65536 131074 1 4294901760 1 4294967294 65536 0 65536 4294901759 4294901760 65535 65535 0 4294901760 131071 2 4294901761 4294901760 4294967293 131074 4294901760 4294836225 65535 65535 131071 2 65534 131070 65536 4294836225 65534 1 4294901759 65536 65537 4294836222 131075 4294967295 4294901759 65534 196609 4294705152 196606 65537 131071 1 65534 65538 4294967294 65536 4294901758 131071 1 65535 4294901763 4294836223 65536 4294967295 0 4294901761 4294967292 65538 4294836225 131069 2 65535 4294901761 65535 4294836224 131070 65539 4294967294 1 0 65536 0 4294836225 4294901760 4294901760 65536 4294901760 3 4294967294 4294901761 4294901758 196608 4294901761 4294901759 131071 196609 4294836227 4294836223 65535 65538 4294901759 65534 4294901762 131069 65536 4294836224 65535 +244384724 6519756415 18951886278 6997908917 2430951505 723179230 591564660 793629576 191314080 203414463 833506224 188712224 69883722 198596324 386655634 1458767816 779506395 298904637 175224914 171820974 393318006 218727549 297609728 449642487 691285330 417317673 241413949 277117073 339922202 1038640357 210184981 99559177 +65459 1638523 4286513164 4273470962 83951950 1973450 1244377 782681 656848 2508941 2248097 254266 45121 66250 78440 16642 58141 168680 78754 5204 89 15706 55709 22409 9809 49733 62201 75685 68581 35984 25700 18530 10114 12490 33713 38509 9773 15533 4621 6001 8077 5098 685 10760 61417 102605 52900 3188 2885 1864 1753 9778 4148 14945 29786 5501 2817 7045 6602 9441 586 10282 17965 10049 11492 12688 8273 6437 2637 2138 31001 51592 10484 1746 5825 9610 7825 23477 27866 11258 1530 6660 11245 7402 10634 18868 18421 3133 8725 7605 725 1010 7488 15354 17642 18440 21760 21130 38084 41956 19637 10361 1021 13241 4420 677 6410 12500 8801 8258 19620 10026 962 10485 10154 3380 850 409 205 1261 1313 481 65519 1048578 4294705155 4294901761 0 131070 4294901760 65537 4294967295 131071 0 131071 65537 131072 4294836226 4294901761 0 4294770688 4294836224 4294967294 4294901756 262143 4294836224 65535 65534 131073 4294770688 196607 4294901760 1 65535 0 65535 4294836225 196605 1 0 0 196607 4294770685 327681 4294836225 131069 4294836226 65534 4294836224 4294901760 0 4294901759 1 65534 65536 1 4294836225 196605 4294901761 1 4294967293 1 4294901760 0 1 1 4294967295 131070 0 4294967295 65537 4294836224 4294967294 65536 131071 4294770688 131072 4294836223 65537 0 4294901760 65537 4294770688 262143 4294836225 65535 196610 4294836224 65537 0 0 4294901760 4294967295 65536 1 4294901757 4294836227 65533 65535 131071 4294901759 65537 0 65534 131071 1 131070 4294901760 131075 1 4294901761 4294901760 4294901760 1 4294967293 4294901761 65534 196606 2 4294901760 4294967295 1 65532 65539 4294967295 4294901761 196607 4294705154 65532 1 4294836226 65534 4294770688 0 4294901759 65534 2 65535 +8798265521 5735848922 8883138653 13341194324 835720736 475950697 447822965 852267978 126619296 288415958 293376646 655463999 454927615 189400270 307085520 124264660 88501554 696557793 243305601 135931388 169666588 130904022 200894138 250163429 289420997 295275696 231188891 181742549 468613279 419030949 237842735 156690188 +4 4287561751 26083170 4254008079 4294114173 183325 255994 723713 2018029 4682345 4273165 2847312 1695913 499285 21701 15658 86321 164194 66258 14677 11194 2720 73405 115333 23666 1037 3917 24634 10205 14501 38345 12602 980 313 2633 34000 76457 44370 5125 5570 18269 23810 3706 666 6817 27925 1193 14885 11156 1585 5081 19130 19813 3044 11105 4537 4212 8356 349 1525 6401 16866 15170 15013 26762 16580 425 3361 5161 7272 15700 23717 9802 1060 27530 50570 37549 8477 3889 5314 6057 265 8381 8705 8180 37874 41936 14453 3985 2637 170 6813 4786 2834 11185 23530 13896 9125 16241 14242 4058 11252 33490 22052 3221 3280 15146 22117 23605 44100 61865 36941 7093 325 800 1481 1322 1189 677 754 1018 1405 4293263355 786429 4294508545 393216 4294836223 131071 65537 65535 0 1 4294901762 65534 4294901761 131070 1 4294901762 4294901759 1 4294836224 1 4294901760 65534 4294901759 65533 0 196607 131071 65539 65537 4294967295 65538 4294901759 1 131070 4294836225 196606 2 4294967295 65535 65537 4294705152 196606 4294901762 131068 4294901761 65537 131071 4294836225 4294836224 196607 65536 4294901760 65538 4294901758 4294967294 196611 4294770689 196607 65534 4294770689 0 65538 4294967292 3 131073 4294836224 131069 4294836225 65536 4294836225 4294901760 4294901758 196606 2 65536 4294967295 1 65536 0 4294967294 4294901760 65536 4294901760 131070 65537 4294836225 0 4294967294 65537 4294901759 196607 4294901760 4294901761 4294901760 131071 4294836225 196607 1 4294901760 196607 1 2 65535 4294836224 65536 1 131069 2 65536 4294901762 4294836223 131073 4294705153 4294967294 65534 1 4294967294 65536 65535 196608 4294836226 131068 131074 4294836225 4294967295 65535 4294901760 4294836224 4294967294 65536 65535 131071 4294967294 131073 65534 +1150482412 5240120687 18715695941 29339574860 13217513048 2558449603 465258907 843663909 159753138 501362980 391765242 116127711 219926547 95960499 348195558 347009665 172370545 139689998 140508943 181054683 100535513 123970868 275750410 172411007 406900444 283127115 324490029 232234315 285149674 372863656 670202407 256518156 +65433 6225865 8519656 13566393 4231200833 1690970 801721 879057 5570410 6702733 3377569 2337138 1780616 366925 126341 149409 161764 389925 391906 150641 117845 99970 104080 155684 88805 15977 5101 51284 78417 16645 4802 15385 10693 11080 19890 37280 107425 188050 110357 25250 13945 29170 54730 51749 23533 26912 67834 57125 21034 7025 4082 500 2873 22916 37505 27389 17170 10322 3922 3172 6553 9248 6514 10984 10265 3200 3457 7497 9000 10289 10125 3109 4196 4229 7298 40729 53978 33556 29101 29237 5954 7565 15133 1690 19940 18245 1546 1241 1625 1940 7349 9673 5050 3725 5625 8221 14705 9544 1417 28250 47153 37090 10512 8980 14656 15185 5689 4589 31601 37802 22900 7954 2122 1405 1224 269 245 661 1028 2340 3281 2061 1572868 4293459961 983038 3 4294836224 65538 0 65535 1 131071 131073 4294770690 4294967295 4294967295 131071 0 4294836224 196606 65536 65535 65537 4294836224 131071 4294901761 4294967295 131072 4294836225 4294901756 65538 131070 0 65537 65537 0 4294836224 1 65534 4294901761 1 4294770688 65535 65535 0 262142 4294770690 4294967291 196611 4294901760 1 131070 65538 4294901762 4294836221 131073 4294967295 65535 65536 4294901760 1 4294836225 4294967294 4294836224 196607 4294836226 65533 131070 196611 0 4294770686 196607 2 65538 4294836224 4294770689 4294836224 131071 4294836225 4294770688 131072 4294770689 196606 4294770689 131069 131072 4294836224 131071 4294901761 131073 4294967295 0 4294967295 196609 4294770688 4294967295 2 65533 0 196608 4294836227 4294901759 65534 2 4294967295 131072 4294836223 65536 4294901760 0 2 4294901760 65534 4294836228 4294901760 4294967294 4294967295 65535 0 65533 4294836225 1 4294967294 4294967294 4294901760 196607 4294901761 4294967295 4294901762 131072 3 4294836224 4294967293 65537 131074 4294705152 65535 +6911137073 10475842416 34724015477 27936729844 12152231216 2672219979 1411389097 2765172797 1420661856 1056972746 793556340 350130233 322606370 137295615 638432326 1290859573 471390741 575175189 461554633 153369634 336576098 116798871 138012201 141557225 305736088 572470445 231253659 119128938 238810745 545930325 440451728 121617948 +65491 4288610312 5046237 7012199 4292673756 338266 2176850 1564202 341042 366458 228176 334080 95434 305201 74609 240461 472761 825497 449881 122138 50653 33245 17069 200 41650 57906 24608 82856 111938 57250 11554 1066 7361 10597 9760 5490 4624 13105 23725 50625 46405 33437 14692 27389 53885 66449 53210 12410 3250 2173 7565 5877 7225 5650 18850 17000 11545 11485 6530 3025 5732 3485 2273 9434 1665 433 689 1553 5794 29968 25856 6553 5480 6565 965 6409 4552 1769 2722 9005 27197 45945 36297 6401 6970 7396 578 5450 3492 257 2745 5812 2440 1685 1586 881 4010 10205 8857 802 5245 10496 10490 10625 4097 2929 12506 16160 8905 3889 3121 4069 5965 4293 490 2 557 2626 1220 178 293 346 2424825 4294443028 4294508543 65531 65538 4294901759 65536 1 4294967295 65534 131073 4294967295 1 4294967295 4294901760 65535 4294836225 65533 65535 65534 131071 1 4294836225 4294967295 65534 65535 196610 4294836225 4294967294 196607 1 65533 65538 131071 4294901762 131071 4294901761 4294901760 65535 65537 0 4294836224 65536 65537 65535 0 4294967295 1 131071 2 65534 4294836225 131075 4294770686 1 0 4294836224 131069 4294901762 4294836224 4294967294 4294901760 65536 4294770688 4294967293 65536 2 4294901758 131073 4294901760 65533 131074 0 131073 0 4294901761 4294967295 131072 4294705154 131070 65537 4294836224 4294901761 65536 4294901757 65538 4294836224 196606 4294901762 4294901759 131071 4294901761 4294901758 65537 4294836224 4294967293 0 4294967295 4294967294 65535 65536 4294967295 196607 4294901761 65534 4294901760 131071 4294901762 196607 4294836224 65538 4294836221 196609 4294967295 1 131070 4294901760 0 4294967295 65537 65535 4294967294 131070 131074 4294901760 4294836223 131073 4294967295 0 4294836225 65534 65536 65536 4294967295 1 +6167608942 9911924498 2593243310 2061667502 1486292926 1391770569 2930714578 4682576166 1092543821 203525367 340754446 648659988 587112632 81721049 93387502 311141876 458755528 630752888 249233952 114323857 206781150 95880852 58775090 215914131 146588629 262694353 345415316 73247387 91862262 197031781 210122569 62984707 +65487 4587455 7602449 4258070014 62783880 217178 784601 1571600 2149517 2567258 1478088 405514 334112 193714 211973 155777 250937 501290 122869 22625 17602 47137 57469 107785 94637 47365 16354 2561 25480 30848 17730 23816 10125 4797 1125 5569 6605 4537 18020 42601 19913 360 9250 22658 16021 11600 31300 35261 9189 8852 35221 55210 31642 7081 2617 65 5986 4869 485 2329 677 5945 23504 32977 18490 7380 8801 13192 11530 3474 3673 11981 11680 6250 1762 9700 21425 20872 14753 5809 234 857 2218 16538 17945 9634 10498 7528 1168 10949 16642 13768 17890 25909 32977 30545 15817 3805 2084 3589 4397 1306 809 1753 324 7880 9425 6029 13540 15665 7744 2885 901 821 197 1289 1521 293 1576 3908 2842 698 131072 589828 4294574084 196608 4294836224 4294967295 65536 0 65536 4294770688 131071 65537 4294901759 131069 1 131071 0 65538 4294836224 65536 65537 0 131071 4294901762 262143 1 4294836224 0 131072 4294836225 4294901760 65535 0 2 4294836225 4294967294 131072 2 4294967295 4294901760 65535 65539 4294836222 0 65537 4294967294 0 65536 4294901759 65534 131073 4294836225 65533 327681 4294901763 65535 1 196607 4294836225 0 4294901760 262143 4294770689 196607 4294770690 0 4294770688 0 4294901760 1 4294967295 4294967294 4294901760 65535 65536 4294901761 65534 4294836224 262142 0 65537 4294836224 262141 65537 0 4294901761 0 0 4294901760 65536 4294770688 196606 4294836225 196606 4294901760 4294901760 4294836225 4294901759 65536 4294836225 4294901759 65535 65535 4294901760 4294901760 0 4294836221 327678 1 65539 4294770688 196607 4294836226 4294901759 65536 65537 196607 4294901763 4294836224 262143 4294836224 4294836224 131070 2 4294967295 2 4294967294 4294967295 131072 1 262141 4294901762 4294967293 131073 1 +2505139409 9435406421 13833653936 10591282910 2352544130 1559712740 1874707651 2302922325 328881483 565672104 776814926 185025692 260892744 144244449 53960005 218503995 202958384 261774586 330038711 437503813 72863013 99926767 308641829 168217792 183606421 224884523 203196718 287669468 456498379 87883789 205202657 63473057 +65435 4293197975 13238059 4253221591 7272916 2028546 1334885 1179421 2212520 4556357 3669049 1042513 161765 25085 69997 103685 306865 514865 186482 360 63205 343250 572765 314338 68897 17602 8765 5380 9800 46404 57010 25538 7274 4517 22664 31025 30050 28288 14096 369 15626 20290 15629 11296 122 4624 2218 9809 15760 24781 38497 20705 2305 29530 37666 33577 31842 23680 9396 4513 2957 1690 514 10897 15938 4453 7025 20297 13140 7762 12490 14149 13572 8336 13673 14130 6029 14005 13481 5770 2132 6938 9565 1745 1381 4808 3609 1537 7825 5661 185 3037 12994 18850 2440 6868 14425 5125 585 89 1300 5585 7865 7146 1184 4420 19240 11917 5876 10250 8570 2788 720 389 4 808 977 706 410 1025 2500 1170 983039 4294246401 65530 262146 4294836224 0 4294967295 196608 1 0 0 65535 65537 65534 65537 65535 4294901762 4294836222 262142 4294901760 131074 65538 4294967295 0 0 4294967295 1 1 4294967295 131073 4294836225 4294901759 262142 65537 4294836225 4294901760 65535 4294901759 0 1 65533 131073 4294901760 4294967295 131071 65536 4294836225 262143 4294770688 131073 131071 4294901759 131073 4294901763 4294770685 65536 131071 131070 4294901763 4294901760 65535 4294901760 65533 131073 4294901761 4294901759 4294967293 196608 4294901763 4294901758 4294901761 65534 131075 4294705150 65535 1 4294967294 1 4294836224 0 4294967294 196608 4294836227 4294967293 1 131069 1 4294836225 65535 65534 0 0 2 4294967293 196607 1 4294901760 65534 65538 4294901758 131073 0 0 4294901760 1 4294967295 131071 1 4294836224 196606 4294836228 4294967293 131075 4294901756 131072 65539 4294836223 0 4294901759 196605 65537 65536 4294967295 131071 65538 65535 1 0 4294901761 196607 2 4294901759 1 262143 3 +9176235357 8993191162 19120135785 23572353608 3049183075 481893068 1739676482 2578826428 878981992 3671155093 1292995962 98376569 396132786 212131690 288592629 228092143 191051413 82950507 234701840 355185468 460774588 128328650 156938187 230846426 238069252 195995787 93249843 126366584 185452976 127347550 217291634 45671478 +2 65384 18939761 13632302 4238605924 278549 111514 274577 265492 2428929 4682642 1481405 30906 124804 157770 259865 548089 746929 405154 117512 89293 153917 173077 28565 47632 82178 57690 58537 66949 48618 13032 4073 11530 12869 11285 33633 33448 86281 104609 36244 10585 13957 12497 5792 20 9469 24914 19253 6050 3145 3970 738 37925 80296 34850 5850 2885 6434 19053 6921 2536 7250 31232 62725 38561 6770 4516 7250 3328 8285 2290 289 1217 10585 19181 2597 4100 11645 9425 8330 13913 12500 2225 544 2050 1961 3330 3449 1025 1040 9169 8857 1201 3194 13298 7109 125 1152 212 457 554 2897 2633 3218 37 4885 7178 2788 650 1042 325 1241 1090 2081 4005 2402 320 10 212 1069 1602 425 393210 65554 4294574072 393216 4294836226 4294836224 65535 196607 2 65535 1 65535 4294836226 4294836223 196606 4294836224 131071 131074 4294770688 65535 65535 65536 4294901759 196608 4294967295 131071 4294901761 65536 4294770690 131071 4294967295 65538 4294836223 131073 65535 0 4294967295 131075 4294901757 4294901762 0 0 4294901759 4294901761 4294901761 4294901759 196606 131074 4294901760 4294901760 65536 65535 65536 4294770688 65538 4294967294 4294836223 262143 65536 4294836225 131072 4294967295 0 4294967295 131073 4294901759 65536 4294967295 196607 0 65539 4294836225 4294967294 131072 65537 65536 3 0 4294836224 4294836224 65536 4294901760 4294901758 0 4294770688 65534 65534 131071 0 4294967295 131070 65537 4294901760 65535 65536 196607 4294901764 4294901760 65535 4294836224 196607 4294901762 4294967295 65534 65536 4294836225 4294836225 262143 4294770688 4294836224 4294967295 131069 2 4294967295 2 131070 131074 4294901760 4294836224 0 4294967292 0 65537 4294901762 4294967291 131073 1 4294836224 65536 4294901761 4294836226 65534 4294901761 65534 2 +1089684860 1489227056 7451210935 25162699617 3746461499 1104469491 3228302402 4380573004 1314892448 1188968448 589498418 634188183 435477756 115260084 339081799 833157389 232978806 130079406 162680802 392176424 332030171 210008316 490972032 98211491 143588413 194241710 90231128 94932440 111336474 51651457 64531143 43049780 +65440 1048600 4284350451 45940397 4244440152 1834256 1015760 727025 1910269 3937457 2692601 257492 80713 272421 200962 348605 228560 120641 28685 44402 36490 16546 890 46106 139913 55925 9578 13621 1277 7200 1604 2650 5386 7474 8685 6473 49508 61217 25433 6301 2474 10865 11296 12321 5620 13985 6257 5249 14274 1088 8149 11700 3085 7769 15509 17525 9217 6170 7769 7306 3280 5661 27418 32625 7748 5300 4850 1105 6605 18773 17170 6001 1856 4840 18409 39338 41828 17896 3412 8762 14762 2810 2929 5733 2401 965 185 200 520 3298 7633 7306 4698 7309 16217 18085 9797 1193 305 2378 6505 9397 8485 5850 3185 634 1168 1258 277 1096 4210 6409 5224 6553 3833 170 193 164 514 425 85 458 4293263359 851951 10 65535 65535 4294901760 131072 4294901760 4294836224 131071 0 4294901760 196607 1 131070 2 4294967295 0 4294901761 4294901761 131069 2 4294967292 131072 65535 1 131072 4294836224 4294836224 262142 2 65534 4294901762 131070 65537 4294836224 4294836225 4294967293 131070 196609 2 65536 4294901761 3 65535 0 1 4294836224 131070 131075 131070 4294901763 4294967294 1 4294901760 4294901762 4294901757 1 4294901760 0 2 4294901760 4294967293 131074 4294770688 131072 4294901760 4294901760 65534 0 65535 4294967294 262145 4294770688 65533 131074 4294901761 4294967295 0 65537 4294901760 4294836225 4294967293 65537 4294836222 131071 1 131070 2 1 4294901760 4294901760 2 4294836224 4294836225 65535 4294836225 4294901757 131073 4294836224 65536 65535 327679 4294836227 4294901761 65534 0 65537 4294770688 131073 4294901759 65537 65535 0 4294967294 65538 131070 4294901762 131074 4294770690 0 4294836225 65536 65536 4294836225 65535 65535 4294901762 0 1 4294836223 131070 0 131071 0 +7843464752 6447907163 16374301901 17324772176 1215209220 1776398163 2081496617 789918720 308703987 183833051 808368400 167730902 49451263 56584758 234299204 398625714 120583575 132760892 118249319 125485707 183453905 157140695 248358144 168412071 321558941 328889136 78320401 90909662 220044504 134853075 70608029 74817173 +65520 262094 4289134882 4279303334 62914962 191437 624020 138121 63625 243508 1971965 939177 108018 94340 481876 257085 41029 84197 119170 62842 36082 29525 56794 14834 45538 44676 3728 9497 19805 11300 3508 14065 15385 9250 12105 15461 3546 8776 16936 12785 4933 8389 36733 24650 548 4580 1450 8528 25610 21634 7850 10522 8450 4010 697 1665 7325 11050 19273 12393 1429 68 14285 8420 1845 5044 692 3016 3625 23618 25957 13498 33844 56680 50801 52688 59956 25700 50090 81901 158265 195325 101065 124025 179129 233285 278290 282613 328345 380945 416818 518962 613090 698969 553673 411813 222325 161725 130586 87050 58690 22250 33346 17170 6784 2410 866 3316 1160 709 5949 5338 3700 6649 212 1877 1040 181 146 113 580 2129 2883569 4291887110 1900539 4294443003 196614 65533 131074 4294836223 262143 4294901760 196607 65534 131073 4294967295 262143 1 4294967295 65537 65536 4294901761 2 4294836224 0 4294967294 65536 4294901762 4294901759 262142 4294836226 4294901759 65536 131069 3 1 4294770690 4294967293 0 0 4294901760 4294901758 131070 4294967295 65536 65536 131071 1 4294901761 65536 4294705152 196607 4294901762 131071 4294901760 4294901760 4294901760 4294967295 131072 4294836226 131072 4294901762 4294770686 131069 196606 4294901762 4294967294 131071 4294901760 65535 2 131068 65537 65535 2 262143 4294836224 1 65534 65537 1 0 4294901763 4294901758 65537 4294836225 4294901760 65536 4294967293 4294901762 4294901760 4294967293 65537 65535 4294901762 131070 4294901759 196608 4294901759 131073 1 4294901761 4294901759 0 131071 2 4294967295 131072 1 4294770689 4294901758 196606 65536 65538 4294770687 131072 131071 2 4294705153 65534 131068 65537 4294901760 131072 4294967295 65537 4294967295 131071 4294901760 65537 4294901760 65535 4294967295 65536 65538 4294770687 0 +2047835854 1653882967 1001333545 9952025713 2701709263 2058665901 1498435858 737457098 484075650 352429827 356059276 150000953 125341680 137900269 130508231 139433842 210634495 145134874 205966052 138492404 102869911 156180492 92734022 234423531 848969494 1737033796 4071341086 9495242795 9533850550 1452528935 120395452 66178728 +65487 1900597 4293787693 4278386638 23133950 109000 35012 19813 432225 1492025 1493845 514553 284596 209138 86978 33050 7325 3600 5989 5202 10613 15490 15445 41849 65885 41345 5650 1741 3316 6705 7121 7709 13690 20005 29341 32400 19225 28040 20297 1000 4745 9026 2545 3088 10229 6309 2866 4993 2525 2997 9577 18594 20996 9725 2164 1845 3365 1908 13481 21205 21141 20498 20754 28850 24293 12010 10909 15353 20513 27625 14669 436 20008 16810 25610 51880 15380 2977 13472 24221 34112 73300 58640 38389 202644 171257 275872 686129 625825 526292 476360 148930 382545 746209 461620 54176 96020 147776 68202 53924 22381 21136 19001 7010 1997 4493 7578 2245 373 5625 13745 17393 11029 5125 2258 754 1745 2269 1490 313 261 2420 1834958 720930 4294180863 4294967291 196608 0 0 0 0 0 65535 4294901760 0 1 65536 4294901760 4294901760 0 65535 65536 131071 0 65536 0 4294901761 0 4294967295 1 4294901760 65536 65535 4294836225 131071 1 65535 0 0 4294901761 65535 0 4294901760 65534 4294901762 4294967295 65536 65535 4294967295 131072 4294901762 131071 0 65535 0 65535 65536 0 65537 65534 0 4294901761 131071 4294836226 4294967295 65535 65537 4294901760 0 4294967295 0 1 0 4294836224 65536 4294836225 0 65535 1 4294836224 65535 0 0 4294901761 0 4294901759 0 0 4294967295 65535 1 65535 65536 1 4294901760 4294967295 65536 4294901760 4294967295 65536 4294901760 65536 4294901760 65536 4294901760 1 4294901761 0 4294967295 4294901760 4294967293 1 131070 1 0 0 0 4294967294 0 4294901761 4294967295 65536 4294901761 4294901760 65536 4294901760 0 65535 1 4294967295 4294967295 65537 4294967294 4294901760 4294967294 131071 1 +405941476 586376095 5249156049 9198314000 2455257847 1076533410 217788173 43317576 77805929 193894406 471430974 96006989 64326923 160154729 317918564 220708273 73326619 82335631 68925210 197055911 85555573 300129001 366399884 320192711 415893330 580530060 3785903636 10888500038 6292189300 859689286 178268465 136256436 +6 4293001176 8388632 4289200250 4282908585 107978 82105 134440 676162 1869940 2194821 1356173 711333 250450 63949 37089 17576 30802 15892 3965 1418 11560 12625 6709 37570 29864 701 4217 5261 5809 2088 725 4941 1546 7146 39106 42836 8002 12196 22964 10576 2005 481 4240 9925 6970 3464 7025 10777 4450 5338 24237 25826 6697 3445 12665 20000 18320 16757 10202 7690 3866 7400 35033 79066 59792 16705 2320 10537 28594 18685 21460 31385 3673 6344 3664 27101 113125 128690 117540 88001 27460 29170 213898 332501 158132 13000 338708 409760 192296 118084 203221 181904 20642 23866 88933 197730 155908 50373 21485 28465 22285 13709 13285 9893 6084 49428 72529 49985 18785 5337 17642 16210 8104 5058 1773 34 1552 3368 2601 1152 370 131052 983045 4294770693 4294770688 196608 4294836224 4294901760 0 4294901760 131071 4294901760 65536 65536 1 0 0 65536 131070 65535 65537 4294901760 4294901757 65536 4294967295 65536 65535 65536 4294901760 4294967295 65535 4294901760 65535 0 65535 131071 4294901760 65536 1 0 4294901761 131071 0 4294901761 65533 65537 4294901760 0 1 1 65535 65534 65536 65535 65536 1 1 65535 4294967295 0 1 196607 0 4294901760 0 0 0 4294967295 0 65536 4294967295 4294901760 0 65537 4294836223 4294901760 0 65535 131071 4294901760 0 1 4294967294 4294901760 65535 1 4294901759 4294901762 131070 4294901761 4294901760 65534 0 4294901760 65535 131071 4294967295 65535 4294901761 65535 1 65537 1 4294836222 65535 4294901759 65537 4294967295 0 65536 65536 1 0 0 65534 65537 4294836225 65535 0 4294967295 65535 131071 4294901760 65536 4294836224 0 4294901761 65535 1 4294967295 262143 4294836225 65535 4294901762 65535 0 +514666001 1348367704 7051816642 14065552969 5974535153 1388737409 260609466 171393655 50366952 95923776 245919450 73335165 45135850 34407825 274069828 231829918 93746349 84979594 108437794 226177882 223414955 201162764 665485419 384650067 394149983 1726925185 3637184851 4785261775 2485723605 934545908 818763521 188547824 +65471 2162723 4293984223 4293132397 6225610 215312 91156 23680 32549 258506 72500 259081 664441 148693 6922 44305 189722 123570 17093 1024 986 28685 83969 91242 48665 15210 405 5661 5780 9802 23913 21970 14130 5701 521 3145 4258 7460 8845 520 2221 1700 970 585 101 2501 2720 712 1058 2138 962 7741 14522 5581 360 5162 16133 9941 4608 3065 20365 17161 12125 4234 39429 194490 202025 178265 288469 325993 170788 40840 5408 38498 108484 199201 298381 258226 75168 124834 298064 437282 338180 100753 288045 607997 561394 439060 372737 167972 28561 5524 13172 56080 139892 141490 94617 57962 90385 68360 49549 29745 31985 34250 9137 25537 43429 10964 593 4129 425 8290 11645 3170 2405 1781 2512 1010 666 612 104 40 4294508555 4294901741 458765 4294705149 131072 65536 1 4294901760 0 0 0 4294967295 0 65537 4294901760 4294901760 1 4294901761 4294901760 4294901760 65537 4294967294 65537 0 4294836224 65535 65535 65536 65535 1 4294901760 65536 4294901759 131071 65535 0 65536 131071 65535 65538 4294967295 0 0 65534 1 4294836224 131071 4294967295 0 0 4294967294 65536 4294901760 131071 4294901761 4294967295 65535 4294901759 65535 65536 4294901759 65535 4294836224 131071 4294901761 65535 65535 1 4294967295 4294901760 65535 2 4294901760 65536 4294901760 2 131069 4294901761 0 131070 0 1 4294901760 65533 65536 65535 65537 4294967294 131071 1 0 0 4294901760 4294901760 131071 4294901761 65535 1 65536 4294901761 65536 4294901760 4294901762 65534 65536 4294836224 4294901760 0 4294901761 65535 65536 1 4294967295 0 4294836224 65536 65535 0 4294901759 65536 131072 4294901759 0 65535 4294901760 131069 2 131070 4294901762 1 4294836224 131071 65535 65534 1 +854067332 278949595 775873176 1138676126 3105106067 896842551 807293668 675085516 64433283 560219615 474784050 55633450 148408916 164344297 43165620 69096015 21284651 17409593 25064632 99936147 124962720 190186177 1474493209 3947269364 2315319133 4638085171 7835913743 5378442479 2045345134 1160376405 376248714 92547152 +21 4292935592 4980720 14549126 4279566697 748250 1247306 1422020 1228741 752834 2207720 2590389 1682245 724865 309125 236770 226525 199432 23860 17224 58514 87732 180157 110041 7265 11250 50794 134560 152450 103066 32266 365 6229 2473 634 11530 23018 8480 14537 51561 37700 13394 5512 6498 15129 17965 10216 3722 400 1060 845 2362 3301 28885 43810 28048 8669 50884 104768 132610 126121 79105 45032 88762 257050 396553 175645 70066 248201 402453 147186 86290 43165 11588 219124 365173 88765 331605 453952 202589 121108 529658 638621 157313 207028 348296 143509 55120 18100 76644 448337 504425 444834 398025 151490 267472 390745 336554 177161 15284 7474 35737 2564 44425 73361 16393 5953 32180 22408 7508 18218 29405 24793 18125 12290 2257 3400 8900 733 1889 2146 1460 2621449 4293591058 4294574074 196605 262142 2 0 1 4294705152 131069 0 131071 4294901759 65537 4294836225 4294901756 262145 4294901761 196609 4294836224 4294967295 196608 4294901760 4294770690 196606 4294901760 131074 4294901758 65539 4294901759 4294967295 0 196607 4294770690 131070 65534 65539 4294901759 131071 65535 3 65535 1 65534 2 0 4294836224 65535 4294836225 4294967294 131072 4294836223 196609 4294901763 4294901759 4294836226 65532 0 1 4294901757 131072 4294901760 4294967295 65538 65536 4294705153 131070 196609 4294901761 4294901761 131071 4294836225 65535 2 4294770688 4294967295 65535 4294967295 4294967295 196609 65537 4294836225 4294901760 0 4294836225 4294901758 1 131071 4294901760 4294967295 65536 4294901760 196607 4294836225 65537 4294967294 1 65536 65536 4294836225 65535 65536 4294836224 1 4294901760 131069 1 131071 65537 65535 4294967295 196609 4294836225 4294967295 196607 4294901760 65536 2 4294967295 65536 4294836227 4294967291 196609 65536 4294836225 131073 4294967294 4294901760 3 4294901758 65535 4294967295 1 4294901761 65533 +5176173638 8712890999 6365812124 14554769594 12835959895 4290909155 1898428525 1000121310 386479184 1152403961 429970454 909105722 958767541 75724965 110181941 291424365 287810852 165313508 57669057 161053097 624432018 1646374792 3244274671 4021445776 2963733650 6551241142 6239415482 5613163380 7301740504 1754762557 646424930 324924042 +65481 4325415 4284088357 15269685 4279501167 319345 386138 583117 1011520 723524 338186 148880 178452 62450 16001 2045 14825 38273 35186 25160 21370 13610 10177 9076 7956 17053 12874 1769 4900 2980 1108 485 905 4513 7076 9410 8842 12869 19025 12545 5777 5273 5858 3400 1924 845 1369 3530 7253 4744 522 2536 3232 185 10 4196 7813 1394 810 466 202 61 976 4981 9265 170 25969 60925 35386 5525 10181 9593 7250 26489 99140 127861 35978 22100 26941 7577 7748 7538 2341 16529 5945 2146 533 5645 7556 66833 89909 35624 29905 39101 67786 40786 11525 19477 25570 17770 7778 8906 14661 8537 145 2074 2234 733 377 244 281 709 193 477 562 2509 2098 617 778 1305 533 442 1245181 4294443017 262139 2 1 4294901760 0 0 0 65535 0 1 4294967294 0 65534 4294901760 65535 65537 4294836223 131071 1 65534 4294901761 131071 4294901760 4294967295 0 4294967295 4294901760 0 131071 4294901760 0 0 0 0 2 4294836224 4294967295 65535 0 4294836224 0 0 0 4294967295 65535 4294967295 65535 0 1 4294901760 65537 4294901758 65536 4294967294 65536 65534 4294836225 65536 0 4294967295 65537 0 65535 2 65535 4294901761 4294967295 0 65535 1 4294836224 1 4294967294 65536 4294901760 0 4294967295 65535 4294901760 65536 4294901761 65535 1 4294901758 1 0 131071 4294901760 4294901760 65537 65535 0 65535 4294901761 0 0 0 131071 0 65536 4294836224 0 65536 4294967295 4294967295 65536 4294967295 0 0 131071 0 1 4294901761 0 4294967295 131071 0 0 4294901760 131070 65538 4294901761 65535 4294901760 65537 1 65535 4294901761 0 65535 4294901759 131071 1 +1862205364 3888521380 5183882583 2729317838 1047760972 340491552 99043306 270973644 204286586 111068593 110590646 83372928 28302339 23901571 96547242 167427282 88321129 33870505 57122440 32785504 49320672 17622419 184258003 444068773 897635860 619039249 146576221 861149196 865052933 289573769 40528063 28186682 +0 4283498557 8978301 4278386562 40697491 1072450 1147057 3760618 4801130 2751025 1685450 307690 458330 888641 250105 82420 2330 123968 176045 107053 39250 21922 90301 180200 215209 108121 13381 23129 40340 11728 585 6953 4145 8674 514 7765 11650 13769 23924 12560 7265 38194 65269 23348 3341 1741 3940 13050 39033 60457 54325 60282 59296 34594 18185 25625 39565 13898 890 2825 7985 13032 6925 13885 72845 192069 158450 100553 129482 55381 13306 7706 7956 3425 33485 21760 124160 80613 63648 144461 91976 44761 62561 38821 3869 5576 244 51365 178517 58285 67130 303817 247045 104200 4468 38785 58792 30344 24713 23720 7421 2005 2900 12682 15220 2745 169 1417 8801 15300 11250 2960 1700 6025 5513 2557 629 441 3265 5536 1762 18 983040 65534 393231 4294311929 65536 65536 65534 65538 4294901759 262143 4294901760 131072 4294901757 262144 4294836224 131072 1 65535 196610 4294770688 65536 4294901762 4294836221 65534 4294901760 131071 4294836224 4294901760 131070 65538 4294705152 65534 4294836224 262143 4294901760 0 4294967295 4294967295 262143 4294901761 4294967295 65538 131071 4294836224 131073 4294770688 4294967294 1 65535 4294901760 65537 4294836225 4294836222 196605 65539 4294967295 4294967294 131070 65536 4294901760 65535 2 4294770689 131069 4294836225 0 131071 131075 4294639616 65533 196608 4294770688 131070 65540 4294836223 131071 4294836223 131072 4294901761 4294901760 1 4294836223 131072 4294967294 4294901760 65533 65538 131071 0 2 4294901759 65535 4294901761 131071 4294901764 4294770686 196606 3 4294967295 131071 4294836225 65537 4294770688 65533 65535 2 65535 65536 4294901763 4294836221 65534 65535 0 4294901760 4294901760 4294967294 4294967295 4294901760 0 4294901759 196606 1 4294901757 327681 4294770690 4294901761 4294901759 131073 4294836223 4294901761 196605 4294901759 65537 131074 0 +5898563161 20961429280 23239028734 11537877925 3390494812 3695778658 629892210 1033626875 684461179 784394336 1583375466 362004349 169599265 57868482 85139965 194395594 412126189 197767529 470346213 780111487 412325354 146611504 1391020511 1619964102 558404142 1763066946 910723280 2637170679 1845616056 331074007 185715390 113914004 +65513 4259779 655508 4291428339 4290838477 24704 613826 2111309 1784250 1635658 2051458 996125 257704 69700 23665 13220 12077 73972 87746 20890 15602 58573 135161 129620 32617 2097 970 1049 2249 1325 1189 5905 5188 2600 2173 5666 8450 9089 7177 3524 4896 5066 3025 5024 3925 4660 7165 9565 14293 15530 15173 11906 1898 2677 1609 1730 5329 7058 2561 360 697 2178 2425 2421 7969 12898 12116 18770 20644 10477 2749 1936 800 3277 16925 37060 57330 74600 78160 56960 33570 22417 21460 17945 6385 1666 5813 7745 19125 26240 265 25425 17680 5365 19408 6569 2056 6381 5185 461 250 1097 1189 389 117 2218 7309 8578 3140 117 1025 593 205 170 1256 1800 2029 2125 1913 1325 593 160 589806 65549 4294705149 196606 0 65535 65537 4294901760 131072 4294901761 0 0 4294836224 131071 4294967295 0 4294901760 65535 0 4294901760 4294901760 0 4294901760 65534 65537 131071 4294836224 131069 65538 4294967295 4294967295 4294901761 131071 4294901760 4294967295 65535 65537 4294836225 4294967295 0 65537 4294901760 65535 4294901760 65535 131071 65535 4294836224 4294967295 65535 4294836224 131070 3 65534 4294901760 65536 4294967295 4294967295 0 0 65534 4294901760 131071 65536 4294836224 65535 65537 4294836224 65535 65537 0 65538 65535 4294901760 0 4294901759 65534 0 65536 65535 65536 0 4294901761 0 4294967295 65536 4294836224 0 0 4294836225 4294901760 1 4294901762 4294901760 4294967295 131071 1 65534 131071 4294901760 131072 4294836224 0 65534 4294901760 4294967295 0 131071 4294901761 4294967295 65537 4294967294 1 0 4294901761 65535 65535 4294967294 0 65536 4294901760 4294901760 4294967295 0 4294967294 131071 0 4294836224 65535 65536 4294967295 4294967295 4294901761 131071 1 +1529782346 10762297130 10576248687 12502774180 3328009919 443597551 165196441 534487068 292855042 910488893 487944186 14025531 21761292 46795089 60947682 86925297 59831893 70154221 174651284 125109384 55188163 37731519 136448550 225510906 343836549 1115942311 341484540 329432196 220071418 47903730 79324935 34758191 +65442 3014800 4281925572 12320469 11862668 371970 1133288 5408125 6850730 3681589 1399133 37705 211837 98165 11050 30802 145485 213265 180121 34945 16354 4633 201745 309321 92173 10730 8362 6370 5585 19881 22018 12050 19634 7850 106 1044 5780 18485 31001 28048 18329 8093 6970 9005 2834 925 4052 6066 4717 625 45362 144194 97877 18625 3236 5785 5050 1865 929 3285 3746 2677 5725 10378 2042 12602 17741 10786 20450 44360 36522 28145 9236 70810 89461 10250 8753 5249 2421 2516 4325 13700 15457 19721 70765 75994 62089 56890 25780 11777 97969 141320 139333 140141 101869 56537 45737 32513 6290 4138 9973 12842 10656 10445 17978 11425 1361 14985 4432 3176 9536 5389 3332 317 3754 22450 30082 10496 1325 1345 4244 4250 1966065 4294770691 327682 0 0 0 1 196606 65540 4294901759 196610 4294901761 4294901761 4294901761 0 4294901760 65536 4294901763 65534 4294836227 4294967294 262143 4294770689 0 4294901761 65533 4294901764 4294901760 4294901761 4294901759 4294901762 4294901756 0 2 4294967295 131071 4294901760 4294836224 196607 4294901761 4294901759 0 0 0 131069 131076 4294770689 4294901760 65534 4294901764 4294836221 65536 65533 4294901765 4294967294 4294967295 4294836226 65535 1 4294705154 196605 4294901763 4294901759 4294967295 4294836225 131070 4294901760 4294967295 65535 65536 1 4294901760 4294901760 4294836224 4294967294 131071 4294836223 131071 4294967295 2 4294901757 1 65533 131072 4294967294 1 65536 65532 65539 4294967294 0 65535 4294770690 131069 4294901760 65538 65536 4294901760 4294901762 4294836222 65536 4294901759 65534 4294901761 4294967295 4294967295 65534 65537 0 4294770688 131069 1 131070 4294901761 4294901760 131071 2 4294967294 4294901762 4294901761 4294967294 4294901761 4294967294 4294836225 4294967291 196607 4294967295 2 4294836223 4294836224 131068 4294901760 4294967294 262142 4 +3791067564 29199196246 32484273889 11339226316 945253387 475330066 717325982 1430157039 370107607 1346486212 1185156574 77992329 170934105 158991872 52953515 270761258 179821416 61883022 182762647 1034542879 148317111 57617007 153211836 470058849 807680174 201829651 869546025 1742955039 1819718210 331119639 212114746 270214834 +9 4286513110 18350096 4269866998 6094642 839844 1816949 592226 1468513 896090 96464 213421 1108225 740293 90441 5476 3425 1300 4933 49249 69892 10701 113329 257661 48725 17545 17168 14837 13520 18818 28145 26900 25045 15520 1885 1066 6010 9530 16484 2197 3865 5825 2740 2880 6282 14026 13850 5045 9680 34817 26545 8434 25605 5480 4141 5989 4018 4276 6057 5066 3793 5321 15769 31041 25378 9773 13666 13352 8177 269 16425 43250 34829 57524 30992 5101 17450 10305 13693 13505 11801 12200 32057 35957 4964 2034 1445 2845 20393 62362 50537 15210 5620 2501 12205 4525 15145 11636 1250 5690 1849 145 985 1585 12260 28593 20521 3728 1044 9293 10525 6340 1300 2069 2701 500 2025 4756 4330 2440 697 1517 2031629 4294311945 65534 4294836225 4294836224 65535 1 4294770688 65534 65536 4294901760 65534 4294901761 4294901759 65536 1 4294901758 196608 4294901761 4294901760 4294967294 0 4294901760 65537 4294770688 131068 131074 4294901761 4294967293 4294770689 4294901760 131070 131071 1 131070 65536 1 131071 4294901760 131071 4294901761 131071 196608 4294901762 4294901760 65538 4294967294 65536 4294770690 65535 0 4294836225 131073 4294574080 131070 4294901760 4294901763 65535 4294770687 4294967293 4294967295 4294967295 131070 4294901760 196607 4294967295 4294901760 262142 4294967295 4294901761 196606 1 4294836225 4294836223 262142 4294836225 65536 0 131073 4294770690 65536 4294901759 131071 65538 4294770689 4294836222 131070 4294836223 196608 4294836223 262144 4294967295 1 1 196606 2 4294836224 65535 131072 4294836225 65534 131073 4294836225 4294901758 4294901759 262143 4294836224 4294967295 196606 4294901759 65538 4294967293 131072 4294967295 65535 4294770689 327677 4294901760 65539 4294836221 393217 4294836225 4294901760 65535 1 4294836223 65533 2 4294967295 131070 0 4294836224 65536 0 3 +6799237905 6864662201 7006791566 2131919786 5255710991 3100076957 120381357 72856497 396087215 987916494 880932902 158909096 226807246 250883270 65432547 111896369 57912617 112231411 232521343 261532899 93611355 118415912 326217427 268475091 626815747 305746581 335181856 569178816 233299401 154945255 254737606 92440792 +65462 6946749 1704165 4279894050 261453 1730818 2666144 1694788 519385 2551313 2968685 621844 164261 918773 692586 362785 256906 180338 56933 28730 30410 36205 274378 515077 363472 135833 25961 477 5690 6353 4306 964 932 6437 17978 18080 9745 13213 31061 27185 10737 7178 6290 3944 5380 16218 17113 19937 67525 47165 3865 4285 16072 14228 8026 7808 9437 9512 5081 1945 2845 7497 7045 12465 12680 3988 4145 3485 5002 11629 8577 577 2953 18989 40973 43265 34970 12905 1537 17218 11762 6010 3793 122 6605 8586 3314 1460 3250 8840 10225 7681 7048 1069 8465 31505 28730 8840 7589 6449 521 218 1417 4421 1396 746 7753 5994 4289 11050 6145 4050 5954 5553 1492 1013 922 72 4 1090 3748 2180 4294377485 327679 4294901764 4294836222 196607 4294901760 131072 4294901760 0 0 4294901761 4294901761 131071 4294901761 4294836225 0 65534 65535 4294901762 131072 4294901759 4294836226 0 131069 1 3 4294967295 4294901760 131070 4294836227 65536 4294901758 65539 4294901758 4294901761 4294967293 4294967295 262141 4 4294967293 1 4294836225 4294901758 4294901760 262143 0 4294836225 4294967293 262145 4294901761 131071 65538 4294770689 131070 196607 2 131071 4294901760 196606 4294901761 0 0 4294901759 4294836225 262142 4294836226 4294967295 131071 4294836226 65534 0 0 4294901760 131072 4294901759 65535 131070 4294901761 196608 4294836223 65536 1 4294901760 4294901760 4294901760 65535 65535 4294901761 4294967295 65534 131071 1 4294967295 4294967295 65536 4294901759 65535 131071 4294901761 0 0 65535 0 4294967294 4294901759 327676 4294901763 131071 1 4294836224 131070 65538 4294901761 4294901760 4294967294 2 4294770687 65533 131071 65535 2 131068 4294901762 196607 2 4294901759 65535 4294836226 196605 2 3 4294967295 4294901758 65536 0 +11453442628 11425949119 8969689026 16948900628 3141421612 5223916947 2760232084 1084064994 299444883 2125273638 3086707368 310453498 51732748 44780716 168107086 258667101 143446403 142283072 504420775 218872051 148184667 92856534 147118020 112855428 420454837 338584768 116140173 145410830 334581197 106611194 146951280 81442850 +65386 1179700 4279828598 34799034 14091243 1511557 797081 2560772 2002801 4066946 9900032 3506045 1268570 287465 125425 109309 589520 214450 272324 554132 146074 51805 353156 383120 86362 10917 49090 14593 45205 96858 57856 17096 8180 9320 10937 32552 16840 34037 64501 26042 8829 20354 12050 8761 55456 126946 192032 160925 108685 77645 55796 33956 127460 188456 149060 78653 33298 39440 10600 6317 6224 29125 115956 100385 29770 2980 2210 10081 3721 1522 19801 10784 7325 17450 33410 23797 17429 37577 58301 34570 11050 4153 5876 7585 20345 27605 20420 31117 23965 15325 18292 25330 52330 62032 13645 7465 53604 95770 66980 21754 3761 1573 24565 44813 21529 15940 22546 31853 7801 16804 37474 26533 26685 9469 1908 5690 2704 1205 90 3425 8833 5408 1441771 4293984264 262139 65535 4294901759 262144 4294836223 327683 4294836224 4294901760 65538 4294705153 4294901755 4294901757 196608 65535 131070 4294770688 327682 4294770690 4294967291 5 4294901758 4294901755 2 65535 4294770689 4294836218 327679 4294967295 196608 196604 65541 131075 4294836223 4294836222 196609 196608 4294967293 4294901765 131068 262146 4294443011 65533 131072 131069 4294770692 327680 4294508545 524285 4294639621 4294967295 65535 4294705155 4294967294 131068 4294705155 262141 4294639614 262140 4294901759 393218 4294967291 131075 65537 4294901761 4294901755 65540 4294901758 262146 4294770688 3 4294639616 196606 4294901757 65540 4294836220 65539 4294967295 4294836218 458754 4294770690 262143 4294770690 4294901760 327679 4294770688 131072 4294836227 262139 131077 4294836224 4 4294770685 131074 4294836219 4294901762 65537 4294770684 262142 65538 4294967294 196608 3 4294836221 262145 4294770688 0 65534 4294901764 4294901758 4294836225 4294901757 131073 4294770684 131072 4294967293 4294705153 524284 4294639618 4294967292 327676 196613 4294836224 4294967295 262146 2 4294770686 196608 65538 65534 4294705155 262140 4294836228 65532 +6368705047 12975091793 18166364780 52214241554 13024503925 2090833921 2377368194 2759098456 2553662904 2277234959 1432376136 318307292 677651485 192682720 241063458 462592106 235368194 1166063109 1772904359 1533640255 1330523268 493306239 820436618 142251500 385262686 624771286 355927840 626237684 1009919011 720155511 623816048 287317982 +65501 655367 1441897 4271767222 57606447 1881808 4042970 4902280 4424697 3433797 1353032 539821 693325 476809 54080 56745 149328 194045 188740 101160 28130 11162 78481 81450 15844 3034 3893 13021 18868 16153 2578 4010 14161 12897 8744 2069 5668 3845 4040 10585 8245 9225 11045 3265 5058 22321 22381 6525 2005 4852 16900 37469 16705 7109 25154 4770 33860 68473 65501 39546 16490 1973 9333 28250 16029 10114 13289 10133 2650 2581 18317 46141 35330 12410 4250 4777 3413 5594 9117 8125 8330 4930 1873 641 729 1525 10837 16132 5512 1061 200 4297 19280 25012 10386 5480 4121 882 6101 9061 5032 5770 8996 9986 4357 1396 245 610 4325 6173 1321 1312 4825 6962 7369 3538 1730 265 85 626 820 265 262144 196609 7 4294770685 131072 2 4294901760 65533 1 196606 4294901762 4294967293 262143 4294901762 65536 4294901760 4294901760 0 4294836224 4294770686 65536 4294967295 131070 65537 131071 4294770688 262142 65538 4294901757 65538 65535 131071 65537 4294836226 65534 4294901761 65537 4294901759 4294836225 131069 4294901760 131071 4294967294 196610 4294770686 262142 4294901759 327679 1 4294836224 4294901758 196610 4294770685 131073 0 65534 0 65535 65538 4294770689 131070 65535 4294901763 4294901759 4294967292 65536 65537 65536 65536 4294901762 4294901759 131073 4294967294 65538 65535 4294901758 65536 0 4294770689 4294967293 131072 131072 1 4294901760 65535 3 65532 1 4294967295 196607 131071 4294901761 196608 4294836226 65533 1 65538 4294770688 65536 65535 4294770689 131071 4294967295 4294901761 65535 65537 4294901759 4294967294 65537 131069 4294901761 0 196606 4294901762 4294901760 131074 4294901762 4294967293 65537 65535 4294836226 65534 65536 4294836224 65534 0 4294836224 131071 0 4294967295 131072 4294967295 4294901761 65533 3 +15167883106 29791915459 24257605316 11647797675 4261333823 2020304337 838008789 1465373806 630426064 493998251 292290878 95823561 130185872 108447425 77255450 72530644 116218457 164994027 153258568 297986985 492976259 562879738 262318542 251356870 339723262 134238402 94797019 176615686 220477688 155696828 89528039 97176475 +65454 4288217150 18546696 4262854925 4283235859 429865 1441141 894445 396122 302800 822589 1448890 1049705 595412 289393 78041 53546 64706 21780 16960 12905 19345 90938 196564 190441 86090 20756 10832 2605 1289 5329 5701 178 7765 8720 35533 72610 60500 14600 281 5777 10413 10706 2980 445 3026 405 2785 13572 27673 14824 16904 48265 44608 19012 2005 5780 1285 3497 16162 15925 25744 22122 9832 4021 293 1325 13940 10036 2228 10820 20052 20137 15602 13621 15476 15056 16393 17770 6770 1625 3809 5186 4505 4212 2745 425 7289 11714 4133 2257 3218 442 5330 6610 485 1818 153 1952 328 4234 9074 8069 10114 9061 6784 5945 4121 1060 45 389 1808 3285 3653 3329 2809 2186 626 365 965 634 580 4293328897 1245181 4294377475 196607 4294901760 0 1 4294967295 4294901759 196605 0 65535 65534 65537 4294901762 4294836223 262143 4294836225 131072 2 4294901758 131073 4294901759 196609 4294770689 65535 131071 4294901760 4294836224 196605 4294836225 65535 65536 65535 65538 4294770688 65535 0 1 4294836224 4294901756 262144 65539 4294836226 4294901758 0 0 0 4294901760 4294901758 131072 4294770689 131073 4294836223 65534 2 4294967294 65536 4294901759 0 4294901760 131071 4294901759 131072 4294901760 2 4294967294 0 65535 65534 4294901760 65535 262143 65538 4294836225 196606 3 4294901757 2 65534 4294836224 65536 4294836226 4294901758 196606 4294901760 131070 196607 65535 2 4294836224 1 4294901757 131074 4294967295 4294836224 131069 2 4294967295 131070 65537 4294901761 65535 4294967293 2 4294967295 4294967294 0 131071 4294967295 196605 65539 0 4294770690 196606 65537 4294901760 65538 4294901757 4294901761 131070 1 65535 4294901760 131074 4294705153 4294967294 0 196607 65539 4294901759 4294901759 0 131069 4 +4693087723 6216564376 2380622365 6298866481 7787092804 3324557987 753831692 354062072 144449470 783698733 1472676048 243518929 41036728 51250421 391588537 400567150 97662506 39175827 167586726 444544685 199762941 239548068 174399124 172894550 317108123 237666657 91541142 109760266 61357052 152356878 103664153 60379364 +65506 3276612 15991154 4266131366 10551016 78370 347002 2220616 4408889 4365401 2540170 588052 44900 53290 133444 130057 61001 13697 42400 2610 1153 936 10240 16405 3973 45985 27241 10804 2925 394 7541 16749 3298 5941 39236 111725 67833 5625 96993 97657 31090 3560 5924 6698 1557 2245 6098 5953 842 28580 60737 17221 218 997 4925 13274 9810 3425 11285 9277 8857 44810 48217 32317 29321 27688 27877 32848 19777 3130 445 2770 5648 7685 15385 41794 44281 25832 28730 23585 6185 1394 1570 1682 3293 1261 629 6548 4289 269 4481 5333 3986 173 841 5989 14906 15341 13130 8704 3033 3488 425 1469 2890 3185 1717 2516 4 424 52 676 3265 3169 1220 400 37 89 818 226 461 980 4293459970 131060 196607 327680 4294836226 65534 262147 0 4294836226 65534 262145 4294901760 65535 65537 4294901760 0 4294967294 1 65535 65536 4294901760 65536 4294967294 4294967295 65537 65535 65534 4294901761 131071 65536 131070 2 65536 65535 0 2 65535 4294836224 4294901761 4294836222 131071 65536 4294901762 4294901759 65536 0 2 131071 1 4294967295 4294836224 65533 65535 4294901760 196606 1 4294901760 4294967295 196606 4294901762 4294967294 131071 65535 65537 4294901758 4294836225 262144 4294967295 4294901762 4294967293 327679 131073 4294901760 65538 131070 131072 4294770689 0 65536 131070 4294836228 65535 131071 4294770690 131073 4294836224 131071 3 4294836221 262143 2 4294901761 0 0 4294901761 4294901761 65535 0 131071 65535 1 4294901759 327677 4294836227 4294901757 65536 65534 4294901761 4294967295 196608 65535 1 4294836225 65536 0 4294901761 65534 2 4294770686 262141 65538 2 65535 65537 4294901760 131071 0 1 4294901761 4294901759 0 4294967294 65537 0 2 +1055567686 13456570819 25649328984 17940984341 1605438440 711908529 738183954 244667242 60959802 71775347 196393712 201673650 57696646 122893225 701802296 814937109 340078864 56672516 214498909 273792553 126126619 322584006 595525932 294341630 310891462 486753133 69983467 75163950 176063964 130864554 40845063 30362427 +65345 12910705 4272357820 4290051267 21758655 132565 827690 2073556 104617 5295789 3748450 24506 748850 991049 1643648 1683785 1454373 1492537 909194 367825 193588 132858 175565 247156 68074 25888 55321 47665 45050 113249 232893 183157 109876 116570 185418 253514 98960 126074 469540 435208 56197 25505 7785 2522 4122 16810 4621 2106 18757 74698 115658 79445 31642 16178 16405 68869 140149 46820 14389 65960 79537 65402 23330 10530 15317 27812 30420 40445 34112 10170 11101 16133 5341 16650 4148 66820 158569 50881 106525 121754 36244 7093 11520 42761 69629 55285 47140 75881 55624 16820 12104 22562 58682 59069 22612 901 30625 13394 3865 5840 27880 32948 13445 7345 23645 48618 52650 29665 9194 9473 11717 6641 2308 1345 7930 12789 5072 149 3917 13169 6084 1709 4293263319 196640 393191 4294770696 262144 0 131074 4294836226 4294836226 196603 2 4294901762 4294967295 4294967294 262143 4294901763 4294836226 65534 4294967293 4294770692 327677 4294705154 262139 4294770692 4294967294 65534 196607 4294901761 262141 4294836230 196606 4294836223 196610 4294901759 196607 3 4294836222 4294836228 4294967294 65535 4294705155 4294770682 131074 131065 131075 4294705152 131067 327681 4294836226 4294836223 4294770687 524285 4294770688 4294705153 458750 1 4294901758 196610 4294836229 4294770682 4294967295 131071 1 327678 4294574084 262141 131076 4294574077 262139 262147 4294967293 2 262143 65540 4294705152 2 262139 4294836228 4294836223 327679 4294639615 262148 4294967289 327690 4294443009 327677 4294770687 262148 4294508546 65532 4294967292 8 4294836220 4294967290 4294836227 65533 4294836222 327675 131076 4294967294 4294836223 196608 65533 262143 65540 4294901757 262146 4294901759 4294901765 4294836217 196616 4294574076 196602 65540 4294967294 262143 4294770693 4294836221 196604 131075 4294967294 196607 1 4294770684 524288 4294901760 4294639620 65534 131070 65539 4294836226 4294901756 4294901760 4294901761 65531 +2356765900 9231856051 14938845260 23252998449 3859443628 9931345014 12545280582 9608156787 2962240910 1641418625 1016734310 474338503 1445512897 1723338305 2077931414 3521573091 1231218638 101697740 514315548 892118793 984565825 954472196 495032180 449109219 640438476 1631596353 1016369956 954212876 589624551 553133001 578500285 181183624 +65521 4291559452 7798954 4253613555 66322550 134290 360442 3267578 5033965 227233 4927025 5422250 741800 188840 668653 451762 159930 349640 466576 118660 138269 606013 743522 400333 80392 36373 92233 183397 158229 70781 34282 70720 77380 52201 23080 85049 77857 12178 153796 313849 141466 153680 181557 138449 40069 4250 25402 36745 38153 50417 77122 65041 58664 39712 36994 106525 205641 148805 44434 20068 31945 38601 51578 45748 37672 62941 83737 44370 21325 34525 77885 88450 50569 11250 10865 21069 120185 243506 261629 113977 54085 75650 132821 189370 97236 12625 43892 98432 62720 22346 15082 25632 77337 134794 141725 109922 104365 70045 14557 1973 34537 55241 36229 14962 1805 9922 6197 981 8245 17812 9140 493 1225 2225 9508 22213 8461 2473 15529 10305 5021 14810 4290510765 3932159 4294377497 4294770684 4294901760 0 65539 4294574080 524287 4294639615 65536 3 131066 65539 4294836223 327682 4294901762 4294443012 327675 4294705154 4294901761 327679 4294443007 262140 131075 1 4294770683 131071 65533 327683 4294836224 4294770689 131065 196614 4294770686 131070 4294770692 196600 2 4294967294 65535 4294901756 393216 262144 4294901764 4294705152 524287 4294967295 5 3 4294574077 327678 2 4294705150 327679 4294901764 4294639618 65535 4294836223 4294901757 65535 131072 4294770688 262145 4294639616 4294770689 393212 4294836226 4294836224 4294705152 196600 65538 0 131073 4294574079 327675 196611 4294770685 4294967295 131072 4294836226 131066 262148 4294639617 196607 4294770691 4294901756 196605 262147 131072 4294705152 4294967294 65537 4294967293 262138 131078 0 4294901760 65536 4294967295 131070 5 4294901755 196609 4294836225 4294836225 131071 131070 5 4294508542 131068 196605 4294836227 65536 4294836222 131074 4294770687 196606 4294901760 4294836226 196605 4294770687 196605 196610 196605 4294770695 4294901759 4294967293 4294901762 131068 2 4294901760 196606 1 1 +1253095846 18020492015 17502816756 29633592448 15582299230 3472022185 2882462250 2821745624 2156343322 5239984413 1728580184 1249957388 974119843 693747588 681183767 1686863608 2324003278 898510960 603378418 901724313 1727932658 921009907 914360739 990178863 1072537640 3031352176 2129162895 1233642791 2119732905 770415964 212273389 252309707 +65512 2228221 4293853227 4293918788 4281335525 362906 425833 734485 2068250 3421610 2309652 489449 87056 139149 149794 69280 24580 10882 12560 11025 1765 2061 6317 22536 16180 9928 15733 19130 9826 2861 485 52 1233 1754 1412 1297 425 2754 3748 8345 8109 4405 4561 7066 6445 2353 61 3770 6500 1421 784 1517 533 2512 2861 3545 3920 1378 394 81 328 130 1160 653 153 625 1042 180 410 1640 2626 1160 2720 6824 8245 6125 2034 2057 1933 1125 866 346 389 2938 2560 208 233 425 1145 833 802 1210 689 578 904 765 1040 1109 1861 720 265 909 865 1082 2756 3445 3050 2756 2657 1476 1157 565 17 145 505 905 754 482 410 85 234 433 196594 4294901766 196603 65536 1 0 0 0 0 0 0 65536 4294901760 65535 65535 0 1 4294901759 65535 0 65535 2 4294967295 65535 65535 4294901760 4294901760 0 0 65536 4294901762 0 4294836225 4294967293 65536 4294901760 4294967295 65536 4294967295 65537 4294967295 65536 4294901760 65535 1 65535 4294901760 4294901761 65535 65535 4294901761 0 65535 0 4294967294 131071 0 4294901760 0 4294901760 0 65535 65536 4294901760 65534 0 0 65536 4294901760 4294967295 131071 1 4294901760 65535 4294901760 131071 1 4294836224 65535 0 65534 0 4294901761 65534 131071 4294967295 1 65535 1 4294967294 65537 4294901760 4294967295 0 4294901760 131071 4294967295 1 65535 4294901761 4294967295 0 65536 65537 4294901761 4294967295 4294901760 131071 65535 4294901760 4294967295 65536 4294901759 0 0 65534 1 4294967295 4294901761 131071 4294901760 65534 65536 0 0 4294836224 0 4294967295 65536 65535 65536 4294901760 65537 4294901761 0 +2085429281 5625150496 15510778827 15395714078 1623386709 980459207 453238454 112620635 56614482 74049573 156061918 147585074 50684678 11069654 16005802 52633943 81430150 61376528 44882521 24554408 42983192 10304127 10318942 22143459 91918754 43725671 27069905 18803182 22888555 34364500 55093279 15797771 +65484 3014710 4285464461 19267559 11600101 431170 195417 706256 22490 4122530 10239338 5184034 1024937 107161 57325 109162 41050 64436 190593 109765 38746 67493 151589 111442 16909 1394 3578 421 4925 5954 5314 3573 3133 7709 9385 18756 25357 9997 3978 10485 2925 1313 5785 5328 8000 16648 4861 4850 8161 4618 3893 3546 245 3442 2593 1525 3545 233 2557 5780 9530 11764 16829 14642 4645 4106 2250 113 421 2402 14209 9620 2276 15493 7397 1313 4820 1018 2420 10413 18596 14760 5876 9553 8392 2290 1170 3701 7577 4138 442 4122 14416 13714 11681 16105 12281 5081 4490 3501 628 522 1665 7376 6565 6570 7421 3445 641 1076 1949 3042 2930 2320 1073 1025 1448 1224 562 80 122 530 589806 589827 4294901765 4294836224 65536 1 1 0 4294770688 131071 4294836224 65535 4294901759 262143 4294901760 4294901760 65537 4294967294 4294901762 131071 4294967294 0 4294967294 196609 4294967295 4294901762 4294901762 131070 4294901761 131072 4294705153 196606 4294901761 4294836224 4294770688 262140 4294901761 65534 4294901760 4294967294 65535 131071 1 0 0 0 4294901760 4294967295 65533 131072 1 4294967294 65535 65536 4294967294 262143 4294901761 131071 4294967294 131071 4294901762 65536 4294901760 65535 131070 65540 4294836224 4294901760 4294901757 131073 1 4294836223 196607 4294836225 327679 2 4294770689 131071 4294770690 4294967295 65534 4294836226 65534 131072 4294836224 65534 65537 2 65535 4294836222 262143 65535 65536 4294901760 131072 131073 4294770691 65534 65535 65539 4294901758 65536 4294901760 131069 4294836229 65531 131073 4294836226 4294967295 65535 65536 4294770688 65536 4294901758 0 4294967295 65534 131072 4294901762 4294901760 4294901758 0 0 4294967294 131070 0 65535 1 65534 3 65535 65533 3 131070 2 +1740850081 2981677376 11585008796 56586105392 15910137974 1211026959 580256502 932978507 769262079 979396831 392956626 24642819 54221276 56930049 178922553 128969942 58634883 119252662 92626325 45322183 37240801 131661377 150226929 76823258 152767672 151599480 173606723 125902348 249501094 101846214 99105555 43231492 +65489 4293525514 4276748174 66977825 4208918999 1191177 439748 769225 2557801 4869089 11870773 7611154 85385 437417 268066 518977 674285 588965 155844 162112 37085 190250 20933 226629 68405 14705 65889 94441 53906 5338 39673 35066 1625 7121 11405 17485 75428 135994 177794 204818 137677 30629 5353 29717 109840 113570 52361 6305 1073 1213 5994 35458 48877 14578 362 13325 42772 60821 40900 23773 328 11336 24370 76474 85289 45621 11925 689 11338 26981 27685 11713 3845 50881 32144 5121 39461 32058 14216 26234 47240 56205 36293 22706 27145 28577 26221 13229 1802 3700 43049 118269 132037 55850 35258 89365 107953 42881 7218 9125 25556 16938 7589 28205 44210 20610 6464 6266 12413 6148 2080 3392 1202 1124 4040 5256 1145 4660 4808 1717 757 1289 2097144 4293656586 917492 4294639625 65531 196609 65534 4294901763 196607 65536 4294705153 196607 4294901759 4294967295 4294901761 4294967289 262146 4294901762 4294967293 4294967294 262143 196610 4294770687 393215 8 4294705154 4294836219 4294901761 65538 4294901756 65536 4294901761 4294967294 327678 65534 4 65532 196615 4294639614 196607 65538 196606 4294574083 262143 4294836225 131070 4294639619 131072 4294639617 4294967291 4294705156 4294770681 196604 196605 2 131069 262143 3 131068 131075 4294770689 65534 2 4294836224 1 4294901757 196609 0 4294836228 4294705149 4294967295 196603 262146 4294770690 4294901755 458754 4294705152 4294639616 327680 4294901760 4294770690 4294836223 262141 4294770689 65535 4294901757 3 4294967288 327683 4294836221 458753 65538 4294639617 196605 4294836224 393214 196616 4294639612 196611 196607 4294639624 4294901754 65541 4294508543 393212 4294836226 4294901760 65534 4294967294 65534 196606 4294836230 4294836218 327683 4294574082 131068 4294836225 4294901759 196605 65534 196613 4294770688 4294836225 131068 131071 65537 262146 4294574082 65533 196611 4294901761 4294770683 196609 65537 65533 +4571788278 6290626903 21358605837 68525327636 18747695014 2619761923 4394272938 3325827116 1051825374 1060442690 881575734 644303463 372206554 189555136 409476128 1870152222 1040487130 980446183 272211290 355747456 462108104 454320534 828205575 336353353 518949723 647624091 672858076 960496180 1638485836 598408408 303305384 90486984 +65504 4292149211 4289790187 9305247 29754572 1345250 639965 303733 47018 958248 4348898 5324413 1615445 98834 13960 143650 326888 291754 139625 56961 33154 89609 226225 248877 111362 14089 3881 1832 4573 10826 6597 2186 1813 6245 2297 8761 4201 2810 873 8245 17645 2482 2984 13897 17317 8100 7537 5050 305 4626 12136 12325 2600 458 2372 1205 3620 7157 6208 9157 4616 3826 6800 12389 6581 49 3778 4520 725 3229 5732 5440 11833 19546 10057 1025 1508 1156 333 101 265 25 1130 769 1493 3650 2920 585 65 1709 4649 1465 7577 1906 1418 3573 23885 22837 5785 4181 4057 362 7825 8917 794 585 1117 961 3361 1640 962 5050 4517 2813 1301 2372 5018 3845 2225 2372 740 328 720886 131072 65545 4294967292 4294967294 2 65533 65535 2 4294967294 196608 0 4294836224 196607 4294967295 131071 65535 65536 0 4294901761 4294901762 0 4294901759 65534 1 262142 4294967294 131072 4294836225 65536 2 4294967293 131074 4294770689 262142 65535 131073 4294836225 65536 0 4294901759 0 65538 4294901758 4294836224 65533 65536 0 65538 4294836223 131071 4294836224 4294967294 4294901760 65535 4294836225 65535 1 4294967295 4294901759 4294836224 65535 65532 1 131071 1 0 4294836225 131071 4294836223 196607 4294901760 131071 65535 2 0 4294901758 131071 4294901760 65533 0 4294967294 131072 196607 4294770688 327679 4294901761 196606 4294770692 65533 4294836224 1 4294836224 131069 131073 4294836223 196607 196609 4294901759 196606 65537 3 4294901761 4294901760 4294836225 0 4294967293 65536 131071 2 4294967294 4294901761 131071 4294901758 196608 131073 65537 1 4294836225 196608 4294836224 4294901760 0 131071 4294901762 131071 4294836225 65535 131071 1 65534 1 4294901758 65537 0 +5503267445 2278704472 3003615743 28253266350 18289232353 1444729957 1675007714 1800410951 560931463 1573374071 1142161202 50484454 75450249 39374112 62533252 62565644 109446110 152648383 77828314 96499736 54921832 110837628 106147571 72313778 180317388 20848765 29995158 56996012 205350876 148127425 65887511 84286350 +65492 2752531 4291231928 4277403334 25362260 156325 72721 681284 1881370 3282381 2926010 712805 90765 44701 1513 3706 72 8450 29633 29297 43385 72612 33961 545 18989 6562 1994 4581 962 416 1186 1973 1940 109 2753 10305 9544 2560 3754 8929 4801 701 7969 10709 7400 9029 5553 1594 281 745 1322 49 461 37 613 800 3506 4869 3341 1378 914 841 1105 900 313 169 586 1730 980 500 3978 5066 2041 1649 2941 7450 8296 6760 3152 1570 3029 3665 1924 493 73 698 981 1234 1369 697 596 1312 1777 1882 13 4325 10114 3620 130 145 365 1514 2522 2637 1508 477 585 2117 1637 533 52 745 2938 2682 656 180 346 541 881 584 9 277 1179647 4294311941 327678 4294901759 65536 4294901760 131071 131072 0 65535 65536 0 1 4294967295 0 1 4294967295 1 4294901760 131071 4294901761 1 0 4294901760 65535 0 131071 4294901760 0 65536 0 4294901761 65535 65537 4294967295 4294967295 4294901759 65537 4294901760 65535 65535 4294836225 4294967295 131072 4294836225 0 4294967294 65536 4294901760 65535 0 131071 1 65535 0 4294901759 65535 65535 65535 65535 65537 1 4294967294 4294901762 4294901761 65535 65536 4294836225 4294901760 65537 4294836225 65535 0 4294836224 1 4294967295 4294836224 131070 4294901760 65535 65535 65537 4294967295 4294967294 65536 4294901760 4294901760 0 65534 65535 65537 4294901761 4294901761 4294836224 65536 65535 65537 0 4294770689 131071 65536 4294901759 0 65535 4294901760 65536 1 0 4294967294 0 0 4294901760 1 65535 4294901760 4294967295 0 131071 1 65535 4294967295 65535 65537 4294901760 4294901761 4294901760 65536 0 4294967295 0 1 4294901759 65537 65534 0 +635601583 4623946160 14604489076 18054500301 2048793167 192660219 20826450 144947271 361186957 364299556 110576014 33743767 13077541 17638144 71055548 70392990 72599559 108934509 30702299 7492577 33653233 32770768 12689000 33028035 79630490 91012673 28887320 24907378 72498940 43317638 34826267 27743421 +65515 4294901802 8716258 4255252747 58391797 2521593 3985268 3004585 287234 1710761 5340413 3227684 464985 22298 71140 26042 2493 39685 79481 3076 137594 366349 217412 16570 17482 65650 74528 38914 19465 22465 6841 1090 2210 629 15572 24293 3560 4145 6253 26165 33125 14416 6980 44005 56693 14585 232 1226 2041 10085 34481 57881 47853 20200 4033 676 3581 15233 13220 3130 797 58 1945 6273 3978 1076 2512 1972 530 697 14650 16018 1108 4825 9140 16672 49745 59165 24260 9841 8597 2845 485 386 4913 14785 16325 7712 925 1600 1864 405 245 2152 6400 9565 43520 51104 23605 10337 8009 8650 4132 1921 725 961 7165 9364 3785 1345 916 130 1717 2885 4538 1360 289 18 650 697 281 293 589815 655372 4294377473 131069 65535 65534 131072 131070 65537 0 131073 65536 4294901761 4294836224 131071 65536 4294836224 0 65534 65537 65537 4294967295 65536 4294836225 131070 4294901759 4294901760 262143 4294901760 65536 4294836225 0 4294967294 4294901763 4294967295 4294967295 4294901760 65538 65535 4294967295 1 4294967294 65538 4294967293 131069 65538 131072 65537 4294770690 4294901760 4294836224 65534 4294901760 131070 0 65537 4294901759 131072 4294901759 65536 4294836224 262142 4294901761 4294901759 65535 131070 4 65534 65537 4294836224 65534 65535 65539 65535 65535 65537 4294901758 4294967295 65536 4294901761 65535 4294901761 0 0 0 4294967295 65535 65537 4294901760 4294901757 131071 2 4294967295 1 4294901760 65536 4294836226 4294836222 65536 65535 4294901760 4294901760 131072 4294639618 65533 131071 65537 4294967295 4294901758 196607 4294901761 0 196605 4 131069 65537 4294967295 65538 4294836224 65533 1 196607 65535 131075 4294770689 4294901757 131071 4294836224 131071 65534 4294967295 4294901760 131070 65538 65535 +16925999430 18316385014 6765103749 29751869228 9248935726 590656637 196577266 369833100 1036347679 1949477709 436167336 511319619 184477055 37387933 151183436 151931021 299339842 394798275 131554144 534536901 145916020 86481382 52673975 84468035 290579874 505339277 136630608 96451864 413645390 284079029 93838091 44320937 +65485 1638373 16449258 29295977 4159307492 4648957 3621845 3396509 3987157 1709 1186357 1654825 2491380 475753 127917 842180 1047217 386433 2920 130385 60680 99761 38992 110465 40529 20882 189517 250469 88538 14162 56585 33197 6521 9000 53210 99250 40961 14346 12402 218 18989 26401 232 63205 75701 4930 33773 35209 46657 23840 31954 115493 128500 51698 9522 3925 2084 292 17789 39793 23057 9197 22001 58546 41429 1924 19553 51082 55481 31501 8357 127616 239314 139490 64130 84713 173009 81577 706 15674 33577 27389 10525 19013 37349 10372 1373 2749 25397 38216 40402 20432 1709 19984 29156 33637 111861 74761 7921 48100 95561 87665 44497 20381 4589 16708 33482 30581 11009 4874 23809 29525 15973 7925 4946 1801 12301 21097 9490 1369 2405 2017 4294705131 4294246400 1048573 4294705152 196609 196605 131079 196608 4294836223 4294836225 393216 65535 4294901763 2 4294836225 4294901762 4294705149 4294770686 458750 4294836223 4294967291 65537 393213 196606 65541 4294836225 196607 2 4294705153 131070 65537 4294967294 196607 4294705150 131076 393211 4294770689 196610 65537 4294901757 131069 4294836227 393210 65537 458751 4294770692 327677 4294901765 4294836224 65532 4294836224 196603 458752 131078 4294639617 131072 196604 196615 4294574082 65532 4294574084 262141 65537 4294967292 4294836229 4294967295 4294836224 65533 0 3 131068 4294836227 196603 4294836225 196610 65532 131075 4294836226 327678 4294639623 65527 262145 4294836233 4294508539 458747 4294836222 4294836225 327676 196608 4294705151 327683 4294836225 65534 4294705153 196606 4294901757 262145 65537 327679 131076 4294770688 65537 4294836220 393215 7 4294770684 131069 196609 131071 196612 4294770690 131072 4294705156 4294967290 196612 4294705154 131068 65539 4294901763 65538 4294443008 327680 4294770686 65534 327685 4294836220 6 4294901760 4294836222 4294836225 131070 4294901755 196611 4294836225 65533 +22364848819 23019211877 13536398921 7661844332 13153918661 4061423712 6189535018 2626984739 734547992 679343661 640844424 1634139870 653180623 270600318 653081286 231006116 276192993 574796128 531493951 1136056218 257843259 376631657 556672806 985601197 2451927490 1080397176 418835476 516596298 1067991069 1326940241 533782371 317521998 +65486 8388614 4272684919 55246882 4231659841 1045124 493730 400868 2814410 2678266 838141 61538 113972 179129 72337 160850 404721 307962 108289 27781 7685 50617 111725 95345 57545 26165 1732 18496 15122 68858 112370 84565 40570 27157 19130 3226 2313 6329 6525 10282 16400 5809 6521 15857 16605 35330 28360 1658 12170 5009 1285 353 1706 225 1234 820 2209 2941 4505 4250 1604 2642 6730 9122 3656 8993 31005 43588 13544 5202 12164 25325 51866 21605 7610 107773 156320 50005 2705 11709 9065 8420 4925 712 14418 18097 17284 42713 50626 22100 9316 26765 79880 88808 50404 20753 9981 12665 8722 5002 5018 801 169 1480 3208 2825 306 565 1082 1090 1021 4397 4437 1845 801 394 1730 3797 5188 2197 436 936 720875 524293 4294377476 327677 4294836223 65536 2 4294967295 65535 2 4294967293 65538 131070 4294901759 131072 4294836224 4294967294 196607 4294901761 4294901761 131070 4294901761 4294901760 131071 4294901763 65534 4294901761 65535 4294836225 196606 2 4294705150 131072 65535 4294901763 4294901758 196608 4294770690 4294901758 196607 4294967295 0 4294770688 196605 196611 4294901760 4294836226 4294901760 65534 0 4294836225 0 4294901759 4294967294 131072 4294901758 262144 4294770689 196606 2 4294836226 65535 4294836224 65536 1 4294836224 131071 1 4294901760 4294901760 4294967293 262142 4294770691 65534 4294967292 393215 4294901764 65533 4294836228 4294967294 4294836225 65536 4294836223 0 4294967292 262147 4294770686 262145 4294639617 262141 4294836224 65535 65536 65536 4294836224 4294901759 196609 4294836227 4294836222 196606 4294836224 262142 65539 4294836224 65537 4294901760 65537 4294836224 1 4294901758 65536 4294901761 65534 4294901760 131070 65536 65535 4294770689 65535 4294901759 131069 4294967295 131071 65535 327679 4294836226 65534 131071 131071 65538 0 4294901761 65534 131071 2 +4267278578 5284912346 15654245454 7584371455 757541440 958175918 2029693395 1822263793 301143373 735864971 560795502 145468741 729607917 636312274 140085758 92179138 136678205 284556947 160571857 24156465 30303981 63889416 207515641 397539517 932404486 815941330 296130518 837264004 823507287 98236812 45243383 64272200 +65523 4294180972 4266917545 63635349 4267245909 254941 1099237 727885 410384 1666696 2028793 691325 93160 30586 70177 151425 95805 68137 37341 40352 45940 69737 19700 46458 145261 83450 36181 30484 19721 20896 44026 21650 3042 2516 2218 2825 2441 24260 22625 17872 47588 71240 28018 4546 4904 9860 20785 33490 20621 12500 5938 5393 21053 29170 17384 9773 3825 925 1285 2825 1568 229 10660 20593 10421 1681 7289 18013 21402 10370 6290 10804 9857 2018 1625 14900 111816 170213 97970 42536 32456 31265 36602 26573 485 8992 17137 14225 21794 59245 60685 43810 19841 625 12505 26788 11700 2041 1402 7801 11698 3609 6088 10205 11250 17305 15650 6641 8810 12137 4717 533 1105 4861 4660 1874 1417 3145 7421 8125 4849 2777 2621455 4293132291 917496 131079 4294705152 0 4294901761 65534 0 4294901761 4294836224 4294901756 262143 4294770688 196607 4294901762 0 4294901759 131070 65537 4294836224 4294901758 65534 2 4294836221 262143 65538 4294770687 196606 0 0 4294836223 262143 1 4294836223 131072 4294901757 131073 4294901760 1 4294705153 65535 0 4294836227 4294967293 131071 4294901759 65538 4294901757 65540 4294836221 131073 4294901762 65533 4294967295 2 131071 4294967293 65536 65535 131073 65533 65537 3 4294836224 4294967295 4294836222 131072 4294967295 3 65535 4294836223 131072 65536 0 4294901761 131071 4294770688 65535 196609 4294770690 4294901756 196607 1 65535 2 4294836222 65536 65535 65537 1 4294836224 65535 4294901760 65532 4294901760 4294967295 131071 4294967294 65538 1 0 4294836224 4294901761 4294967295 4294901761 131069 1 131071 65536 4294967295 131071 4294836222 262144 4294836224 131072 2 4294901757 65537 2 4294967295 4294836225 4294967295 4294901760 0 4294836225 4294967295 4294901760 4294901760 4294967295 4294901758 65535 4294901762 4294967295 65535 +3363624643 5024467282 5936939269 11928624073 1989590507 500454296 890244102 484960024 408268655 407748116 931223116 387325043 298601083 142573204 50333810 260657043 544829518 182232298 285774374 229077575 165510081 55234109 182984063 235559258 463042189 1572332571 463590384 764055301 369900031 213389719 248484276 110192412 +140 12320523 4236640586 128187598 4176610339 1317985 2016450 1264250 464621 712532 2357329 1583993 300733 100249 101914 12818 188885 386537 340034 58500 6786 38729 31333 45274 60826 10280 1700 9061 15842 5968 3700 20776 15570 10841 17425 27028 40589 35624 15241 18472 47450 21312 12465 60505 27130 17258 20557 28753 31826 31210 36485 46922 47881 29410 10817 10324 21925 27040 17730 4693 505 125 6344 26413 33541 20225 25506 23413 22321 18938 4868 3205 10226 6485 9605 38900 52292 15570 16317 67337 48841 207650 228260 68360 18154 9665 373 6561 4964 10709 39217 24565 25250 18730 10324 23194 22417 15353 10256 3922 6362 9266 2797 1385 2740 1381 5450 3922 5105 4229 41 3793 9800 9189 3770 980 346 1220 2548 545 365 401 2162679 4294049811 65535 4294705147 65536 65536 0 0 4294901758 65536 0 4294836222 196606 65535 131073 65535 196606 65537 65535 4294901760 4294901760 4294967295 196607 4294836223 131071 65538 4294836226 4294967294 4294901763 4294967294 4294836224 4294901761 131071 1 4294705152 131071 4294901760 4294901757 131071 4294836225 131069 1 65537 4294901761 4294967294 65537 4294901762 4294967295 4294901762 4294967291 4294901761 65535 65537 4294770689 196607 4294770688 4294901761 4294836222 65534 1 4294901758 131069 4294901761 131071 4294836225 4294901760 65535 4294967294 131073 4294836225 131069 0 4294901760 65537 4294901759 4294901760 65536 4294901759 65535 4294967295 65536 131071 4294901761 131070 65538 4294836226 131070 65537 65537 4294836225 131070 4294901759 131072 4294836225 65534 4294770689 196606 4294901760 0 4294901761 0 4294770691 4294967294 4294967294 65536 65537 4294836223 131071 4294901760 1 65535 1 4294967295 4294901761 65532 65538 4294901760 65535 65536 4294836225 0 65534 2 65535 65536 65536 4294901762 131071 4294901762 65533 0 4294967295 2 131071 0 +8688907420 8651681087 3882888320 13344712853 4899158051 798739702 1028831102 2539014856 638903122 317718010 384670182 80111143 103317142 167076352 301314820 350854382 391349540 404306210 433994476 574314223 313672804 157484335 377191355 334140619 316134597 1301708648 1659919320 374228018 445302887 163137190 106841473 98757674 +65492 12779732 4236967784 64289852 44631483 3150253 1634485 295506 164896 607130 993221 609613 143537 14624 3389 61250 139345 253170 230977 109793 37300 17173 26338 30032 17649 8649 6929 5165 9962 17370 15172 6280 578 3226 5194 2522 2384 1625 289 1685 7522 17865 17973 9928 7738 5234 6641 5818 1300 1810 193 1597 853 2257 1602 1157 1360 2696 2120 125 425 962 337 100 1768 4489 9578 6948 1602 1300 442 10525 29858 37361 18154 2176 2920 1570 2465 17722 24157 28069 23337 7794 1018 261 666 1381 2426 3626 4717 5746 4253 2533 149 1354 1517 1513 904 733 740 697 1597 2665 1921 365 109 449 802 800 401 904 725 100 149 5 170 388 242 65 81 289 786422 131081 4294836223 0 0 0 65536 0 0 65534 1 4294901760 0 4294901760 4294967295 131071 0 65537 0 1 65536 4294967295 65536 131072 0 65535 65536 4294901760 4294836224 65535 131070 4294901761 65537 4294967295 65536 2 4294967295 65537 4294901760 4294967295 65536 4294770688 65536 4294967294 65537 65535 65537 1 65536 65535 0 4294901760 131071 4294967295 131071 4294901761 65536 4294901759 65534 0 1 4294901761 65534 4294901761 65535 1 65535 4294836225 4294901761 4294901760 4294901759 131071 4294967295 1 4294967295 0 1 65534 4294967294 131071 65535 4294901760 4294967294 4294901760 65534 4294901760 4294901759 65537 4294836224 65535 65535 4294901760 65535 4294901761 4294901759 1 4294967294 65537 0 4294967295 1 65534 65536 4294901760 65535 65536 0 4294901760 0 1 1 65534 0 0 65536 1 0 65535 65534 65537 65536 4294836225 65534 2 65535 2 4294967294 0 4294901762 4294836224 65535 4294901760 4294967295 65535 2 +13209682291 4084147554 2238015712 5991930059 1953586645 196444746 822877259 1778500613 742348323 233802308 177148240 73219483 144849322 53782826 38117743 23906209 159975557 118985794 48876276 20259462 27125220 16381165 50210512 103903521 345857809 239779513 223664576 71409647 46379915 30995031 20584721 8614124 +89 4288414122 4240636810 112460595 4167761534 3391956 785300 170705 1175560 1225480 197321 171344 99661 128160 300170 309521 380485 386917 142388 47450 98305 101713 18517 3338 9850 7925 15125 15944 2925 13450 1114 4597 1301 3233 3754 11840 15850 31409 21709 8017 6760 65 12114 17450 10085 4325 145 4194 19602 25946 7204 10804 19930 7253 1730 4437 5652 2564 3488 3133 7085 11988 13073 14794 19025 18925 14965 11090 12809 8692 565 8692 1418 32657 27152 3677 1525 8066 12097 20485 13505 2818 5445 3625 1093 6800 4706 5050 3509 1225 746 985 1433 1985 5161 21818 39469 20485 1780 653 2105 1033 410 1730 8480 14920 6885 4176 6084 2605 185 793 197 577 1594 512 45 137 218 1737 2213 340 917520 4294901734 4294377491 786433 65529 4294180867 262144 196607 4294836221 196608 4294770689 196606 4294901760 0 4294901760 65537 4294901761 4294967294 0 4294901762 65533 4294967295 3 4294836222 65535 131071 4294836224 4294836224 196606 4294836224 131071 4294705153 196605 2 4294967295 65534 65536 0 4294770690 65534 4294836225 4294901758 0 196604 4294901762 4294967294 131074 4294901760 65534 65537 65536 0 65536 4294901760 65534 131071 131073 4294836223 1 4294967294 131072 4294770688 65537 4294901759 0 65535 0 65538 4294901758 65535 4294901760 4294901760 65533 4294901760 4294901760 4294967294 131070 1 4294901759 65537 4294967295 4294901760 4294901758 196609 4294901759 262144 4294574083 131072 4294901760 1 4294639616 65535 4294967295 262143 4294836224 3 4294967295 65535 1 65534 0 196607 4294770689 196605 4294901763 131072 65537 4294770688 4294901760 0 4294901759 65537 0 65534 65534 3 4294901760 4294967295 4294836226 4294901759 196605 4294705154 65531 65538 4294901757 65537 131071 4294901761 196605 4294901763 4294967295 4294901760 65536 4294967294 3 +11910490572 3216754880 6803640801 2969354749 904981686 1640133658 2731047426 2169674962 760261854 440687837 88060822 121667662 80768056 31045445 125967584 240259259 103206438 119576287 176621902 191961720 77702252 115933401 279500203 189714841 273168341 221844448 115316958 61706937 306214143 136507848 128407848 22071613 +65532 4294311946 1376217 4294967295 327796 31520 60713 84708 77305 90837 63017 28085 18472 15017 17492 28085 35594 41905 50497 47545 40801 31546 30824 36040 39770 39145 34448 26545 19060 12289 8704 6290 4049 2405 1730 1730 1489 769 325 3016 8818 20402 33485 43205 51365 50674 40385 27332 14778 7720 6084 7624 10049 12897 17524 24433 33296 39682 44305 46125 43697 39962 36842 34378 36788 40916 46513 58005 73280 87880 102290 118100 123725 120509 119204 116785 114709 116980 121444 128930 139572 148840 142792 123385 98500 67993 45250 42554 60041 86585 109960 123088 121588 106861 82546 57690 37925 27274 22504 23465 27685 31561 32701 27905 21250 14152 7585 2320 490 585 1681 2448 2329 1924 2329 2833 3485 4018 4469 4304 4349 3833 3276779 4292411403 1638397 4294311935 131074 0 0 0 0 0 0 0 1 65534 4294967295 65535 4294901760 0 4294967295 65535 4294901760 0 65536 0 65535 65535 65535 4294967295 4294901760 4294901761 65535 0 65535 0 0 4294901760 65535 0 0 4294901760 131071 4294967295 0 0 4294901761 65535 0 0 0 65536 0 0 131071 0 65535 0 65535 0 65537 4294901760 4294901760 65535 4294901760 0 0 4294901760 4294967295 65535 65535 4294901760 0 0 4294901760 0 65535 4294901760 4294901760 0 0 4294901760 131071 0 65535 0 0 0 65535 4294901760 4294967295 4294901760 4294836224 0 0 0 65535 4294901760 65535 1 1 0 0 0 0 0 4294967295 65536 65535 4294901760 0 0 4294967295 4294901760 0 0 0 4294967295 0 4294901760 4294901760 4294901760 0 65535 0 0 4294967295 65535 4294901760 65535 65535 4294901761 4294901760 0 65535 0 0 +237434189 499922217 505133994 441834840 148584001 134361612 246902979 375356541 377172109 306513225 380925456 296315571 145325444 52968199 21027784 23929228 276235605 624597590 312575443 156400513 455045323 720856046 732214896 1494389708 2361129006 2679936589 2301322707 2000335101 1637945505 681827461 183147366 82330012 +65534 4294246397 2949096 4292018315 4289199799 270301 246177 423949 1199844 1332864 529121 42925 12106 18853 13061 5218 57700 158233 173925 90625 52100 30056 2009 88922 224605 229725 125033 21658 7281 50404 49892 13540 229 3145 2746 2050 3050 833 15805 58568 107405 153994 203125 209458 191189 184484 159250 112132 53512 16057 18122 37210 37705 9425 3601 39821 90361 127220 116929 86445 59464 49156 49858 60250 68506 60682 77818 150589 289973 405369 401689 330857 301570 317629 276424 180850 102010 87652 131525 180449 221465 251173 266905 264205 218762 125701 31145 14746 100773 229941 302276 282581 253333 219700 153541 93636 30377 4240 3380 18241 35946 50576 79225 95593 82125 60100 40925 23321 15236 15986 14813 9556 3285 82 1213 3026 4325 6781 6602 3236 1553 2834 2424778 2097195 4293066760 65524 196608 0 0 0 0 0 0 65536 4294901760 0 0 65536 0 0 131071 65536 65535 0 4294901760 1 0 0 0 0 0 0 4294901760 65535 65535 65534 0 0 65535 4294901760 0 65536 4294901760 4294901760 131071 0 4294901760 65535 4294967295 65536 0 4294901760 4294901761 0 0 0 65536 1 4294901761 4294967295 4294901760 4294901760 1 4294901760 65535 0 0 4294967295 65535 65535 4294901760 0 65535 0 4294901760 65535 65535 4294901760 0 65535 4294967295 4294901760 0 4294967295 4294901760 4294967295 4294901760 4294901760 1 131071 65535 0 4294967295 0 4294901760 4294967295 0 0 65536 4294967295 0 4294901760 4294901760 4294901760 0 0 65535 65536 4294901760 0 0 65535 1 4294901760 65535 0 0 65535 0 0 1 4294967295 0 65536 4294967295 65535 0 1 4294901761 1 4294901760 0 4294901760 0 1 4294901760 0 +1384809583 3253852150 7271882261 4247132793 165951197 106924444 334793989 1186792065 683710887 328783218 1777824058 859450346 384515125 118491239 29264336 324188526 1925807083 2591551091 1170412774 393317159 1003847215 1375415668 1272433002 5102945913 5527301760 3564304855 4171837220 4252817101 2886468276 1293586339 867722874 137636997 +65494 4293328853 12779479 4294377428 27460202 1450609 1571744 2399120 3698980 3168085 2782625 1297517 88724 7298 90469 138653 8185 176005 148325 45730 33665 22888 106085 262210 133754 5666 42100 42057 77972 59650 72761 51885 16250 2401 27757 32077 52082 144293 207061 140040 40840 16136 27290 16452 2309 4637 3092 13050 22525 3681 1345 15041 18737 35496 23242 1 1789 10865 21170 9050 17680 25540 23525 32841 33813 8570 2385 12961 29594 29672 3893 12997 25930 23040 2056 3229 3233 2258 1352 1405 1460 3330 7018 845 3497 4721 6400 2257 8980 520 14650 29768 20345 8026 6469 20992 46405 43613 25981 26440 31586 14985 317 4765 6560 6068 8992 11065 9530 8434 2210 820 2216 10 2605 4265 2801 584 296 485 145 229 4293591024 1114090 851971 131077 4 4294901762 4294901761 0 4294901760 0 0 4294901760 4294967295 65535 0 4294901760 1 0 4294901760 65536 65536 65535 0 4294967295 0 0 131071 4294901760 4294967295 65537 4294967295 65535 4294901760 0 65537 1 0 4294967295 4294901760 131071 4294901760 4294967295 0 4294967295 4294967295 4294967295 4294901760 0 4294901760 65536 1 65535 0 65535 0 0 0 65535 0 0 131071 4294901760 4294836224 0 4294901760 65536 0 4294967295 65536 0 0 0 4294901760 65535 65535 4294901760 4294967295 4294901760 4294967295 0 131071 65536 0 0 65535 65536 0 0 4294901760 65535 65535 65535 4294901760 65535 4294967294 65536 4294901760 0 65535 0 65535 0 0 0 65535 0 65535 1 0 65535 4294901760 4294901760 1 1 1 65535 0 4294901760 0 4294901760 4294901760 65535 0 65535 0 0 0 65535 0 4294901760 0 0 4294967295 65536 0 +8026452370 15484908668 20499977190 18319213840 3373716595 481122188 708365662 1064222070 447613201 981882246 1216899638 429224583 712942489 343870777 464365911 1708426014 607524825 125260654 157218368 252388115 200501238 298140369 401480944 335145082 254978930 49584394 84879802 240024458 602349628 451255150 178445616 59224662 +0 1441754 16253100 4251517323 4287298578 797573 258997 13666 147272 685210 1166981 1017161 268769 22050 169045 138905 303236 509490 152825 5072 9577 19280 7844 38074 14989 41346 118597 37705 832 18866 18730 15354 39437 60041 50157 29648 16105 44125 105706 81617 77485 34532 7345 3341 10376 19225 20290 15457 1000 2041 3449 6500 11026 6890 4498 11009 9578 3536 25010 9697 13285 13597 1168 12301 245 4889 1813 7450 6472 2645 3368 5473 12296 38501 31904 6625 2293 7225 10585 8980 320 2853 565 11713 28881 19240 3706 6245 10205 1696 685 4765 6100 9866 11930 1850 12722 23258 11125 5330 5050 51265 36853 10777 9736 10709 15368 5300 3737 1210 6660 7625 1493 53 1706 2210 20 2873 4954 2720 1585 1492 4293132304 327661 131080 4294967293 131071 1 0 65536 1 1 0 4294901760 65535 4294967295 65536 4294967295 65536 4294901760 0 65534 4294836224 4294901760 1 4294901760 65535 4294901760 4294901760 0 0 65536 4294967295 1 65535 0 4294901760 4294967295 0 4294967295 0 4294901760 0 1 65534 65536 4294836225 65535 4294901760 131071 0 4294967295 0 0 65535 65537 4294901760 4294901761 65535 1 4294901760 4294901760 65535 0 0 0 4294836224 65534 0 0 4294901761 131071 1 65535 4294967295 0 0 65535 0 4294901761 0 1 0 0 65535 131071 0 4294901760 65535 0 65535 65535 4294836225 0 4294967295 4294901760 1 65535 4294901760 0 0 4294901760 65535 0 65535 65536 4294967295 0 0 131071 0 0 4294901761 0 1 4294901760 4294901760 4294967295 65536 4294967295 4294901761 4294967295 65535 65535 65535 4294901760 0 4294967295 65535 0 131071 1 4294901760 4294967295 65534 65535 0 +2977011107 650914810 2288018320 7520683099 3358846989 875614221 1936947318 2462199032 245275565 162481150 354004652 579022806 174936282 412065585 456282401 851282558 577907117 178246772 129481190 100052269 151783470 208256264 102348220 96250207 348059763 147820204 244018392 148321767 234305056 521714339 203999644 70550417 +65442 2293789 13107004 4288873243 4281990370 629665 809509 929360 1103440 239002 951066 1318733 406016 10369 82413 275609 804506 1568401 1049497 184325 29665 63865 192373 318746 199274 85685 398213 813565 820874 369378 134210 53885 28132 22669 46813 33581 193954 417397 210401 43525 44633 13469 12538 48841 27028 9505 12429 29825 44089 22916 14562 11250 16840 10490 8066 2725 26938 160672 180305 38025 12106 6260 16477 24889 24925 65909 103813 96109 71410 48528 41225 19917 7624 40820 26333 16724 23645 84868 52754 4553 21605 27044 14293 2164 25997 74402 66357 104465 103748 35317 2372 8872 11261 1157 8200 34000 31376 10706 346 19405 65540 115810 60281 49930 74225 12904 6409 34568 28565 1028 7380 18245 14356 6625 229 2500 281 3329 3541 85 733 1157 4294967282 4293984266 4294967281 327681 0 131071 65536 0 0 0 0 65535 4294901760 65537 4294836225 4294967295 65534 65537 65535 4294901760 4294901760 65536 0 0 1 0 65535 131071 4294901761 65535 131073 0 4294967295 0 1 4294901760 131070 65537 4294836224 131072 4294901760 4294836225 4294901760 4294901760 131071 4294967295 4294967295 0 4294836224 65535 4294967294 0 65536 4294901760 4294967294 131072 4294967295 131071 0 4294967295 65535 65537 0 4294901761 65535 65536 65537 0 65536 65537 1 4294836224 1 65534 4294901760 4294901761 131071 4294967294 0 65535 1 4294901760 4294901760 131071 0 4294967295 4294901761 4294967295 4294901760 4294967295 65537 65535 0 4294901760 65537 4294901759 1 0 4294967295 0 0 4294967295 65535 1 0 131071 4294901761 0 4294901760 4294901760 4294967294 65535 1 4294901760 4294901760 4294836224 65534 0 4294967295 131072 65537 4294836224 65535 0 65535 1 0 65536 4294967295 4294901760 4294967295 65535 4294901761 65534 2 +3786032587 5999060498 4394801484 6492352396 4533451529 784295559 4659258635 9314660305 1936272237 1517385845 2149905238 5604540659 4456645633 546039872 1142483135 2620204651 457615013 332270054 387560577 221048132 797480291 1027414868 763837324 1178612421 575232148 728347389 820289944 1067788799 410298531 1347049446 618702844 146953926 +9 4292738965 6750192 32899242 4232970860 1130600 414457 366813 709300 387778 219706 769298 300341 93053 6953 39994 175738 676993 347945 120409 165665 190082 108425 12532 141200 227396 62389 46457 195066 402769 230281 33490 11149 11432 1153 850 63485 225938 152897 52225 57377 42989 4885 13949 40309 29125 17690 11674 28793 58133 41425 21536 16000 28885 66541 54980 17216 128090 223145 124580 41885 18320 19597 39125 47048 25673 9805 6437 5069 28745 37637 13513 9146 12532 9250 16138 43325 31477 2041 64420 84317 49040 69170 74629 89037 207205 288137 304036 152937 163280 278900 181058 54125 5760 5585 20485 21970 13189 7748 965 2329 24128 61568 43528 8665 6253 4346 12893 25040 13325 3466 9469 28085 23049 5330 794 2633 4258 7540 7993 2978 404 262115 589834 2 4294901760 4294967295 65537 65536 0 65536 0 0 0 4294901760 65535 0 4294836224 65536 1 4294901760 65535 4294967295 65536 4294901761 4294967293 65536 4294901759 131071 4294836224 131071 4294901759 65535 65536 65535 4294836224 196607 4294901762 65535 65537 4294836224 0 131072 4294901761 0 0 65537 0 65535 131073 4294901759 131072 4294901760 4294901760 65537 65536 4294901761 4294901761 65536 4294901761 0 4294901760 0 4294901761 4294967295 0 4294967295 4294901761 65535 0 4294901760 4294967295 131072 4294967295 131071 131073 1 65535 4294901760 0 0 65535 1 4294901760 131071 65535 131072 0 0 65536 65536 4294967295 131071 4294901760 65538 65535 0 65534 65535 4294901761 65534 0 1 1 65535 65537 4294901760 65536 65537 0 4294836224 65536 4294901761 65535 65536 4294836225 196607 4294901761 4294967295 0 4294967295 65535 262143 4294901761 0 65534 0 65536 65535 4294901761 65535 65533 2 4294901760 4294836224 0 1 +4332343661 2817941910 3311199167 2817462112 2970535222 510272771 1231608931 3547933821 1553161029 1102581064 1265403206 1116133007 2749984636 483694422 382260155 1583576695 535394932 342644355 439256217 509798231 1169193597 1551288598 518829590 329655443 357735633 866583714 2856188825 4384512991 832189766 537900762 413652286 268099507 +65480 3211290 4282974352 1113491 39649824 337682 60701 118629 332681 173585 297785 684745 298961 47965 77300 247985 515201 527210 220301 58228 15677 36125 221245 124525 199172 186005 12965 19098 35789 49124 33589 23725 13121 14689 49681 130373 241090 190994 66985 11029 9376 2152 29153 10217 6025 31460 23236 29933 13988 965 7844 9898 25385 14810 1753 56205 123509 85433 3041 36488 18369 2689 30848 62197 41485 4745 109 1717 9736 7082 7092 7250 24085 42682 44701 36517 44234 66258 54730 35005 7272 73789 132977 25225 34425 61540 106756 344084 262216 57329 39962 98845 19825 18666 16052 22321 6530 8066 17540 7105 25345 47700 17485 1609 10202 11705 3050 530 1465 2756 4369 4405 1972 4840 2000 610 2250 1480 1961 2125 1685 1970 4294311899 851983 4294705148 65536 2 0 0 65535 0 0 65536 4294901761 4294967294 4294901760 0 65535 65535 65536 4294901760 65536 4294967295 0 4294901760 4294901760 65536 0 4294967295 4294901761 65535 0 4294836224 4294967295 0 4294967295 0 4294967295 131071 4294901760 0 4294901760 0 65536 4294967295 65536 4294901760 65535 65534 0 4294901760 131069 2 65536 4294901762 4294967295 4294967295 65535 65536 4294901760 131071 0 4294901761 0 0 4294901760 4294901760 0 4294967295 0 0 4294967295 65536 4294967295 4294836224 65536 0 0 4294901761 131071 4294901760 0 65535 65538 4294967294 1 4294836224 0 4294967295 0 0 4294901759 131071 1 0 4294901760 65535 65537 0 0 65535 0 4294901760 4294901760 4294901760 65535 0 4294901761 65536 4294901760 4294901760 0 0 4294901760 65534 1 65537 4294967295 65535 0 4294901760 4294967295 65536 4294836224 131071 65537 4294836223 131071 4294901759 4294901760 4294967294 0 4294770688 65535 4294901760 0 65534 +1144257557 893194977 1524172345 2656990700 2712406451 786734909 2822954323 3023929466 527666841 1172738236 1651594914 468094942 413036746 247222724 1385679116 1385735570 176945160 261067824 249261965 205523600 898302221 540325841 482074263 137198138 655537414 1053681721 1905781387 2813846616 519180249 467040454 115316630 70053256 +34 4291690466 917838 4264033800 26935101 141800 466 570089 581810 776945 1786580 920692 74797 133645 4660 19885 80648 396938 106985 14449 132130 446573 392389 714845 2216080 1828741 412090 51637 91621 85145 42653 16025 15913 32810 247122 552773 203636 3250 38993 100708 387413 549664 296162 21658 14152 56250 137233 162370 102394 82105 282685 329818 97973 63233 186386 81497 5965 119197 237137 198760 82490 10917 4570 5353 5485 110260 202786 228218 230845 151786 122138 122266 60932 40225 303400 198356 39274 87541 77930 118408 163108 46489 52205 338689 609986 477937 64250 166906 658010 499613 145637 85005 74836 95300 132625 44228 237133 434180 200485 12337 133709 58984 45693 47417 25325 56225 49202 23341 11393 11268 11050 5498 4453 9050 7154 7225 14473 9657 5017 5200 2977 400 4293066743 2293725 262175 4294705142 196612 0 1 4294901759 131070 196610 4294836225 262143 4294836224 65538 4294836225 131070 4294836225 4294770688 196604 65538 4294901759 131071 65537 4294901761 4294901756 196611 4294901760 4294967292 65539 131071 65535 3 65536 4294901758 4 4294705153 65534 4294901761 4294901760 4294967293 65536 4294901760 4294967295 4294901761 65534 1 65535 4294901760 196605 4294901762 4294901759 196606 4294901761 4294836225 131070 1 4294770689 196606 4294770688 131069 131074 4294770688 131071 0 4294836223 196605 131073 65534 3 65535 65535 4294901761 4294901759 65536 4294967295 131072 4294967295 1 65533 65537 4294967295 196607 4294967295 65535 2 4294836224 196606 4294901762 4294967294 4294901760 196605 2 196607 4294901758 65536 4294901760 0 4294901760 1 65535 196606 2 4294901761 131071 4294901760 4294836225 4294967295 4294836225 65532 65536 65538 4294770686 131071 65538 196607 4294705152 131072 65536 4294967293 65539 0 4294836223 196605 65536 0 1 131071 4294836226 0 65535 4294967294 131073 4294770691 4294967295 65534 +421117418 2726127890 4101702227 9989637695 2589613292 464808813 646168314 1709204951 1193406951 4368908721 15543123258 4558462527 727446184 480111150 3321290976 1432573949 4334614036 1206612778 2062663595 2846829181 1697932639 1917744656 1153653438 3229768059 2571119827 2310793826 6307997684 6761925771 3750077475 2473878001 656529551 229061538 +65451 11468838 4280615122 4283105055 30080683 969970 1168164 192770 344209 1811809 1740724 586130 305045 17981 169273 103321 85277 529901 524660 116609 29653 64345 13121 273956 593748 463432 348169 77545 2117 19277 13837 85 16322 1325 69584 233930 253273 94180 8642 104245 151937 231970 90405 95849 106285 81938 76226 103337 303250 337705 75140 43874 33730 44761 117608 57322 9945 19816 48674 19465 15696 52229 103738 102541 126421 133157 33680 7738 45029 57122 61605 60138 26170 41444 210994 238338 74324 21460 33125 3940 15481 7709 24929 17714 170993 91978 45965 214133 96832 1800 16717 42341 87421 114341 65161 26260 135077 245000 122117 81188 107753 74125 86432 91460 29648 2069 3161 5002 784 1152 1424 277 452 2696 3610 2120 2617 562 1153 4610 2906 65 786450 4293722107 0 393208 2 196608 65539 65537 4294967295 65537 4294901762 65535 4294770689 65533 131073 4294901761 131071 131071 65535 4294901764 4294967295 0 4294901758 4294901761 196607 4294836224 131070 4294901762 4294901759 196608 4294901761 131071 131070 65538 0 4294901761 65536 4294836225 65536 4294836225 4294901757 65535 4294901760 196607 4294967295 0 131071 4294901762 4294836221 196608 65536 1 131074 4294770690 4294967291 196611 4294770687 262143 4294901759 131071 1 4294901759 196607 4294705153 196607 4294967294 65536 1 4294901759 65536 0 65536 65537 4294901759 65536 3 4294836222 65534 65536 65538 4294836225 4294901760 4294901761 4294967293 0 65534 131070 65537 4294901762 65536 2 4294836224 1 4294901760 0 4294967294 131073 4294901760 65535 131073 4294836224 65536 4294901760 4294901760 4294967295 4294901761 131071 4294901760 131071 4294836224 2 4294901758 4294967292 131073 0 65535 0 4294901760 4294967295 131073 4294901764 4294836223 4294967295 65535 65537 65533 3 131072 4294836224 65537 1 4294967293 196611 4294901759 1 +5645104312 3087527471 5883346002 10807122775 2465336182 853935004 1206905130 3485828019 1134726750 832725041 4442875878 2122064365 178483220 151483681 1742660113 1309124116 1954305288 1323857378 2750861165 1340947482 792522630 669257768 1659699572 940652856 1957080469 1034203505 1541805928 1710818326 2432875876 2254719438 275379184 57293224 \ No newline at end of file diff --git a/python/tflite_micro/signal/ops/testdata/stacker_test1.txt b/python/tflite_micro/signal/ops/testdata/stacker_test1.txt new file mode 100644 index 00000000000..f73e760ec9a --- /dev/null +++ b/python/tflite_micro/signal/ops/testdata/stacker_test1.txt @@ -0,0 +1,37 @@ +32 1 1 2 +12506 12432 11820 11836 11582 12103 12861 12155 9956 9487 10192 9487 9554 9418 9618 9586 10818 11671 11127 9796 10078 9554 9147 9930 8872 9345 9229 9521 10170 10743 12174 13137 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 +13525 13251 14033 13802 12731 11935 11535 11477 10318 10338 10235 10078 10544 8921 8769 9930 12320 12474 10695 9649 10454 10214 9586 9487 9229 9105 9147 9851 9586 9709 12049 12489 +12506 12432 11820 11836 11582 12103 12861 12155 9956 9487 10192 9487 9554 9418 9618 9586 10818 11671 11127 9796 10078 9554 9147 9930 8872 9345 9229 9521 10170 10743 12174 13137 12506 12432 11820 11836 11582 12103 12861 12155 9956 9487 10192 9487 9554 9418 9618 9586 10818 11671 11127 9796 10078 9554 9147 9930 8872 9345 9229 9521 10170 10743 12174 13137 13525 13251 14033 13802 12731 11935 11535 11477 10318 10338 10235 10078 10544 8921 8769 9930 12320 12474 10695 9649 10454 10214 9586 9487 9229 9105 9147 9851 9586 9709 12049 12489 +1 +16255 16129 15423 15542 15067 13721 12827 12103 10277 11234 11000 9521 9269 9061 9618 9487 9981 10170 10743 9382 9453 9554 9586 8969 8921 9418 9345 9824 9016 8540 7660 8120 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 +14978 14718 15996 16471 14834 13198 11437 11714 10727 10170 9709 10277 9487 7763 8412 10192 11234 10833 9680 10031 10078 9709 9147 9739 9521 9709 9189 9956 10192 10214 11437 11722 +13525 13251 14033 13802 12731 11935 11535 11477 10318 10338 10235 10078 10544 8921 8769 9930 12320 12474 10695 9649 10454 10214 9586 9487 9229 9105 9147 9851 9586 9709 12049 12489 16255 16129 15423 15542 15067 13721 12827 12103 10277 11234 11000 9521 9269 9061 9618 9487 9981 10170 10743 9382 9453 9554 9586 8969 8921 9418 9345 9824 9016 8540 7660 8120 14978 14718 15996 16471 14834 13198 11437 11714 10727 10170 9709 10277 9487 7763 8412 10192 11234 10833 9680 10031 10078 9709 9147 9739 9521 9709 9189 9956 10192 10214 11437 11722 +1 +7431 15310 15976 15751 14425 12331 11078 10818 11103 10743 11312 10435 10663 8344 7763 10078 10192 8769 10125 9554 9345 9189 9649 10192 9382 9418 9796 10277 10256 10630 12667 13311 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 +13645 13949 14250 13755 12722 12312 12168 11671 11234 9739 9487 10397 10214 8715 10804 13327 14423 13858 12485 11301 9269 9586 9061 8659 9618 8821 9824 9487 10055 9930 8769 4436 +14978 14718 15996 16471 14834 13198 11437 11714 10727 10170 9709 10277 9487 7763 8412 10192 11234 10833 9680 10031 10078 9709 9147 9739 9521 9709 9189 9956 10192 10214 11437 11722 7431 15310 15976 15751 14425 12331 11078 10818 11103 10743 11312 10435 10663 8344 7763 10078 10192 8769 10125 9554 9345 9189 9649 10192 9382 9418 9796 10277 10256 10630 12667 13311 13645 13949 14250 13755 12722 12312 12168 11671 11234 9739 9487 10397 10214 8715 10804 13327 14423 13858 12485 11301 9269 9586 9061 8659 9618 8821 9824 9487 10055 9930 8769 4436 +1 +13961 12810 12109 12877 13970 13178 11407 11544 10416 10562 9453 10527 9189 9061 9930 13769 14814 13232 11636 8921 9586 8715 8344 9768 9956 9904 10214 8969 9586 10078 7550 4436 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 +13370 12897 14321 14367 13313 12447 12224 12035 11222 10727 9147 9105 9487 8477 10147 9269 11052 11365 8821 9229 10031 9521 9824 9016 8769 9147 9061 8715 9680 9680 7011 3327 +13645 13949 14250 13755 12722 12312 12168 11671 11234 9739 9487 10397 10214 8715 10804 13327 14423 13858 12485 11301 9269 9586 9061 8659 9618 8821 9824 9487 10055 9930 8769 4436 13961 12810 12109 12877 13970 13178 11407 11544 10416 10562 9453 10527 9189 9061 9930 13769 14814 13232 11636 8921 9586 8715 8344 9768 9956 9904 10214 8969 9586 10078 7550 4436 13370 12897 14321 14367 13313 12447 12224 12035 11222 10727 9147 9105 9487 8477 10147 9269 11052 11365 8821 9229 10031 9521 9824 9016 8769 9147 9061 8715 9680 9680 7011 3327 +1 +12980 14116 15453 15029 10509 11164 12277 12485 11301 10102 11164 9956 9796 9904 9956 10544 10960 9680 10055 10630 8921 6441 7660 8821 9105 9229 8198 8477 7952 7763 3327 3327 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 +13123 14211 14590 11722 12620 12136 12600 12536 11187 10679 11211 9147 8412 7952 8921 5085 5902 9709 9382 8715 8412 7431 8273 8344 9768 9418 8540 9105 8412 7164 3327 3327 +13370 12897 14321 14367 13313 12447 12224 12035 11222 10727 9147 9105 9487 8477 10147 9269 11052 11365 8821 9229 10031 9521 9824 9016 8769 9147 9061 8715 9680 9680 7011 3327 12980 14116 15453 15029 10509 11164 12277 12485 11301 10102 11164 9956 9796 9904 9956 10544 10960 9680 10055 10630 8921 6441 7660 8821 9105 9229 8198 8477 7952 7763 3327 3327 13123 14211 14590 11722 12620 12136 12600 12536 11187 10679 11211 9147 8412 7952 8921 5085 5902 9709 9382 8715 8412 7431 8273 8344 9768 9418 8540 9105 8412 7164 3327 3327 +1 +13508 13882 14759 14505 13590 12676 12116 12754 11090 8477 10214 9105 8038 8659 8921 4436 6194 9418 9418 9418 8120 8198 9851 9229 9586 8659 8969 8659 8659 8344 6654 3327 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 +11772 10491 13678 14922 13327 13225 12700 12414 11014 11199 9709 8969 8477 8412 9307 5085 4436 5085 9521 9824 8120 8821 8600 9796 8344 7431 7860 6654 9382 8120 3327 3327 +13123 14211 14590 11722 12620 12136 12600 12536 11187 10679 11211 9147 8412 7952 8921 5085 5902 9709 9382 8715 8412 7431 8273 8344 9768 9418 8540 9105 8412 7164 3327 3327 13508 13882 14759 14505 13590 12676 12116 12754 11090 8477 10214 9105 8038 8659 8921 4436 6194 9418 9418 9418 8120 8198 9851 9229 9586 8659 8969 8659 8659 8344 6654 3327 11772 10491 13678 14922 13327 13225 12700 12414 11014 11199 9709 8969 8477 8412 9307 5085 4436 5085 9521 9824 8120 8821 8600 9796 8344 7431 7860 6654 9382 8120 3327 3327 +1 \ No newline at end of file diff --git a/python/tflite_micro/signal/utils/BUILD b/python/tflite_micro/signal/utils/BUILD index cc05bab6e7f..32a26fb5513 100644 --- a/python/tflite_micro/signal/utils/BUILD +++ b/python/tflite_micro/signal/utils/BUILD @@ -1,5 +1,6 @@ # Signal python utilities. load("@tflm_pip_deps//:requirements.bzl", "requirement") +load("@pybind11_bazel//:build_defs.bzl", "pybind_extension") package( default_visibility = [ @@ -8,6 +9,30 @@ package( licenses = ["notice"], ) +py_test( + name = "freq_to_mel_test", + srcs = ["freq_to_mel_test.py"], + data = [ + ":freq_to_mel_wrapper.so", + ], + python_version = "PY3", + srcs_version = "PY3", +) + +py_library( + name = "freq_to_mel", + data = [ + ":freq_to_mel_wrapper.so", + ], +) + +pybind_extension( + name = "freq_to_mel_wrapper", # :freq_to_mel_wrapper.so + srcs = [ + "freq_to_mel_wrapper.cc", + ], +) + py_library( name = "util", srcs = ["util.py"], diff --git a/python/tflite_micro/signal/utils/freq_to_mel_test.py b/python/tflite_micro/signal/utils/freq_to_mel_test.py new file mode 100644 index 00000000000..5d81ffb3ead --- /dev/null +++ b/python/tflite_micro/signal/utils/freq_to_mel_test.py @@ -0,0 +1,155 @@ +# Copyright 2023 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Tests for audio_frontend.python.utils.freq_to_mel.""" +import unittest +from tflite_micro.python.tflite_micro.signal.utils import freq_to_mel_wrapper + +# This table was generated by C the implementation of Freq2Mel() in Speech +# Micro. The purpose of this test is to catch changes in clang/GCC's C +# implementation and update our unit tests accordingly. +# The table consists of mapping of frequencies in the range 125 Hz - 3850 Hz, +# which are typically used in Mel filter banks. +truth_table = [[125.00000000000000000000, 185.16954040527343750000], + [156.25000000000000000000, 227.07028198242187500000], + [187.50000000000000000000, 267.46884155273437500000], + [218.75000000000000000000, 306.46929931640625000000], + [250.00000000000000000000, 344.16513061523437500000], + [281.25000000000000000000, 380.64077758789062500000], + [312.50000000000000000000, 415.97283935546875000000], + [343.75000000000000000000, 450.23080444335937500000], + [375.00000000000000000000, 483.47805786132812500000], + [406.25000000000000000000, 515.77252197265625000000], + [437.50000000000000000000, 547.16729736328125000000], + [468.75000000000000000000, 577.71118164062500000000], + [500.00000000000000000000, 607.44909667968750000000], + [531.25000000000000000000, 636.42242431640625000000], + [562.50000000000000000000, 664.66949462890625000000], + [593.75000000000000000000, 692.22583007812500000000], + [625.00000000000000000000, 719.12451171875000000000], + [656.25000000000000000000, 745.39605712890625000000], + [687.50000000000000000000, 771.06921386718750000000], + [718.75000000000000000000, 796.17047119140625000000], + [750.00000000000000000000, 820.72473144531250000000], + [781.25000000000000000000, 844.75561523437500000000], + [812.50000000000000000000, 868.28460693359375000000], + [843.75000000000000000000, 891.33245849609375000000], + [875.00000000000000000000, 913.91833496093750000000], + [906.25000000000000000000, 936.06048583984375000000], + [937.50000000000000000000, 957.77606201171875000000], + [968.75000000000000000000, 979.08093261718750000000], + [1000.00000000000000000000, 999.99072265625000000000], + [1031.25000000000000000000, 1020.51953125000000000000], + [1062.50000000000000000000, 1040.68103027343750000000], + [1093.75000000000000000000, 1060.48828125000000000000], + [1125.00000000000000000000, 1079.95336914062500000000], + [1156.25000000000000000000, 1099.08789062500000000000], + [1187.50000000000000000000, 1117.90295410156250000000], + [1218.75000000000000000000, 1136.40930175781250000000], + [1250.00000000000000000000, 1154.61633300781250000000], + [1281.25000000000000000000, 1172.53405761718750000000], + [1312.50000000000000000000, 1190.17138671875000000000], + [1343.75000000000000000000, 1207.53686523437500000000], + [1375.00000000000000000000, 1224.63879394531250000000], + [1406.25000000000000000000, 1241.48522949218750000000], + [1437.50000000000000000000, 1258.08349609375000000000], + [1468.75000000000000000000, 1274.44091796875000000000], + [1500.00000000000000000000, 1290.56408691406250000000], + [1531.25000000000000000000, 1306.45996093750000000000], + [1562.50000000000000000000, 1322.13476562500000000000], + [1593.75000000000000000000, 1337.59448242187500000000], + [1625.00000000000000000000, 1352.84509277343750000000], + [1656.25000000000000000000, 1367.89208984375000000000], + [1687.50000000000000000000, 1382.74084472656250000000], + [1718.75000000000000000000, 1397.39648437500000000000], + [1750.00000000000000000000, 1411.86389160156250000000], + [1781.25000000000000000000, 1426.14807128906250000000], + [1812.50000000000000000000, 1440.25317382812500000000], + [1843.75000000000000000000, 1454.18420410156250000000], + [1875.00000000000000000000, 1467.94506835937500000000], + [1906.25000000000000000000, 1481.53991699218750000000], + [1937.50000000000000000000, 1494.97265625000000000000], + [1968.75000000000000000000, 1508.24731445312500000000], + [2000.00000000000000000000, 1521.36743164062500000000], + [2031.25000000000000000000, 1534.33654785156250000000], + [2062.50000000000000000000, 1547.15795898437500000000], + [2093.75000000000000000000, 1559.83532714843750000000], + [2125.00000000000000000000, 1572.37158203125000000000], + [2156.25000000000000000000, 1584.77001953125000000000], + [2187.50000000000000000000, 1597.03332519531250000000], + [2218.75000000000000000000, 1609.16491699218750000000], + [2250.00000000000000000000, 1621.16711425781250000000], + [2281.25000000000000000000, 1633.04284667968750000000], + [2312.50000000000000000000, 1644.79479980468750000000], + [2343.75000000000000000000, 1656.42553710937500000000], + [2375.00000000000000000000, 1667.93725585937500000000], + [2406.25000000000000000000, 1679.33276367187500000000], + [2437.50000000000000000000, 1690.61401367187500000000], + [2468.75000000000000000000, 1701.78369140625000000000], + [2500.00000000000000000000, 1712.84350585937500000000], + [2531.25000000000000000000, 1723.79614257812500000000], + [2562.50000000000000000000, 1734.64318847656250000000], + [2593.75000000000000000000, 1745.38671875000000000000], + [2625.00000000000000000000, 1756.02893066406250000000], + [2656.25000000000000000000, 1766.57165527343750000000], + [2687.50000000000000000000, 1777.01647949218750000000], + [2718.75000000000000000000, 1787.36547851562500000000], + [2750.00000000000000000000, 1797.62036132812500000000], + [2781.25000000000000000000, 1807.78283691406250000000], + [2781.25000000000000000000, 1807.78283691406250000000], + [2812.50000000000000000000, 1817.85437011718750000000], + [2843.75000000000000000000, 1827.83666992187500000000], + [2875.00000000000000000000, 1837.73144531250000000000], + [2906.25000000000000000000, 1847.54003906250000000000], + [2937.50000000000000000000, 1857.26403808593750000000], + [2968.75000000000000000000, 1866.90466308593750000000], + [3000.00000000000000000000, 1876.46374511718750000000], + [3031.25000000000000000000, 1885.94238281250000000000], + [3062.50000000000000000000, 1895.34204101562500000000], + [3093.75000000000000000000, 1904.66369628906250000000], + [3125.00000000000000000000, 1913.90905761718750000000], + [3156.25000000000000000000, 1923.07922363281250000000], + [3187.50000000000000000000, 1932.17517089843750000000], + [3218.75000000000000000000, 1941.19848632812500000000], + [3250.00000000000000000000, 1950.15014648437500000000], + [3281.25000000000000000000, 1959.03112792968750000000], + [3312.50000000000000000000, 1967.84277343750000000000], + [3343.75000000000000000000, 1976.58605957031250000000], + [3375.00000000000000000000, 1985.26196289062500000000], + [3406.25000000000000000000, 1993.87158203125000000000], + [3437.50000000000000000000, 2002.41601562500000000000], + [3468.75000000000000000000, 2010.89611816406250000000], + [3500.00000000000000000000, 2019.31298828125000000000], + [3531.25000000000000000000, 2027.66723632812500000000], + [3562.50000000000000000000, 2035.96020507812500000000], + [3593.75000000000000000000, 2044.19250488281250000000], + [3625.00000000000000000000, 2052.36523437500000000000], + [3656.25000000000000000000, 2060.47900390625000000000], + [3687.50000000000000000000, 2068.53466796875000000000], + [3718.75000000000000000000, 2076.53344726562500000000], + [3750.00000000000000000000, 2084.47558593750000000000], + [3781.25000000000000000000, 2092.36230468750000000000], + [3812.50000000000000000000, 2100.19409179687500000000]] + + +class Freq2MelTest(unittest.TestCase): + + def testFreq2Mel(self): + for entry in truth_table: + mel = freq_to_mel_wrapper.freq_to_mel(entry[0]) + self.assertLess(abs(mel - float(entry[1])), 0.00025) + + +if __name__ == '__main__': + unittest.main() diff --git a/python/tflite_micro/signal/utils/freq_to_mel_wrapper.cc b/python/tflite_micro/signal/utils/freq_to_mel_wrapper.cc new file mode 100644 index 00000000000..6a78508d488 --- /dev/null +++ b/python/tflite_micro/signal/utils/freq_to_mel_wrapper.cc @@ -0,0 +1,42 @@ +/* Copyright 2023 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include +#include +#include + +namespace py = pybind11; + +namespace tflite { + +// Convert a `freq` in Hz to its value on the Mel scale. +// See: https://en.wikipedia.org/wiki/Mel_scale +// This function is only intended to be used wrapped as the python freq_to_mel +// Why can't we just implement it in Python/numpy? +// The original "Speech Micro" code is written in C and uses 32-bit 'float' +// C types. Python's builtin floating point type is 64-bit wide, which results +// in small differences in the output of the Python and C log() functions. +// A Py wrapper is used in order to establish bit exactness with "Speech Micro", +// while recognizing the slight loss in precision. +float FreqToMel(float freq) { return 1127.0f * log1pf(freq / 700.0f); } + +} // namespace tflite + +PYBIND11_MODULE(freq_to_mel_wrapper, m) { + m.doc() = "freq_to_mel_wrapper"; + m.def("freq_to_mel", &tflite::FreqToMel, + "Convert a `freq` in Hz to its value on the Mel scale.", + py::arg("freq")); +} diff --git a/signal/tensorflow_core/kernels/BUILD b/signal/tensorflow_core/kernels/BUILD index a626b5d3d68..3b7d1bedab4 100644 --- a/signal/tensorflow_core/kernels/BUILD +++ b/signal/tensorflow_core/kernels/BUILD @@ -35,6 +35,18 @@ tflm_signal_kernel_library( ], ) +tflm_signal_kernel_library( + name = "filter_bank_kernels", + srcs = ["filter_bank_kernels.cc"], + deps = [ + "//signal/src:filter_bank", + "//signal/src:filter_bank_log", + "//signal/src:filter_bank_spectral_subtraction", + "//signal/src:filter_bank_square_root", + "@tensorflow_cc_deps//:cc_library", + ], +) + tflm_signal_kernel_library( name = "framer_kernel", srcs = ["framer_kernel.cc"], @@ -53,6 +65,15 @@ tflm_signal_kernel_library( ], ) +tflm_signal_kernel_library( + name = "stacker_kernel", + srcs = ["stacker_kernel.cc"], + deps = [ + "//signal/src:circular_buffer", + "@tensorflow_cc_deps//:cc_library", + ], +) + tflm_signal_kernel_library( name = "window_kernel", srcs = ["window_kernel.cc"], diff --git a/signal/tensorflow_core/kernels/filter_bank_kernels.cc b/signal/tensorflow_core/kernels/filter_bank_kernels.cc new file mode 100644 index 00000000000..24a71493762 --- /dev/null +++ b/signal/tensorflow_core/kernels/filter_bank_kernels.cc @@ -0,0 +1,182 @@ +/* Copyright 2023 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "signal/src/filter_bank.h" +#include "signal/src/filter_bank_log.h" +#include "signal/src/filter_bank_spectral_subtraction.h" +#include "signal/src/filter_bank_square_root.h" +#include "tensorflow/core/framework/op_kernel.h" + +namespace tensorflow { +namespace signal { + +class FilterBankOp : public tensorflow::OpKernel { + public: + explicit FilterBankOp(tensorflow::OpKernelConstruction* context) + : tensorflow::OpKernel(context) { + int32_t num_channels; + OP_REQUIRES_OK(context, context->GetAttr("num_channels", &num_channels)); + OP_REQUIRES_OK(context, context->allocate_temp( + DT_UINT64, TensorShape({num_channels + 1}), + &work_area_tensor_)); + work_area_ = work_area_tensor_.flat().data(); + config_.num_channels = num_channels; + } + + void Compute(tensorflow::OpKernelContext* context) override { + const tensorflow::Tensor& input_tensor = context->input(0); + const uint32_t* input = input_tensor.flat().data(); + + config_.weights = context->input(1).flat().data(); + config_.unweights = context->input(2).flat().data(); + config_.channel_frequency_starts = context->input(3).flat().data(); + config_.channel_weight_starts = context->input(4).flat().data(); + config_.channel_widths = context->input(5).flat().data(); + + tensorflow::Tensor* output_tensor = nullptr; + OP_REQUIRES_OK(context, context->allocate_output(0, {config_.num_channels}, + &output_tensor)); + tflite::tflm_signal::FilterbankAccumulateChannels(&config_, input, + work_area_); + + uint64_t* output = output_tensor->flat().data(); + // Discard channel 0, which is just scratch + memcpy(output, work_area_ + 1, sizeof(*output) * config_.num_channels); + } + + private: + tflite::tflm_signal::FilterbankConfig config_; + uint64_t* work_area_; + Tensor work_area_tensor_; +}; + +class FilterBankSquareRootOp : public tensorflow::OpKernel { + public: + explicit FilterBankSquareRootOp(tensorflow::OpKernelConstruction* context) + : tensorflow::OpKernel(context) {} + + void Compute(tensorflow::OpKernelContext* context) override { + const uint64_t* input = context->input(0).flat().data(); + int32_t scale_bits = context->input(1).scalar()(); + int32_t num_channels = context->input(0).NumElements(); + + tensorflow::Tensor* output_tensor = nullptr; + OP_REQUIRES_OK(context, + context->allocate_output(0, {num_channels}, &output_tensor)); + uint32_t* output = output_tensor->flat().data(); + tflite::tflm_signal::FilterbankSqrt(input, num_channels, scale_bits, + output); + } + + private: +}; + +class FilterBankSpectralSubtractionOp : public tensorflow::OpKernel { + public: + explicit FilterBankSpectralSubtractionOp( + tensorflow::OpKernelConstruction* context) + : tensorflow::OpKernel(context) { + int attr_int; + bool attr_bool; + OP_REQUIRES_OK(context, context->GetAttr("smoothing", &attr_int)); + config_.smoothing = attr_int; + OP_REQUIRES_OK(context, context->GetAttr("one_minus_smoothing", &attr_int)); + config_.one_minus_smoothing = attr_int; + OP_REQUIRES_OK(context, context->GetAttr("alternate_smoothing", &attr_int)); + config_.alternate_smoothing = attr_int; + OP_REQUIRES_OK( + context, context->GetAttr("alternate_one_minus_smoothing", &attr_int)); + config_.alternate_one_minus_smoothing = attr_int; + OP_REQUIRES_OK(context, context->GetAttr("smoothing_bits", &attr_int)); + config_.smoothing_bits = attr_int; + OP_REQUIRES_OK(context, + context->GetAttr("min_signal_remaining", &attr_int)); + config_.min_signal_remaining = attr_int; + OP_REQUIRES_OK(context, context->GetAttr("clamping", &attr_bool)); + config_.clamping = attr_bool; + OP_REQUIRES_OK(context, context->GetAttr("num_channels", &attr_int)); + config_.num_channels = attr_int; + OP_REQUIRES_OK(context, + context->GetAttr("spectral_subtraction_bits", &attr_int)); + config_.spectral_subtraction_bits = attr_int; + OP_REQUIRES_OK(context, context->allocate_temp( + DT_UINT32, TensorShape({config_.num_channels}), + &noise_estimate_tensor_)); + noise_estimate_ = (uint32_t*)noise_estimate_tensor_.flat().data(); + memset(noise_estimate_, 0, sizeof(uint32_t) * config_.num_channels); + } + + void Compute(tensorflow::OpKernelContext* context) override { + tensorflow::Tensor* output_tensor = nullptr; + const uint32_t* input = context->input(0).flat().data(); + OP_REQUIRES_OK(context, context->allocate_output(0, {config_.num_channels}, + &output_tensor)); + uint32_t* output = output_tensor->flat().data(); + OP_REQUIRES_OK(context, context->allocate_output(1, {config_.num_channels}, + &output_tensor)); + uint32_t* noise_estimate = output_tensor->flat().data(); + + tflite::tflm_signal::FilterbankSpectralSubtraction(&config_, input, output, + noise_estimate_); + memcpy(noise_estimate, noise_estimate_, + sizeof(*noise_estimate) * config_.num_channels); + } + + private: + Tensor noise_estimate_tensor_; + tflite::tflm_signal::SpectralSubtractionConfig config_; + uint32_t* noise_estimate_; +}; + +class FilterBankLogOp : public tensorflow::OpKernel { + public: + explicit FilterBankLogOp(tensorflow::OpKernelConstruction* context) + : tensorflow::OpKernel(context) { + OP_REQUIRES_OK(context, context->GetAttr("output_scale", &output_scale_)); + OP_REQUIRES_OK(context, context->GetAttr("input_correction_bits", + &input_correction_bits_)); + } + + void Compute(tensorflow::OpKernelContext* context) override { + const uint32_t* input = context->input(0).flat().data(); + int num_channels = context->input(0).NumElements(); + tensorflow::Tensor* output_tensor = nullptr; + OP_REQUIRES_OK(context, + context->allocate_output(0, {num_channels}, &output_tensor)); + int16_t* output = output_tensor->flat().data(); + tflite::tflm_signal::FilterbankLog(input, num_channels, output_scale_, + input_correction_bits_, output); + } + + private: + int output_scale_; + int input_correction_bits_; +}; + +// TODO(b/286250473): change back name after name clash resolved +REGISTER_KERNEL_BUILDER(Name("SignalFilterBank").Device(tensorflow::DEVICE_CPU), + FilterBankOp); +REGISTER_KERNEL_BUILDER( + Name("SignalFilterBankSquareRoot").Device(tensorflow::DEVICE_CPU), + FilterBankSquareRootOp); +REGISTER_KERNEL_BUILDER( + Name("SignalFilterBankSpectralSubtraction").Device(tensorflow::DEVICE_CPU), + FilterBankSpectralSubtractionOp); +REGISTER_KERNEL_BUILDER( + Name("SignalFilterBankLog").Device(tensorflow::DEVICE_CPU), + FilterBankLogOp); + +} // namespace signal +} // namespace tensorflow diff --git a/signal/tensorflow_core/kernels/stacker_kernel.cc b/signal/tensorflow_core/kernels/stacker_kernel.cc new file mode 100644 index 00000000000..3e1a3893a21 --- /dev/null +++ b/signal/tensorflow_core/kernels/stacker_kernel.cc @@ -0,0 +1,100 @@ +/* Copyright 2023 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "signal/src/circular_buffer.h" +#include "tensorflow/core/framework/op_kernel.h" + +namespace tensorflow { +namespace signal { + +class StackerOp : public tensorflow::OpKernel { + public: + explicit StackerOp(tensorflow::OpKernelConstruction* context) + : tensorflow::OpKernel(context) { + OP_REQUIRES_OK(context, context->GetAttr("num_channels", &num_channels_)); + OP_REQUIRES_OK(context, context->GetAttr("stacker_left_context", + &stacker_left_context_)); + OP_REQUIRES_OK(context, context->GetAttr("stacker_right_context", + &stacker_right_context_)); + OP_REQUIRES_OK(context, context->GetAttr("stacker_step", &stacker_step_)); + buffer_size_ = + num_channels_ * (stacker_left_context_ + stacker_right_context_ + 1); + step_size_ = num_channels_ * stacker_step_; + stacker_has_first_frame_ = false; + + size_t state_size = + tflite::tflm_signal::CircularBufferGetNeededMemory(buffer_size_); + OP_REQUIRES_OK(context, + context->allocate_temp( + DT_INT8, TensorShape({static_cast(state_size)}), + &state_tensor_)); + state_ = state_tensor_.flat().data(); + circular_buffer = tflite::tflm_signal::CircularBufferInit( + buffer_size_, state_, state_size); + } + + void Compute(tensorflow::OpKernelContext* context) override { + const tensorflow::Tensor& input_tensor = context->input(0); + const int16_t* input = input_tensor.flat().data(); + + tflite::tflm_signal::CircularBufferWrite(circular_buffer, input, + num_channels_); + + // The first frame is replicated an extra left_context times to pad. + if (stacker_has_first_frame_ == false) { + tflite::tflm_signal::CircularBufferExtend(circular_buffer, num_channels_, + stacker_left_context_); + stacker_has_first_frame_ = true; + } + + tensorflow::Tensor* output_tensor = nullptr; + tensorflow::Tensor* output_valid_tensor = nullptr; + + OP_REQUIRES_OK( + context, context->allocate_output( + 0, {static_cast(buffer_size_)}, &output_tensor)); + OP_REQUIRES_OK(context, + context->allocate_output(1, {}, &output_valid_tensor)); + + if (tflite::tflm_signal::CircularBufferAvailable(circular_buffer) >= + buffer_size_) { + tflite::tflm_signal::CircularBufferGet( + circular_buffer, buffer_size_, output_tensor->flat().data()); + tflite::tflm_signal::CircularBufferDiscard(circular_buffer, step_size_); + *output_valid_tensor->flat().data() = true; + } else { + *output_valid_tensor->flat().data() = false; + } + } + + private: + int num_channels_; + int stacker_left_context_; + int stacker_right_context_; + int stacker_step_; + size_t buffer_size_; + size_t step_size_; + bool stacker_has_first_frame_; + + int8_t* state_; + Tensor state_tensor_; + tflite::tflm_signal::CircularBuffer* circular_buffer; +}; + +REGISTER_KERNEL_BUILDER(Name("SignalStacker").Device(tensorflow::DEVICE_CPU), + StackerOp); + +} // namespace signal +} // namespace tensorflow diff --git a/signal/tensorflow_core/ops/BUILD b/signal/tensorflow_core/ops/BUILD index 2c5803b034e..185c593bd76 100644 --- a/signal/tensorflow_core/ops/BUILD +++ b/signal/tensorflow_core/ops/BUILD @@ -29,6 +29,14 @@ tflm_signal_kernel_library( ], ) +tflm_signal_kernel_library( + name = "filter_bank_ops", + srcs = ["filter_bank_ops.cc"], + deps = [ + "@tensorflow_cc_deps//:cc_library", + ], +) + tflm_signal_kernel_library( name = "framer_op", srcs = ["framer_op.cc"], @@ -45,6 +53,14 @@ tflm_signal_kernel_library( ], ) +tflm_signal_kernel_library( + name = "stacker_op", + srcs = ["stacker_op.cc"], + deps = [ + "@tensorflow_cc_deps//:cc_library", + ], +) + tflm_signal_kernel_library( name = "window_op", srcs = ["window_op.cc"], diff --git a/signal/tensorflow_core/ops/filter_bank_ops.cc b/signal/tensorflow_core/ops/filter_bank_ops.cc new file mode 100644 index 00000000000..de167154af6 --- /dev/null +++ b/signal/tensorflow_core/ops/filter_bank_ops.cc @@ -0,0 +1,171 @@ +/* Copyright 2023 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "tensorflow/core/framework/op.h" +#include "tensorflow/core/framework/shape_inference.h" + +using tensorflow::shape_inference::InferenceContext; +using tensorflow::shape_inference::ShapeHandle; + +namespace tensorflow { +namespace signal { + +Status FilterBankShape(InferenceContext* c) { + ShapeHandle out; + shape_inference::DimensionHandle unused; + int num_channels; + TF_RETURN_IF_ERROR(c->GetAttr("num_channels", &num_channels)); + + TF_RETURN_IF_ERROR(c->WithRank(c->input(0), 1, &out)); + + // Inputs 1,2 must have the same shape + TF_RETURN_IF_ERROR(c->WithRank(c->input(1), 1, &out)); + auto num_weights = InferenceContext::Value(c->Dim(out, 0)); + + TF_RETURN_IF_ERROR(c->WithRank(c->input(2), 1, &out)); + TF_RETURN_IF_ERROR( + c->WithValue(c->Dim(c->input(2), 0), num_weights, &unused)); + // Inputs 3,4,5 must have the same shape + TF_RETURN_IF_ERROR(c->WithRank(c->input(3), 1, &out)); + TF_RETURN_IF_ERROR( + c->WithValue(c->Dim(c->input(3), 0), num_channels + 1, &unused)); + TF_RETURN_IF_ERROR(c->WithRank(c->input(4), 1, &out)); + TF_RETURN_IF_ERROR( + c->WithValue(c->Dim(c->input(4), 0), num_channels + 1, &unused)); + TF_RETURN_IF_ERROR(c->WithRank(c->input(5), 1, &out)); + TF_RETURN_IF_ERROR( + c->WithValue(c->Dim(c->input(5), 0), num_channels + 1, &unused)); + TF_RETURN_IF_ERROR(c->ReplaceDim(out, 0, c->MakeDim(num_channels), &out)); + c->set_output(0, out); + return OkStatus(); +} + +// TODO(b/286250473): change back name after name clash resolved +REGISTER_OP("SignalFilterBank") + .Attr("num_channels: int >= 0") + .Input("input: uint32") + .Input("weights: int16") + .Input("unweights: int16") + .Input("channel_frequency_starts: int16") + .Input("channel_weight_starts: int16") + .Input("channel_widths: int16") + .Output("output: uint64") + .SetShapeFn([](InferenceContext* c) { return FilterBankShape(c); }) + .Doc(R"doc( +Applies a mel filter bank of size num_channels to an input spectral energy array +See filter_bank_ops.py for how weights, unweights, channel_frequency_start, +channel_weight_start, channel_widths are pre-calculated. + +input: A 1-D spectral energy array. +weights: A 1-D filter weight array of num_channels + 1 elements. +unweights: A 1-D filter unweights array of num_channels + 1 elements. +channel_frequency_starts: A 1-D array of size num_channels + 1 elements. + Start index in input for each channel. +channel_weight_starts: A 1-D array of size num_channels + 1 elements. + Start index in (un)weights array for each channel. +channel_widths: A 1-D array of num_channels + 1 elements. + Number of bins for each channels. +output: A 1-D array of num_channels elements. Each elements + contains the output of a single channel/filter in the bank. + +num_channels: Number of channels in filter bank +)doc"); + +// TODO(b/286250473): change back name after name clash resolved +REGISTER_OP("SignalFilterBankSquareRoot") + .Input("input: uint64") + .Input("scale_bits: int32") + .Output("output: uint32") + .SetShapeFn([](InferenceContext* c) { + ShapeHandle out; + TF_RETURN_IF_ERROR(c->WithRank(c->input(0), 1, &out)); + c->set_output(0, out); + return OkStatus(); + }) + .Doc(R"doc( +Applies a square root to each element in the input then shift right by +scale_bits before writing the result to output + +input: A 1-D array of filter bank channels. +scale_bits: A scaler. Number of bits to shift right +output: A 1-D array of num_channels elements. +)doc"); + +// TODO(b/286250473): change back name after name clash resolved +REGISTER_OP("SignalFilterBankSpectralSubtraction") + .Attr("num_channels: int >= 0") + .Attr("smoothing: int >= 0") + .Attr("one_minus_smoothing: int >= 0") + .Attr("alternate_smoothing: int >= 0") + .Attr("alternate_one_minus_smoothing: int >= 0") + .Attr("smoothing_bits: int >= 0") + .Attr("min_signal_remaining: int >= 0") + .Attr("clamping: bool") + .Attr("spectral_subtraction_bits: int") + .Input("input: uint32") + .Output("output: uint32") + .Output("noise_estimate: uint32") + .SetShapeFn([](InferenceContext* c) { + ShapeHandle out; + TF_RETURN_IF_ERROR(c->WithRank(c->input(0), 1, &out)); + c->set_output(0, out); + c->set_output(1, out); + return OkStatus(); + }) + .Doc(R"doc( +Applies spectral subtraction to a filter bank output of size num_channels +Outputs the clean filter bank channels and the noise estimate for each channel. + +input: A 1-D array of filter bank channels +output: A 1-D array of clean filter bank channels +noise_estimate: A 1-D array per-channel noise estimate + +num_channels: Number of filter bank channels in input, output, noise_estimate +smoothing: Smoothing constant for noise LPF +one_minus_smoothing: (1 - smoothing) for noise LPF +min_signal_remaining: minimum amount of signal after subtraction +alternate_smoothing: if positive, noise LPF for odd-index channels, else ignored +alternate_one_minus_smoothing: (1 - alernate_smoothing), if in use +smoothing_bits: extra fractional bits for the noise_estimate smoothing filter +spectral_subtraction_bits: scaling bits for smoothing and min_signal_remaining +)doc"); + +// TODO(b/286250473): change back name after name clash resolved +REGISTER_OP("SignalFilterBankLog") + .Attr("output_scale: int >= 1") + .Attr("input_correction_bits: int >= 0") + .Input("input: uint32") + .Output("output: int16") + .SetShapeFn([](InferenceContext* c) { + ShapeHandle out; + TF_RETURN_IF_ERROR(c->WithRank(c->input(0), 1, &out)); + c->set_output(0, out); + return OkStatus(); + }) + .Doc(R"doc( +Applies natural log to each element in input with pre-shift and post scaling. +The operation is roughly equivalent to: +output = min(Log(input << input_correction_bits) * output_scale, int16max) + If (input << input_correction_bits) is 1 or 0, the function returns 0 + +input: A 1-D array of filter bank channels. +output: A 1-D array of filter bank channels. + +output_scale: A scaler. +input_correction_bits: A scalar +)doc"); + +} // namespace signal +} // namespace tensorflow diff --git a/signal/tensorflow_core/ops/stacker_op.cc b/signal/tensorflow_core/ops/stacker_op.cc new file mode 100644 index 00000000000..2aa69c08bbc --- /dev/null +++ b/signal/tensorflow_core/ops/stacker_op.cc @@ -0,0 +1,91 @@ +/* Copyright 2023 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "tensorflow/core/framework/op.h" +#include "tensorflow/core/framework/shape_inference.h" + +using tensorflow::shape_inference::InferenceContext; +using tensorflow::shape_inference::ShapeHandle; + +namespace tensorflow { +namespace signal { + +Status StackerShape(InferenceContext* c) { + int num_channels, stacker_left_context, stacker_right_context; + TF_RETURN_IF_ERROR(c->GetAttr("num_channels", &num_channels)); + TF_RETURN_IF_ERROR( + c->GetAttr("stacker_left_context", &stacker_left_context)); + TF_RETURN_IF_ERROR( + c->GetAttr("stacker_right_context", &stacker_right_context)); + + int output_frames = stacker_left_context + 1 + stacker_right_context; + + ShapeHandle out; + shape_inference::DimensionHandle dim_in; + TF_RETURN_IF_ERROR(c->WithRank(c->input(0), 1, &out)); + TF_RETURN_IF_ERROR( + c->WithValue(c->Dim(c->input(0), 0), num_channels, &dim_in)); + TF_RETURN_IF_ERROR( + c->ReplaceDim(out, 0, c->MakeDim(num_channels * output_frames), &out)); + c->set_output(0, out); + c->set_output(1, c->Scalar()); + return OkStatus(); +} + +// TODO(b/286250473): change back name after name clash resolved +REGISTER_OP("SignalStacker") + .Attr("num_channels: int >= 1") + .Attr("stacker_left_context: int >= 0") + .Attr("stacker_right_context: int >= 0") + .Attr("stacker_step: int >= 1") + .Input("input: int16") + .Output("output: int16") + .Output("output_valid: bool") + .SetShapeFn([](InferenceContext* c) { return StackerShape(c); }) + .Doc(R"doc( +Stack several input frames into a single stacked frame. On each invocation, it +generates a stacked frame that contains: +(stacker_left_context + 1 + stacker_right_context) +consecutive unstacked frames. The stacked frame which becomes the input to the +neural network. The stacker then moves forward in a step of one or more input +frames. +For example, assuming a squence of 10 input frames, where each input frame +is itself a vector of size num_channels: +[1 2 3 4 5 6 7 8 9 0], and the current frame is 9, the following configuration: +stacker_left_context=0 +stacker_right_context=1 +stacker_step=2 +will produce 5 stacked frames: +[1,2] [3,4] [5,6] [7,8] [9,0]. + +input: A 1-D input frame of size num_channels +output: A 1-D output frame of size + (stacker_left_context + 1 + stacker_right_context) * num_channels +output_valid: A boolean scalar. + If true, the output is a valid output frame + If false, the output is an invalid output frame of all zeros + Once the stacker produces its first output frame, its output will + be valid every stacker_step input frames. +num_channels: the number of filter bank channels in each stacker input frame +stacker_left_context: The number of input frames to the left of the current + frame to include in the output frame. +stacker_right_context: The number of input frames to the right of the current + frame to include in the output frame. +stacker_step: The number of input frames to increment the stacker's 'current' + frame on each invocation. +)doc"); + +} // namespace signal +} // namespace tensorflow diff --git a/tensorflow/lite/micro/micro_mutable_op_resolver.h b/tensorflow/lite/micro/micro_mutable_op_resolver.h index 5e4bd47448e..ae2754b4187 100644 --- a/tensorflow/lite/micro/micro_mutable_op_resolver.h +++ b/tensorflow/lite/micro/micro_mutable_op_resolver.h @@ -285,7 +285,7 @@ class MicroMutableOpResolver : public MicroOpResolver { // TODO(b/286250473): change back name to "FilterBankSpectralSubtraction" // and remove namespace return AddCustom( - "SignalAddFilterBankSpectralSubtraction", + "SignalFilterBankSpectralSubtraction", tflite::tflm_signal::Register_FILTER_BANK_SPECTRAL_SUBTRACTION()); }