N, M = list(map(int, input().split()))

# 木だったらなんでもOK?

# いもす法



edge = [0] * (N + 1)

for _ in range(M):

    a, b = list(map(int, input().split()))

    edge[a] += 1

    edge[b] -= 1



ans = "YES"

for i in range(N):

    edge[i + 1] += edge[i]

    if edge[i + 1] % 2 == 1:

        ans = "NO"

        break



print(ans)

import sys

input = sys.stdin.buffer.readline

sys.setrecursionlimit(10 ** 7)



N, M = list(map(int, input().split()))

cnt = [0] * (N + 1)

for _ in range(M):

    a, b = list(map(int, input().split()))

    cnt[a] ^= 1

    cnt[b] ^= 1



if all(x == 0 for x in cnt):

    print("YES")

else:

    print("NO")
N, M = list(map(int, input().split()))
# 木だったらなんでもOK?
# いもす法
edge = [0] * (N + 1)
for _ in range(M):
    a, b = list(map(int, input().split()))
    edge[a] += 1
    edge[b] -= 1
ans = "YES"
for i in range(N):
    edge[i + 1] += edge[i]
    if edge[i + 1] % 2 == 1:
        ans = "NO"
        break
print(ans)

import sys

input = sys.stdin.buffer.readline
sys.setrecursionlimit(10**7)
N, M = list(map(int, input().split()))
cnt = [0] * (N + 1)
for _ in range(M):
    a, b = list(map(int, input().split()))
    cnt[a] ^= 1
    cnt[b] ^= 1
if all(x == 0 for x in cnt):
    print("YES")
else:
    print("NO")

+import sys + +input = sys.stdin.buffer.readline +sys.setrecursionlimit(10**7) -# 木だったらなんでもOK? -# いもす法 -edge = [0] * (N + 1) +cnt = [0] * (N + 1) -    edge[a] += 1 -    edge[b] -= 1 -ans = "YES" -for i in range(N): -    edge[i + 1] += edge[i] -    if edge[i + 1] % 2 == 1: -        ans = "NO" -        break -print(ans) +    cnt[a] ^= 1 +    cnt[b] ^= 1 +if all(x == 0 for x in cnt): +    print("YES") +else: +    print("NO")