# Python 3
# Given a 2D matrix of M x N size, find all elements present in every row.
testcase = [
[7, 1, 3, 5, 3, 6],
[2, 3, 6, 1, 1, 6],
[6, 1, 7, 2, 2, 4],
[6, 6, 7, 1, 3, 3],
[5, 5, 6, 1, 5, 4],
[3, 5, 6, 2, 7, 1],
[4, 1, 4, 3, 6, 4],
[4, 6, 1, 7, 4, 3]]
# We always need to check elements, so we will use this list to store them.
checked = []
# We will use the elements in the first row one by one to check the other rows.
for elmt in testcase[0]:
# If this elmt is a duplicate, we skip it.
if elmt in checked:
continue
# If it isn't a duplicate, then add it to the list of checked elmts
else:
checked.append(elmt)
# Reset the counter used to confirm the presence of our elmt.
count = 1
# For each row,
for row in testcase[1:]:
# Count up if our element is present
if elmt in row:
count += 1
# If a row is missing an elmt, we should break to save a little time.
else:
break
# If our count is the same number as the amount of rows, then that number
# must be present in all rows.
if count == len(testcase):
try:
answer.append(elmt)
# If we had no answers before, make a new list to begin keeping them
except NameError:
answer = [elmt]
# Print our answer(s)
try:
print(answer)
# If there is no answer to print, our answer is None.
except NameError:
print(None)
IyBQeXRob24gMwoKIyBHaXZlbiBhIDJEIG1hdHJpeCBvZiBNIHggTiBzaXplLCBmaW5kIGFsbCBlbGVtZW50cyBwcmVzZW50IGluIGV2ZXJ5IHJvdy4KdGVzdGNhc2UgPSBbCiAgICBbNywgMSwgMywgNSwgMywgNl0sCiAgICBbMiwgMywgNiwgMSwgMSwgNl0sCiAgICBbNiwgMSwgNywgMiwgMiwgNF0sCiAgICBbNiwgNiwgNywgMSwgMywgM10sCiAgICBbNSwgNSwgNiwgMSwgNSwgNF0sCiAgICBbMywgNSwgNiwgMiwgNywgMV0sCiAgICBbNCwgMSwgNCwgMywgNiwgNF0sCiAgICBbNCwgNiwgMSwgNywgNCwgM11dCiMgV2UgYWx3YXlzIG5lZWQgdG8gY2hlY2sgZWxlbWVudHMsIHNvIHdlIHdpbGwgdXNlIHRoaXMgbGlzdCB0byBzdG9yZSB0aGVtLgpjaGVja2VkID0gW10KIyBXZSB3aWxsIHVzZSB0aGUgZWxlbWVudHMgaW4gdGhlIGZpcnN0IHJvdyBvbmUgYnkgb25lIHRvIGNoZWNrIHRoZSBvdGhlciByb3dzLgpmb3IgZWxtdCBpbiB0ZXN0Y2FzZVswXToKICAgICMgSWYgdGhpcyBlbG10IGlzIGEgZHVwbGljYXRlLCB3ZSBza2lwIGl0LgogICAgaWYgZWxtdCBpbiBjaGVja2VkOgogICAgICAgIGNvbnRpbnVlCiAgICAjIElmIGl0IGlzbid0IGEgZHVwbGljYXRlLCB0aGVuIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBjaGVja2VkIGVsbXRzCiAgICBlbHNlOgogICAgICAgIGNoZWNrZWQuYXBwZW5kKGVsbXQpCiAgICAjIFJlc2V0IHRoZSBjb3VudGVyIHVzZWQgdG8gY29uZmlybSB0aGUgcHJlc2VuY2Ugb2Ygb3VyIGVsbXQuCiAgICBjb3VudCA9IDEKICAgICMgRm9yIGVhY2ggcm93LAogICAgZm9yIHJvdyBpbiB0ZXN0Y2FzZVsxOl06CiAgICAgICAgIyBDb3VudCB1cCBpZiBvdXIgZWxlbWVudCBpcyBwcmVzZW50CiAgICAgICAgaWYgZWxtdCBpbiByb3c6CiAgICAgICAgICAgIGNvdW50ICs9IDEKICAgICAgICAjIElmIGEgcm93IGlzIG1pc3NpbmcgYW4gZWxtdCwgd2Ugc2hvdWxkIGJyZWFrIHRvIHNhdmUgYSBsaXR0bGUgdGltZS4KICAgICAgICBlbHNlOgogICAgICAgICAgICBicmVhawogICAgIyAgIElmIG91ciBjb3VudCBpcyB0aGUgc2FtZSBudW1iZXIgYXMgdGhlIGFtb3VudCBvZiByb3dzLCB0aGVuIHRoYXQgbnVtYmVyCiAgICAjIG11c3QgYmUgcHJlc2VudCBpbiBhbGwgcm93cy4KICAgIGlmIGNvdW50ID09IGxlbih0ZXN0Y2FzZSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBhbnN3ZXIuYXBwZW5kKGVsbXQpCiAgICAgICAgIyBJZiB3ZSBoYWQgbm8gYW5zd2VycyBiZWZvcmUsIG1ha2UgYSBuZXcgbGlzdCB0byBiZWdpbiBrZWVwaW5nIHRoZW0KICAgICAgICBleGNlcHQgTmFtZUVycm9yOgogICAgICAgICAgICBhbnN3ZXIgPSBbZWxtdF0KIyBQcmludCBvdXIgYW5zd2VyKHMpCnRyeToKICAgIHByaW50KGFuc3dlcikKIyBJZiB0aGVyZSBpcyBubyBhbnN3ZXIgdG8gcHJpbnQsIG91ciBhbnN3ZXIgaXMgTm9uZS4KZXhjZXB0IE5hbWVFcnJvcjoKICAgIHByaW50KE5vbmUp