Yaroslav has an array that consists of *n* integers. In one second Yaroslav can swap two neighboring array elements. Now Yaroslav is wondering if he can obtain an array where any two neighboring elements would be distinct in a finite time.

Help Yaroslav.
The first line contains integer *n* (1 ≤ *n* ≤ 100) — the number of elements in the array. The second line contains *n* integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 1000) — the array elements.
#!/usr/bin/env python
# coding: utf-8

# In[204]:


# # n = int(input())
# # line = list(map(int, input().split()))
# # line = list(str(input()))


# In[148]:


from collections import Counter


# In[144]:


n = int(input())
line = list(map(int, input().split()))


# In[168]:


count_dict = Counter(line)


# In[169]:


max_count = max(count_dict.values())
accum = 0
for k, v in count_dict.items():
    if v != max_count:
        accum += count_dict[k]


# In[170]:


seg_val = []
seg_tmp = []
seg_len = 0
n_seg = 0

for i in range(n):
    if i == 0 or line[i] == line[i-1]:
        seg_tmp.append(line[i])
        
    if len(seg_tmp) > 1 and (line[i] != line[i-1] or i == n-1):
        seg_len = max(seg_len, len(seg_tmp))
        n_seg += 1
        seg_val.append(seg_tmp[0])
        seg_tmp = []
seg_val = set(seg_val)


# In[172]:


max_len = n//2 + 1 if n%2 == 1 else n//2

if (len(seg_val) == 1 and n_seg > 1) or (seg_len > max_len) or accum < max_count - 1:
    print("NO")
else:
    print("YES")


# In[ ]:




