import
os
import
sys
import
numpy as np
def
solve(inp):
n, k
=
inp[:
2
]
ccc
=
inp[
2
::
2
]
vvv
=
inp[
3
::
2
]
INF
=
1
<<
60
dp1v
=
np.full(k
+
1
,
-
INF, np.int64)
dp1c
=
np.full(k
+
1
,
-
INF, np.int64)
dp2v
=
np.full(k
+
1
,
-
INF, np.int64)
dp1v[
0
]
=
0
for
i
in
range
(n):
c
=
ccc[i]
v
=
vvv[i]
dp_tmp
=
np.full(k
+
1
,
-
INF, np.int64)
for
j
in
range
(
min
(i
+
1
, k
+
1
)):
dp_tmp[j]
=
dp1v[j]
if
dp1c[j] !
=
c
else
dp2v[j]
dp_tmp[j]
+
=
v
if
i < k:
dp_tmp[i
+
1
]
=
0
for
j
in
range
(
min
(i
+
1
, k),
0
,
-
1
):
if
dp1v[j
-
1
] < dp_tmp[j]:
if
dp1c[j
-
1
]
=
=
c:
dp2v[j]
=
dp2v[j
-
1
]
dp1v[j]
=
dp_tmp[j]
dp1c[j]
=
c
else
:
dp2v[j]
=
dp1v[j
-
1
]
dp1v[j]
=
dp_tmp[j]
dp1c[j]
=
c
elif
dp1c[j
-
1
] !
=
c
and
dp2v[j
-
1
] < dp_tmp[j]:
dp2v[j]
=
dp_tmp[j]
dp1v[j]
=
dp1v[j
-
1
]
dp1c[j]
=
dp1c[j
-
1
]
else
:
dp2v[j]
=
dp2v[j
-
1
]
dp1v[j]
=
dp1v[j
-
1
]
dp1c[j]
=
dp1c[j
-
1
]
dp1v[
0
]
=
dp_tmp[
0
]
dp1c[
0
]
=
c
if
dp1v[k] <
0
:
return
-
1
else
:
return
dp1v[k]
SIGNATURE
=
'(i8[:],)'
if
sys.argv[
-
1
]
=
=
'ONLINE_JUDGE'
:
from
numba.pycc
import
CC
cc
=
CC(
'my_module'
)
cc.export(
'solve'
, SIGNATURE)(solve)
cc.
compile
()
exit()
if
os.name
=
=
'posix'
:
from
my_module
import
solve
else
:
from
numba
import
njit
solve
=
njit(SIGNATURE, cache
=
True
)(solve)
print
(
'compiled'
,
file
=
sys.stderr)
inp
=
np.fromstring(sys.stdin.read(), dtype
=
np.int64, sep
=
' '
)
ans
=
solve(inp)
print
(ans)