import
java.io.*;
import
java.util.*;
class
GFG {
static
Long FindMaxDif(List<Long> a,
int
m)
{
int
n = m /
3
;
Long[] l =
new
Long[m +
5
];
Long[] r =
new
Long[m +
5
];
for
(
int
i =
0
; i < m+
5
; i++) {
l[i] = r[i] = 0L;
}
List<Long> s =
new
ArrayList<Long>();
for
(
int
i =
1
; i <= m; i++)
{
if
(i <= n)
{
l[i] = a.get(i -
1
) + l[i -
1
];
s.add(a.get(i -
1
));
}
else
{
l[i] = l[i -
1
];
Collections.sort(s);
Long d = s.get(
0
);
if
(a.get(i -
1
) > d)
{
l[i] -= d;
l[i] += a.get(i -
1
);
s.remove(d);
s.add(a.get(i -
1
));
}
}
}
s.clear();
for
(
int
i = m; i >=
1
; i--)
{
if
(i >= m - n +
1
)
{
r[i] = a.get(i -
1
) + r[i +
1
];
s.add(a.get(i -
1
));
}
else
{
r[i] = r[i +
1
];
Collections.sort(s);
Long d = s.get(s.size() -
1
);
if
(a.get(i -
1
) < d)
{
r[i] -= d;
r[i] += a.get(i -
1
);
s.remove(d);
s.add(a.get(i -
1
));
}
}
}
Long ans = Long.MIN_VALUE;
for
(
int
i = n; i <= m - n; i++)
{
ans = Math.max(ans, l[i] - r[i +
1
]);
}
return
ans;
}
public
static
void
main (String[] args) {
List<Long> vtr =
new
ArrayList<Long>(
Arrays.asList(3L, 1L, 4L, 1L, 5L, 9L));
int
n = vtr.size();
System.out.println(FindMaxDif(vtr, n));
}
}