class
GFG
{
static
boolean
isPossible(
int
a[],
int
n)
{
if
(n <=
2
)
return
true
;
int
flag =
0
;
for
(
int
i =
0
; i < n -
2
; i++)
{
if
(!(a[i] > a[i +
1
] &&
a[i +
1
] > a[i +
2
]))
{
flag =
1
;
break
;
}
}
if
(flag ==
0
)
return
true
;
flag =
0
;
for
(
int
i =
0
; i < n -
2
; i++)
{
if
(!(a[i] < a[i +
1
] &&
a[i +
1
] < a[i +
2
]))
{
flag =
1
;
break
;
}
}
if
(flag ==
0
)
return
true
;
int
val1 = Integer.MAX_VALUE, mini = -
1
,
val2 = Integer.MIN_VALUE, maxi =
0
;
for
(
int
i =
0
; i < n; i++)
{
if
(a[i] < val1)
{
mini = i;
val1 = a[i];
}
if
(a[i] > val2)
{
maxi = i;
val2 = a[i];
}
}
flag =
1
;
for
(
int
i =
0
; i < maxi; i++)
{
if
(a[i] > a[i +
1
])
{
flag =
0
;
break
;
}
}
if
(flag ==
1
&& maxi +
1
== mini)
{
flag =
1
;
for
(
int
i = mini; i < n -
1
; i++)
{
if
(a[i] > a[i +
1
])
{
flag =
0
;
break
;
}
}
if
(flag ==
1
)
return
true
;
}
flag =
1
;
for
(
int
i =
0
; i < mini; i++)
{
if
(a[i] < a[i +
1
])
{
flag =
0
;
break
;
}
}
if
(flag ==
1
&& maxi -
1
== mini)
{
flag =
1
;
for
(
int
i = maxi; i < n -
1
; i++)
{
if
(a[i] < a[i +
1
])
{
flag =
0
;
break
;
}
}
if
(flag ==
1
)
return
true
;
}
return
false
;
}
public
static
void
main(String args[])
{
int
a[] = {
4
,
5
,
6
,
2
,
3
};
int
n = a.length;
if
(isPossible(a, n))
System.out.println(
"Yes"
);
else
System.out.println(
"No"
);
}
}