Buggy python submission (verdict: Runtime Error):
#import collections
#aa = collections.Counter(a) # list to list
#from itertools import combinations # (string,3) 3回

mod = 10**9 + 7

def readInts():
  return list(map(int,input().split()))
def main():
    n,m = readInts()
    LIST = [[0] * m for _ in range(n)]
    #print(*LIST)
    dx = [-1,-1,-1, 0, 0, 0, 1, 1, 1]
    dy = [-1, 0, 1,-1, 0, 1,-1, 0, 1]
    d = [[-1,-1],[-1,0],[-1,1],[0,-1],[0,0],[0,1],[1,-1],[1,0],[1,1]]
    for y in range(n):
        for x in range(m):
            for ax,ay in d:
                nx = x + ax
                ny = y + ay
                if 0 <= nx < m and 0 <= ny < n:
                    if ax == 0 and ay == 0:
                        #print(ax,ay)
                        LIST[ny][nx] += 1
                    else:
                        LIST[ny][nx] -= 1
    ans = 0
    for i in range(n):
        ans += sum(1 for j in range(m) if LIST[i][j] % 2 != 0)
    print(ans)
if __name__ == '__main__':
  main()


Fixed submission:
#import collections
#aa = collections.Counter(a) # list to list
#from itertools import combinations # (string,3) 3回

mod = 10**9 + 7

def readInts():
  return list(map(int,input().split()))
def main():
    n,m = readInts()
    """
    N <= M
    N = 1かつ、M = 1のとき、1枚だけあるカードは1毎裏返されるので、答えは1でｓ。
    N = 1かつ M ≠ 1のとき、 M 枚のカードのうち両端のカードは2回、それ以外のカードは
    3回裏替えされるので、答えはM-2
    N >= 2のとき、 N <= M より M >= 2で、このとき、
    ・四隅のカードは4回、　# 表になる
    ・それ以外のカードは週上のカードは6回 # 表になる
    ・それ以外のカードは9回
    裏返されるので、答えは、(N-2)(M-2)
    """

    if n == 1 and m == 1:
        print(1)
    elif n == 1 and m != 1:
        print(m-2)
    elif m == 1 and n != 1:
        print(n-2)
    else:
        print((n-2) * (m-2))
if __name__ == '__main__':
  main()

Buggy python submission (verdict: Runtime Error):
#import collections
#aa = collections.Counter(a) # list to list
#from itertools import combinations # (string,3) 3回

mod = 10**9 + 7

def readInts():
  return list(map(int,input().split()))
def main():
    n,m = readInts()
    LIST = [[0] * m for _ in range(n)]
    #print(*LIST)
    dx = [-1,-1,-1, 0, 0, 0, 1, 1, 1]
    dy = [-1, 0, 1,-1, 0, 1,-1, 0, 1]
    d = [[-1,-1],[-1,0],[-1,1],[0,-1],[0,0],[0,1],[1,-1],[1,0],[1,1]]
    for y in range(n):
        for x in range(m):
            for ax,ay in d:
                nx = x + ax
                ny = y + ay
                if 0 <= nx < m and 0 <= ny < n:
                    if ax == 0 and ay == 0:
                        #print(ax,ay)
                        LIST[ny][nx] += 1
                    else:
                        LIST[ny][nx] -= 1
    ans = 0
    for i in range(n):
        ans += sum(1 for j in range(m) if LIST[i][j] % 2 != 0)
    print(ans)
if __name__ == '__main__':
  main()


Fixed submission:
#import collections
#aa = collections.Counter(a) # list to list
#from itertools import combinations # (string,3) 3回

mod = 10**9 + 7

def readInts():
  return list(map(int,input().split()))
def main():
    n,m = readInts()
    """
    N <= M
    N = 1かつ、M = 1のとき、1枚だけあるカードは1毎裏返されるので、答えは1でｓ。
    N = 1かつ M ≠ 1のとき、 M 枚のカードのうち両端のカードは2回、それ以外のカードは
    3回裏替えされるので、答えはM-2
    N >= 2のとき、 N <= M より M >= 2で、このとき、
    ・四隅のカードは4回、　# 表になる
    ・それ以外のカードは週上のカードは6回 # 表になる
    ・それ以外のカードは9回
    裏返されるので、答えは、(N-2)(M-2)
    """

    if n == 1 and m == 1:
        print(1)
    elif n == 1 and m != 1:
        print(m-2)
    elif m == 1 and n != 1:
        print(n-2)
    else:
        print((n-2) * (m-2))
if __name__ == '__main__':
  main()