using System; using static System.Console; using System.Linq; using System.Collections.Generic; using System.Runtime.Intrinsics.Arm; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var a = NList; var b = NList; var d = NList; Array.Sort(d); var dp = new int[n + 1][]; for (var i = 0; i < dp.Length; ++i) { var j = n - i; dp[i] = new int[j + 1]; if (a[i] + b[j] >= d[0]) dp[i][j] = 1; } for (var sum = n - 1; sum > 0; --sum) for (var i = 0; i <= sum; ++i) { var j = sum - i; dp[i][j] = Math.Max(dp[i][j + 1], dp[i + 1][j]); if (a[i] + b[j] >= d[dp[i][j + 1]]) dp[i][j] = Math.Max(dp[i][j], dp[i][j + 1] + 1); if (a[i] + b[j] >= d[dp[i + 1][j]]) dp[i][j] = Math.Max(dp[i][j], dp[i + 1][j] + 1); } WriteLine(Math.Max(dp[0][1], dp[1][0])); } }