← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

const MOD = 1000000007

func pow(base, exp int) int {
	res := 1
	base %= MOD
	for exp > 0 {
		if exp%2 == 1 {
			res = (res * base) % MOD
		}
		base = (base * base) % MOD
		exp /= 2
	}
	return res
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	var R, a1, a2, a3, a4 int
	_, err := fmt.Fscan(reader, &R, &a1, &a2, &a3, &a4)
	if err != nil {
		return
	}

	S := a1 + a2 + a3 + a4
	invS := pow(S, MOD-2)
	p1 := (a1 * invS) % MOD
	p2 := (a2 * invS) % MOD
	p3 := (a3 * invS) % MOD
	p4 := (a4 * invS) % MOD
	invP4 := pow(p4, MOD-2)

	C := 2*R + 1

	V := make([][][]int, 105)
	for i := 0; i < 105; i++ {
		V[i] = make([][]int, 105)
		for j := 0; j < 105; j++ {
			V[i][j] = make([]int, C+1)
		}
	}

	for x := -R; x <= R; x++ {
		ymin := R + 1
		for y := -R; y <= R; y++ {
			if x*x+y*y <= R*R {
				ymin = y
				break
			}
		}
		if ymin <= R {
			V[x+52][ymin+52][x+R] = 1
		}
	}

	zeroVector := make([]int, C+1)
	getV := func(x, y int) []int {
		if x*x+y*y > R*R {
			return zeroVector
		}
		return V[x+52][y+52]
	}

	equations := make([][]int, 0, C)

	for y := -R; y <= R; y++ {
		for x := -R; x <= R; x++ {
			if x*x+y*y <= R*R {
				curr := getV(x, y)
				left := getV(x-1, y)
				down := getV(x, y-1)
				right := getV(x+1, y)

				next := make([]int, C+1)
				for i := 0; i <= C; i++ {
					val := curr[i]
					val = (val - p1*left[i]) % MOD
					val = (val - p2*down[i]) % MOD
					val = (val - p3*right[i]) % MOD
					if i == C {
						val = (val - 1) % MOD
					}
					val = (val%MOD + MOD) % MOD
					val = (val * invP4) % MOD
					next[i] = val
				}

				V[x+52][y+1+52] = next

				if x*x+(y+1)*(y+1) > R*R {
					eq := make([]int, C+1)
					copy(eq, next)
					eq[C] = (MOD - eq[C]%MOD) % MOD
					equations = append(equations, eq)
				}
			}
		}
	}

	n := len(equations)
	for i := 0; i < n; i++ {
		pivot := i
		for j := i; j < n; j++ {
			if equations[j][i] != 0 {
				pivot = j
				break
			}
		}
		equations[i], equations[pivot] = equations[pivot], equations[i]

		inv := pow(equations[i][i], MOD-2)
		for j := i; j <= C; j++ {
			equations[i][j] = (equations[i][j] * inv) % MOD
		}

		for j := 0; j < n; j++ {
			if i != j && equations[j][i] != 0 {
				factor := equations[j][i]
				for k := i; k <= C; k++ {
					equations[j][k] = (equations[j][k] - factor*equations[i][k]) % MOD
					if equations[j][k] < 0 {
						equations[j][k] += MOD
					}
				}
			}
		}
	}

	res := make([]int, n)
	for i := 0; i < n; i++ {
		res[i] = equations[i][C]
	}

	ans := V[52][52][C]
	for i := 0; i < C; i++ {
		ans = (ans + V[52][52][i]*res[i]) % MOD
	}
	ans = (ans%MOD + MOD) % MOD

	fmt.Println(ans)
}