# deque案TLEした # TLEするのはAが大きくて、あまりに多くの点をチェック、appendするからだろう # その問題はグラフ化でも変わらない、辺が増えすぎる # 大事なのは左端と右端だけではないか、左端と右端がわかればいい # 更新のときも左端か右端をどれだけ超えるのかだけが重要 # 範囲が増えた時だけ、その増えた範囲から、さらに範囲が増えるかチェック # visitedではなく右端引く左端が答え N, K = map(int, input().split()) INF = 10**20 X = [-INF]+list(map(int, input().split()))+[INF] A = [0]+list(map(int, input().split()))+[0] from bisect import * rng = (K, K) visited = [0]*(N+1) while True: #print('pre', rng) left, right = rng for i in range(left, right+1): if visited[i] == 0: visited[i] = 1 lower = bisect_left(X, X[i]-A[i]) upper = bisect_left(X, X[i]+A[i]) if X[upper] != X[i]+A[i]: upper -= 1 left = min(left, lower) right = max(right, upper) if (left, right) == rng: break else: rng = (left, right) #print('post', rng) ans = right+1-left print(ans)