import numpy as np

import sys

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines

sys.setrecursionlimit(10 ** 7)



n, m = list(map(int, readline().split()))



edge = np.zeros(n, dtype=int)

for _ in range(m):

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

    edge[a - 1] += 1

    edge[b - 1] -= 1



np.add.accumulate(edge, out=edge)

if all(edge % 2 == 0):

    ans = "YES"

else:

    ans = "NO"



print(ans)

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 numpy as np
import sys

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
sys.setrecursionlimit(10**7)
n, m = list(map(int, readline().split()))
edge = np.zeros(n, dtype=int)
for _ in range(m):
    a, b = list(map(int, readline().split()))
    edge[a - 1] += 1
    edge[b - 1] -= 1
np.add.accumulate(edge, out=edge)
if all(edge % 2 == 0):
    ans = "YES"
else:
    ans = "NO"
print(ans)

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 numpy as np -import sys - -read = sys.stdin.buffer.read -readline = sys.stdin.buffer.readline -readlines = sys.stdin.buffer.readlines -sys.setrecursionlimit(10**7) -n, m = list(map(int, readline().split())) -edge = np.zeros(n, dtype=int) -for _ in range(m): -    a, b = list(map(int, readline().split())) -    edge[a - 1] += 1 -    edge[b - 1] -= 1 -np.add.accumulate(edge, out=edge) -if all(edge % 2 == 0): -    ans = "YES" -else: -    ans = "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