Загрузка данных


# Задача 1
s = input()
print(s[0] + s[1:-1][::-1] + s[-1])

# Задача 2
s = input()
print(s[1:8:2])

# Задача 3
n, m = map(int, input().split())
matrix = [[0 if i % 2 == 0 else 1 for _ in range(m)] for i in range(n)]
for row in matrix:
    print(*row)

# Задача 4
lst = input().split()
half = len(lst) // 2
first = lst[:half]
second_rev = lst[-half:][::-1]
print("YES" if first == second_rev else "NO")

# Задача 5
n = int(input())
matrix = [list(map(int, input().split())) for _ in range(n)]
diag = [matrix[i][i] for i in range(n)]
print(*diag)

# Задача 6
with open("code.txt", "r", encoding="utf-8") as f:
    for line in f:
        line = line.rstrip("\n")
        if "#" in line:
            line = line[:line.index("#")]
        if line:
            print(line)

# Задача 7
n = int(input())
for i in range(n):
    row = ["." if (i + j) % 2 == 0 else "*" for j in range(n)]
    print("".join(row))

# Задача 8
with open("logs.txt", "r", encoding="utf-8") as f:
    for line in f:
        parts = line.strip().split()
        if len(parts) == 2:
            filename, status = parts
            if status == "OK":
                name_without_ext = filename.rsplit(".", 1)[0]
                print(name_without_ext[::-1])

# Задача 9
n = int(input())
matrix = [list(map(int, input().split())) for _ in range(n)]
rotated = [[matrix[n - 1 - j][i] for j in range(n)] for i in range(n)]
for row in rotated:
    print(*row)

# Задача 10
valid_letters = set("АВЕКМНОРСТУХ")
with open("cars.txt", "r", encoding="utf-8") as f:
    words = f.read().split()
for word in words:
    w = word.upper()
    if len(w) == 6:
        if w[0] in valid_letters and w[1:4].isdigit() and w[4] in valid_letters and w[5] in valid_letters:
            print(w)

# Задача 11
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
r1, r2, c1, c2 = map(int, input().split())
submatrix = [row[c1:c2 + 1] for row in matrix[r1:r2 + 1]]
for row in submatrix:
    print(*row)

# Задача 12
s = input()
max_sub = ""
max_len = 0
i = 0
while i < len(s):
    j = i
    while j < len(s) and s[j] == s[i]:
        j += 1
    length = j - i
    if length > max_len:
        max_len = length
        max_sub = s[i:j]
    i = j
print(max_sub, max_len)

# Задача 13
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
transposed = [[matrix[i][j] for i in range(n)] for j in range(m)]
for row in transposed:
    print(*row)

# Задача 14
with open("emails.txt", "r", encoding="utf-8") as f:
    for line in f:
        email = line.strip()
        if "@" in email:
            user, domain = email.split("@", 1)
            if len(user) <= 3:
                masked_user = user[0] + "***"
            else:
                masked_user = user[:2] + "***" + user[-1]
            print(f"{masked_user}@{domain}")

# Задача 15
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
for i in range(n):
    for j in range(m):
        val = matrix[i][j]
        is_min = True
        for di, dj in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
            ni, nj = i + di, j + dj
            if 0 <= ni < n and 0 <= nj < m:
                if matrix[ni][nj] <= val:
                    is_min = False
                    break
        if is_min:
            print(i, j)

# Задача 16
k, n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
shift = k % m
for row in matrix:
    shifted_row = row[-shift:] + row[:-shift] if shift != 0 else row
    print(*shifted_row)

# Задача 17
s = input()
palindromes = []
for i in range(len(s)):
    for j in range(i + 4, len(s) + 1):
        sub = s[i:j]
        if sub == sub[::-1]:
            palindromes.append(sub)
print(*palindromes)

# Задача 18
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
total = 0
for i in range(n):
    for j in range(m):
        if i == 0 or i == n - 1 or j == 0 or j == m - 1:
            total += matrix[i][j]
print(total)

# Задача 19
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
max_sum = float('-inf')
best_coord = (0, 0)
for i in range(n - 1):
    for j in range(m - 1):
        s = matrix[i][j] + matrix[i][j + 1] + matrix[i + 1][j] + matrix[i + 1][j + 1]
        if s > max_sum:
            max_sum = s
            best_coord = (i, j)
print(max_sum)
print(*best_coord)

# Задача 20*
n = int(input())
matrix = [[0] * n for _ in range(n)]
top, bottom, left, right = 0, n - 1, 0, n - 1
val = 1
while top <= bottom and left <= right:
    for j in range(left, right + 1):
        matrix[top][j] = val
        val += 1
    top += 1
    for i in range(top, bottom + 1):
        matrix[i][right] = val
        val += 1
    right -= 1
    if top <= bottom:
        for j in range(right, left - 1, -1):
            matrix[bottom][j] = val
            val += 1
        bottom -= 1
    if left <= right:
        for i in range(bottom, top - 1, -1):
            matrix[i][left] = val
            val += 1
        left += 1
for row in matrix:
    print(*row)

# Задача 21*
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
dp = [[0] * m for _ in range(n)]
max_size = 0
for i in range(n):
    for j in range(m):
        if matrix[i][j] == 1:
            if i == 0 or j == 0:
                dp[i][j] = 1
            else:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1
            if dp[i][j] > max_size:
                max_size = dp[i][j]
print(max_size)

# Задача 22*
s = input()
if not s:
    print("")
else:
    res = []
    count = 1
    for i in range(1, len(s)):
        if s[i] == s[i - 1]:
            count += 1
        else:
            res.append(f"{s[i - 1]}{count}")
            count = 1
    res.append(f"{s[-1]}{count}")
    print("".join(res))

# Задача 23*
n, m = map(int, input().split())
grid = [list(input().strip()) for _ in range(n)]
res = [[0] * m for _ in range(n)]
for i in range(n):
    for j in range(m):
        if grid[i][j] == '*':
            res[i][j] = '*'
        else:
            mines = 0
            for di in (-1, 0, 1):
                for dj in (-1, 0, 1):
                    if di == 0 and dj == 0:
                        continue
                    ni, nj = i + di, j + dj
                    if 0 <= ni < n and 0 <= nj < m and grid[ni][nj] == '*':
                        mines += 1
            res[i][j] = str(mines)
for row in res:
    print("".join(row))

# Задача 24*
s1 = input()
s2 = input()
m, n = len(s1), len(s2)
dp = [[0] * (n + 1) for _ in range(m + 1)]
max_len = 0
end_pos = 0
for i in range(1, m + 1):
    for j in range(1, n + 1):
        if s1[i - 1] == s2[j - 1]:
            dp[i][j] = dp[i - 1][j - 1] + 1
            if dp[i][j] > max_len:
                max_len = dp[i][j]
                end_pos = i
print(s1[end_pos - max_len:end_pos])

# Задача 25*
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
coords = []
top, bottom, left, right = 0, n - 1, 0, m - 1
while top <= bottom and left <= right:
    for j in range(left, right + 1):
        coords.append((top, j))
    top += 1
    for i in range(top, bottom + 1):
        coords.append((i, right))
    right -= 1
    if top <= bottom:
        for j in range(right, left - 1, -1):
            coords.append((bottom, j))
        bottom -= 1
    if left <= right:
        for i in range(bottom, top - 1, -1):
            coords.append((i, left))
        left += 1
values = [matrix[r][c] for r, c in coords]
if values:
    shifted_values = [values[-1]] + values[:-1]
    res = [[0] * m for _ in range(n)]
    for (r, c), val in zip(coords, shifted_values):
        res[r][c] = val
    for row in res:
        print(*row)

# Задача 26*
words = input().split()
groups = {}
for word in words:
    key = "".join(sorted(word))
    groups.setdefault(key, []).append(word)
for group in groups.values():
    print(*group)

# Задача 28*
n, m = map(int, input().split())
matrix = [[0] * m for _ in range(n)]
val = 1
for d in range(n + m - 1):
    diag = []
    r = 0 if d < m else d - m + 1
    c = d if d < m else m - 1
    while r < n and c >= 0:
        diag.append((r, c))
        r += 1
        c -= 1
    if d % 2 == 0:
        diag.reverse()
    for r, c in diag:
        matrix[r][c] = val
        val += 1
for row in matrix:
    print(*row)

# Задача 29*
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
visited = [[False] * m for _ in range(n)]
max_area = 0
for i in range(n):
    for j in range(m):
        if matrix[i][j] == 1 and not visited[i][j]:
            area = 0
            stack = [(i, j)]
            visited[i][j] = True
            while stack:
                r, c = stack.pop()
                area += 1
                for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
                    nr, nc = r + dr, c + dc
                    if 0 <= nr < n and 0 <= nc < m and matrix[nr][nc] == 1 and not visited[nr][nc]:
                        visited[nr][nc] = True
                        stack.append((nr, nc))
            if area > max_area:
                max_area = area
print(max_area)

# Задача 30*
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
res = [[0] * m for _ in range(n)]
for i in range(n):
    for j in range(m):
        neighbors = []
        for dr in (-1, 0, 1):
            for dc in (-1, 0, 1):
                nr, nc = i + dr, j + dc
                if 0 <= nr < n and 0 <= nc < m:
                    neighbors.append(matrix[nr][nc])
        res[i][j] = round(sum(neighbors) / len(neighbors))
for row in res:
    print(*row)