import collections
# Define the six tables provided in the puzzle
all_tables = [
# Table 1
[
[ 1, 0, 0, 56, 0, 29, 44, 0], [31, 0, 0, 42, 0, 3, 54, 0],
[ 0, 8, 49, 0, 28, 0, 0, 45], [ 0, 26, 47, 0, 6, 0, 0, 51],
[ 0, 37, 20, 0, 57, 0, 0, 16], [ 0, 59, 14, 0, 39, 0, 0, 18],
[36, 0, 0, 21, 0, 64, 9, 0], [62, 0, 0, 11, 0, 34, 23, 0]
],
# Table 2
[
[49, 15, 0, 0, 20, 46, 0, 0], [ 0, 0, 2, 64, 0, 0, 35, 29],
[ 0, 0, 39, 25, 0, 0, 6, 60], [24, 42, 0, 0, 53, 11, 0, 0],
[45, 19, 0, 0, 16, 50, 0, 0], [ 0, 0, 30, 36, 0, 0, 63, 1],
[ 0, 0, 59, 5, 0, 0, 26, 40], [12, 54, 0, 0, 41, 23, 0, 0]
],
# Table 3
[
[10, 0, 47, 0, 0, 50, 0, 23], [ 0, 32, 0, 57, 40, 0, 1, 0],
[54, 0, 19, 0, 0, 14, 0, 43], [ 0, 36, 0, 5, 28, 0, 61, 0],
[15, 0, 42, 0, 0, 55, 0, 18], [ 0, 25, 0, 64, 33, 0, 8, 0],
[51, 0, 22, 0, 0, 11, 0, 46], [ 0, 37, 0, 4, 29, 0, 60, 0]
],
# Table 4
[
[ 1, 32, 0, 0, 0, 0, 49, 48], [56, 41, 0, 0, 0, 0, 8, 25],
[ 0, 0, 4, 29, 52, 45, 0, 0], [ 0, 0, 53, 44, 5, 28, 0, 0],
[16, 17, 0, 0, 0, 0, 64, 33], [57, 40, 0, 0, 0, 0, 9, 24],
[ 0, 0, 13, 20, 61, 36, 0, 0], [ 0, 0, 60, 37, 12, 21, 0, 0]
],
# Table 5
[
[ 7, 0, 61, 0, 34, 0, 28, 0], [ 0, 1, 0, 59, 0, 40, 0, 30],
[42, 0, 20, 0, 15, 0, 53, 0], [ 0, 48, 0, 22, 0, 9, 0, 51],
[ 0, 25, 0, 35, 0, 64, 0, 6], [31, 0, 37, 0, 58, 0, 4, 0],
[ 0, 56, 0, 14, 0, 17, 0, 43], [50, 0, 12, 0, 23, 0, 45, 0]
],
# Table 6
[
[16, 0, 0, 37, 20, 0, 0, 57], [51, 0, 0, 26, 47, 0, 0, 6],
[13, 0, 0, 40, 17, 0, 0, 60], [50, 0, 0, 27, 46, 0, 0, 7],
[ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0]
]
]
# Create a Counter object to store frequencies.
# We initialize it with all numbers from 1 to 64 having a count of 0.
frequencies = collections.Counter({number: 0 for number in range(1, 65)})
# Flatten the list of tables into a single list of numbers
all_numbers = [number for table in all_tables for row in table for number in row]
# Update the counter with the numbers from the tables (zeros are ignored).
frequencies.update(num for num in all_numbers if num != 0)
# --- Display the results ---
print("📊 Frequency of Numbers (1-64) Across All Six Tables\n")
# Print a formatted table header
print(f"{'Number':<10} | {'Frequency':<10}")
print("-" * 24)
# Print each number and its corresponding frequency
for number in range(1, 65):
count = frequencies[number]
print(f"{number:<10} | {count:<10}")
aW1wb3J0IGNvbGxlY3Rpb25zCgojIERlZmluZSB0aGUgc2l4IHRhYmxlcyBwcm92aWRlZCBpbiB0aGUgcHV6emxlCmFsbF90YWJsZXMgPSBbCiAgICAjIFRhYmxlIDEKICAgIFsKICAgICAgICBbIDEsICAwLCAgMCwgNTYsICAwLCAyOSwgNDQsICAwXSwgWzMxLCAgMCwgIDAsIDQyLCAgMCwgIDMsIDU0LCAgMF0sCiAgICAgICAgWyAwLCAgOCwgNDksICAwLCAyOCwgIDAsICAwLCA0NV0sIFsgMCwgMjYsIDQ3LCAgMCwgIDYsICAwLCAgMCwgNTFdLAogICAgICAgIFsgMCwgMzcsIDIwLCAgMCwgNTcsICAwLCAgMCwgMTZdLCBbIDAsIDU5LCAxNCwgIDAsIDM5LCAgMCwgIDAsIDE4XSwKICAgICAgICBbMzYsICAwLCAgMCwgMjEsICAwLCA2NCwgIDksICAwXSwgWzYyLCAgMCwgIDAsIDExLCAgMCwgMzQsIDIzLCAgMF0KICAgIF0sCiAgICAjIFRhYmxlIDIKICAgIFsKICAgICAgICBbNDksIDE1LCAgMCwgIDAsIDIwLCA0NiwgIDAsICAwXSwgWyAwLCAgMCwgIDIsIDY0LCAgMCwgIDAsIDM1LCAyOV0sCiAgICAgICAgWyAwLCAgMCwgMzksIDI1LCAgMCwgIDAsICA2LCA2MF0sIFsyNCwgNDIsICAwLCAgMCwgNTMsIDExLCAgMCwgIDBdLAogICAgICAgIFs0NSwgMTksICAwLCAgMCwgMTYsIDUwLCAgMCwgIDBdLCBbIDAsICAwLCAzMCwgMzYsICAwLCAgMCwgNjMsICAxXSwKICAgICAgICBbIDAsICAwLCA1OSwgIDUsICAwLCAgMCwgMjYsIDQwXSwgWzEyLCA1NCwgIDAsICAwLCA0MSwgMjMsICAwLCAgMF0KICAgIF0sCiAgICAjIFRhYmxlIDMKICAgIFsKICAgICAgICBbMTAsICAwLCA0NywgIDAsICAwLCA1MCwgIDAsIDIzXSwgWyAwLCAzMiwgIDAsIDU3LCA0MCwgIDAsICAxLCAgMF0sCiAgICAgICAgWzU0LCAgMCwgMTksICAwLCAgMCwgMTQsICAwLCA0M10sIFsgMCwgMzYsICAwLCAgNSwgMjgsICAwLCA2MSwgIDBdLAogICAgICAgIFsxNSwgIDAsIDQyLCAgMCwgIDAsIDU1LCAgMCwgMThdLCBbIDAsIDI1LCAgMCwgNjQsIDMzLCAgMCwgIDgsICAwXSwKICAgICAgICBbNTEsICAwLCAyMiwgIDAsICAwLCAxMSwgIDAsIDQ2XSwgWyAwLCAzNywgIDAsICA0LCAyOSwgIDAsIDYwLCAgMF0KICAgIF0sCiAgICAjIFRhYmxlIDQKICAgIFsKICAgICAgICBbIDEsIDMyLCAgMCwgIDAsICAwLCAgMCwgNDksIDQ4XSwgWzU2LCA0MSwgIDAsICAwLCAgMCwgIDAsICA4LCAyNV0sCiAgICAgICAgWyAwLCAgMCwgIDQsIDI5LCA1MiwgNDUsICAwLCAgMF0sIFsgMCwgIDAsIDUzLCA0NCwgIDUsIDI4LCAgMCwgIDBdLAogICAgICAgIFsxNiwgMTcsICAwLCAgMCwgIDAsICAwLCA2NCwgMzNdLCBbNTcsIDQwLCAgMCwgIDAsICAwLCAgMCwgIDksIDI0XSwKICAgICAgICBbIDAsICAwLCAxMywgMjAsIDYxLCAzNiwgIDAsICAwXSwgWyAwLCAgMCwgNjAsIDM3LCAxMiwgMjEsICAwLCAgMF0KICAgIF0sCiAgICAjIFRhYmxlIDUKICAgIFsKICAgICAgICBbIDcsICAwLCA2MSwgIDAsIDM0LCAgMCwgMjgsICAwXSwgWyAwLCAgMSwgIDAsIDU5LCAgMCwgNDAsICAwLCAzMF0sCiAgICAgICAgWzQyLCAgMCwgMjAsICAwLCAxNSwgIDAsIDUzLCAgMF0sIFsgMCwgNDgsICAwLCAyMiwgIDAsICA5LCAgMCwgNTFdLAogICAgICAgIFsgMCwgMjUsICAwLCAzNSwgIDAsIDY0LCAgMCwgIDZdLCBbMzEsICAwLCAzNywgIDAsIDU4LCAgMCwgIDQsICAwXSwKICAgICAgICBbIDAsIDU2LCAgMCwgMTQsICAwLCAxNywgIDAsIDQzXSwgWzUwLCAgMCwgMTIsICAwLCAyMywgIDAsIDQ1LCAgMF0KICAgIF0sCiAgICAjIFRhYmxlIDYKICAgIFsKICAgICAgICBbMTYsICAwLCAgMCwgMzcsIDIwLCAgMCwgIDAsIDU3XSwgWzUxLCAgMCwgIDAsIDI2LCA0NywgIDAsICAwLCAgNl0sCiAgICAgICAgWzEzLCAgMCwgIDAsIDQwLCAxNywgIDAsICAwLCA2MF0sIFs1MCwgIDAsICAwLCAyNywgNDYsICAwLCAgMCwgIDddLAogICAgICAgIFsgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDBdLCBbIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwXSwKICAgICAgICBbIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwXSwgWyAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMF0KICAgIF0KXQoKIyBDcmVhdGUgYSBDb3VudGVyIG9iamVjdCB0byBzdG9yZSBmcmVxdWVuY2llcy4KIyBXZSBpbml0aWFsaXplIGl0IHdpdGggYWxsIG51bWJlcnMgZnJvbSAxIHRvIDY0IGhhdmluZyBhIGNvdW50IG9mIDAuCmZyZXF1ZW5jaWVzID0gY29sbGVjdGlvbnMuQ291bnRlcih7bnVtYmVyOiAwIGZvciBudW1iZXIgaW4gcmFuZ2UoMSwgNjUpfSkKCiMgRmxhdHRlbiB0aGUgbGlzdCBvZiB0YWJsZXMgaW50byBhIHNpbmdsZSBsaXN0IG9mIG51bWJlcnMKYWxsX251bWJlcnMgPSBbbnVtYmVyIGZvciB0YWJsZSBpbiBhbGxfdGFibGVzIGZvciByb3cgaW4gdGFibGUgZm9yIG51bWJlciBpbiByb3ddCgojIFVwZGF0ZSB0aGUgY291bnRlciB3aXRoIHRoZSBudW1iZXJzIGZyb20gdGhlIHRhYmxlcyAoemVyb3MgYXJlIGlnbm9yZWQpLgpmcmVxdWVuY2llcy51cGRhdGUobnVtIGZvciBudW0gaW4gYWxsX251bWJlcnMgaWYgbnVtICE9IDApCgojIC0tLSBEaXNwbGF5IHRoZSByZXN1bHRzIC0tLQpwcmludCgi8J+TiiBGcmVxdWVuY3kgb2YgTnVtYmVycyAoMS02NCkgQWNyb3NzIEFsbCBTaXggVGFibGVzXG4iKQoKIyBQcmludCBhIGZvcm1hdHRlZCB0YWJsZSBoZWFkZXIKcHJpbnQoZiJ7J051bWJlcic6PDEwfSB8IHsnRnJlcXVlbmN5Jzo8MTB9IikKcHJpbnQoIi0iICogMjQpCgojIFByaW50IGVhY2ggbnVtYmVyIGFuZCBpdHMgY29ycmVzcG9uZGluZyBmcmVxdWVuY3kKZm9yIG51bWJlciBpbiByYW5nZSgxLCA2NSk6CiAgICBjb3VudCA9IGZyZXF1ZW5jaWVzW251bWJlcl0KICAgIHByaW50KGYie251bWJlcjo8MTB9IHwge2NvdW50OjwxMH0iKQoK