#include int n; int a[16], b[16]; int max, f; int ans; void check(int c[]) { int v, i; if (f == 0) { v = 0; for (i = 0; i < n; i++) if (a[c[i]] > b[i]) v += a[c[i]] - b[i]; if (v > max) max = v; } else { v = 0; for (i = 0; i < n; i++) if (a[c[i]] > b[i]) v += a[c[i]] - b[i]; if (v == max) ans++; } return; } void make(int c[], int cc, int d[], int dd) { if (dd == 0) { check(c); return; } int e[16], i, j; for (i = 0; i < dd; i++) { for (j = 0; j < i; j++) e[j] = d[j]; for (j = i + 1; j < dd; j++) e[j - 1] = d[j]; c[cc] = d[i]; make(c, cc + 1, e, dd - 1); } return; } int main() { scanf("%d", &n); int i; for (i = 0; i < n; i++) scanf("%d", &a[i]); for (i = 0; i < n; i++) scanf("%d", &b[i]); int c[16], d[16]; for (i = 0; i < n; i++) d[i] = i; f = 0; make(c, 0, d, n); f = 1; ans = 0; for (i = 0; i < n; i++) d[i] = i; make(c, 0, d, n); printf("%d\n", ans); return 0; }