while True:
    try:
        m,n,k = map(int, input().split())
        mogu = set()
        for _ in range(k):
            x,y = map(int, input().split())
            mogu.add((x-1,y-1))

        dp_all = [[0]*n for _ in range(m)]
        dp_mogu = [[0]*n for _ in range(m)]
        if n == 1 or m == 1:
            if k == 0:
                print('1.00')
            else:
                print('0.00')
            continue

        for i in range(1,n):
            dp_all[0][i] = 1
            if (0,i) in mogu:
                dp_mogu[0][i] = 1
            else:
                dp_mogu[0][i] = dp_mogu[0][i-1]
        for i in range(1,m):
            dp_all[i][0] = 1
            if (i,0) in mogu:
                dp_mogu[i][0] = 1
            else:
                dp_mogu[i][0] = dp_mogu[i-1][0]


        for i in range(1,m-1):
            for j in range(1,n-1): 
                dp_all[i][j] = dp_all[i-1][j] + dp_all[i][j-1]
                if (i,j) in mogu:
                    dp_mogu[i][j] = dp_all[i][j]
                else:
                    dp_mogu[i][j] = dp_mogu[i-1][j] + dp_mogu[i][j-1]
        for i in range(1,m-1):
            dp_all[i][n-1] = dp_all[i-1][n-1] * 2 + dp_all[i][n-2]
            if (i,n-1) in mogu:
                dp_mogu[i][n-1] = dp_all[i][n-1]
            else:
                dp_mogu[i][n-1] = 2 *  dp_mogu[i-1][n-1] + dp_mogu[i][n-2]
        for j in range(1,n-1):
            dp_all[m-1][j] = dp_all[m-1][j-1] * 2 + dp_all[m-2][j]
            if (m-1,j) in mogu:
                dp_mogu[m-1][j] = dp_all[m-1][j]
            else:
                dp_mogu[m-1][j] = 2 *  dp_mogu[m-1][j-1] + dp_mogu[m-2][j]
        dp_all[m-1][n-1] = dp_all[m-1][n-2]*2 + dp_all[m-2][n-1]*2
        dp_mogu[m-1][n-1] = dp_mogu[m-1][n-2]*2 + dp_mogu[m-2][n-1]*2

        print("{:.2f}".format(1-dp_mogu[m-1][n-1]/dp_all[m-1][n-1]))
    except:
        break