#include <bits/stdc++.h>
using namespace std;
#define finish(x) return cout << x << endl, 0;
#define ll long long
const int N = 35001;
const int K = 51;
const int SZ = 22 * N;
int n, k, x, cn, a[N], las[N], seg[SZ], lc[SZ], rc[SZ], root[N], dp[N][K];
void build(int l, int r, int pos){
if(l == r){
seg[pos] = 1;
return;
}
int mid = (l + r) / 2;
lc[pos] = cn++;
rc[pos] = cn++;
build(l, mid, lc[pos]);
build(mid + 1, r, rc[pos]);
seg[pos] = seg[lc[pos]] + seg[rc[pos]];
}
void update(int l, int r, int pos, int pos2, int ind, int val){
seg[pos] = seg[pos2];
if(l == r){
seg[pos] = val;
return;
}
int mid = (l + r) / 2;
if(ind <= mid){
rc[pos] = rc[pos2];
lc[pos] = cn++;
update(l, mid, lc[pos], lc[pos2], ind, val);
}
else{
lc[pos] = lc[pos2];
rc[pos] = cn++;
update(mid + 1, r, rc[pos], rc[pos2], ind, val);
}
seg[pos] = seg[lc[pos]] + seg[rc[pos]];
}
int query(int l, int r, int pos, int s, int e){
if(r < s || l > e) return 0;
if(s <= l && r <= e) return seg[pos];
int mid = (l + r) / 2;
return query(l, mid, lc[pos], s, e) + query(mid + 1, r, rc[pos], s, e);
}
int distinct(int l, int r){
return query(1, n, root[r], l, r);
}
void solve(int k, int l, int r, int s, int e){
if(r < l) return;
int mid = (l + r) / 2;
int opt = -1;
for(int i = max(s, mid) ; i <= e ; i++){
int cur = distinct(mid, i) + dp[i + 1][k - 1];
if(cur > dp[mid][k]){
dp[mid][k] = cur;
opt = i;
}
}
solve(k, l, mid - 1, s, opt);
solve(k, mid + 1, r, opt, e);
}
int main(){
scanf("%d%d", &n, &k);
for(int i = 1 ; i <= n ; i++)
scanf("%d", &a[i]);
root[0] = cn++;
build(1, n, root[0]);
for(int i = 1 ; i <= n ; i++){
root[i] = cn++;
if(las[a[i]] == 0) root[i] = root[i - 1];
else update(1, n, root[i], root[i - 1], las[a[i]], 0);
las[a[i]] = i;
}
memset(las, 0, sizeof las);
for(int i = n ; i >= 1 ; i--){
dp[i][1] = dp[i + 1][1];
if(las[a[i]] == 0) dp[i][1]++;
las[a[i]] = i;
}
for(int i = 2 ; i <= k ; i++)
solve(i, 1, n, 1, n);
printf("%d\n", dp[1][k]);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmluaXNoKHgpIHJldHVybiBjb3V0IDw8IHggPDwgZW5kbCwgMDsKI2RlZmluZSBsbCBsb25nIGxvbmcKCmNvbnN0IGludCBOID0gMzUwMDE7CmNvbnN0IGludCBLID0gNTE7CmNvbnN0IGludCBTWiA9IDIyICogTjsKCmludCBuLCBrLCB4LCBjbiwgYVtOXSwgbGFzW05dLCBzZWdbU1pdLCBsY1tTWl0sIHJjW1NaXSwgcm9vdFtOXSwgZHBbTl1bS107Cgp2b2lkIGJ1aWxkKGludCBsLCBpbnQgciwgaW50IHBvcyl7CiAgICBpZihsID09IHIpewogICAgICAgIHNlZ1twb3NdID0gMTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICBsY1twb3NdID0gY24rKzsKICAgIHJjW3Bvc10gPSBjbisrOwogICAgYnVpbGQobCwgbWlkLCBsY1twb3NdKTsKICAgIGJ1aWxkKG1pZCArIDEsIHIsIHJjW3Bvc10pOwogICAgc2VnW3Bvc10gPSBzZWdbbGNbcG9zXV0gKyBzZWdbcmNbcG9zXV07Cn0Kdm9pZCB1cGRhdGUoaW50IGwsIGludCByLCBpbnQgcG9zLCBpbnQgcG9zMiwgaW50IGluZCwgaW50IHZhbCl7CiAgICBzZWdbcG9zXSA9IHNlZ1twb3MyXTsKICAgIGlmKGwgPT0gcil7CiAgICAgICAgc2VnW3Bvc10gPSB2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsICsgcikgLyAyOwogICAgaWYoaW5kIDw9IG1pZCl7CiAgICAgICAgcmNbcG9zXSA9IHJjW3BvczJdOwogICAgICAgIGxjW3Bvc10gPSBjbisrOwogICAgICAgIHVwZGF0ZShsLCBtaWQsIGxjW3Bvc10sIGxjW3BvczJdLCBpbmQsIHZhbCk7CiAgICB9CiAgICBlbHNlewogICAgICAgIGxjW3Bvc10gPSBsY1twb3MyXTsKICAgICAgICByY1twb3NdID0gY24rKzsKICAgICAgICB1cGRhdGUobWlkICsgMSwgciwgcmNbcG9zXSwgcmNbcG9zMl0sIGluZCwgdmFsKTsKICAgIH0KICAgIHNlZ1twb3NdID0gc2VnW2xjW3Bvc11dICsgc2VnW3JjW3Bvc11dOwp9CmludCBxdWVyeShpbnQgbCwgaW50IHIsIGludCBwb3MsIGludCBzLCBpbnQgZSl7CiAgICBpZihyIDwgcyB8fCBsID4gZSkgcmV0dXJuIDA7CiAgICBpZihzIDw9IGwgJiYgciA8PSBlKSByZXR1cm4gc2VnW3Bvc107CiAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICByZXR1cm4gcXVlcnkobCwgbWlkLCBsY1twb3NdLCBzLCBlKSArIHF1ZXJ5KG1pZCArIDEsIHIsIHJjW3Bvc10sIHMsIGUpOwp9CmludCBkaXN0aW5jdChpbnQgbCwgaW50IHIpewogICAgcmV0dXJuIHF1ZXJ5KDEsIG4sIHJvb3Rbcl0sIGwsIHIpOwp9CnZvaWQgc29sdmUoaW50IGssIGludCBsLCBpbnQgciwgaW50IHMsIGludCBlKXsKICAgIGlmKHIgPCBsKSByZXR1cm47CiAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICBpbnQgb3B0ID0gLTE7CiAgICBmb3IoaW50IGkgPSBtYXgocywgbWlkKSA7IGkgPD0gZSA7IGkrKyl7CiAgICAgICAgaW50IGN1ciA9IGRpc3RpbmN0KG1pZCwgaSkgKyBkcFtpICsgMV1bayAtIDFdOwogICAgICAgIGlmKGN1ciA+IGRwW21pZF1ba10pewogICAgICAgICAgICBkcFttaWRdW2tdID0gY3VyOwogICAgICAgICAgICBvcHQgPSBpOwogICAgICAgIH0KICAgIH0KICAgIHNvbHZlKGssIGwsIG1pZCAtIDEsIHMsIG9wdCk7CiAgICBzb2x2ZShrLCBtaWQgKyAxLCByLCBvcHQsIGUpOwp9CmludCBtYWluKCl7CiAgICBzY2FuZigiJWQlZCIsICZuLCAmayk7CiAgICBmb3IoaW50IGkgPSAxIDsgaSA8PSBuIDsgaSsrKQogICAgICAgIHNjYW5mKCIlZCIsICZhW2ldKTsKICAgIHJvb3RbMF0gPSBjbisrOwogICAgYnVpbGQoMSwgbiwgcm9vdFswXSk7CiAgICBmb3IoaW50IGkgPSAxIDsgaSA8PSBuIDsgaSsrKXsKICAgICAgICByb290W2ldID0gY24rKzsKICAgICAgICBpZihsYXNbYVtpXV0gPT0gMCkgcm9vdFtpXSA9IHJvb3RbaSAtIDFdOwogICAgICAgIGVsc2UgdXBkYXRlKDEsIG4sIHJvb3RbaV0sIHJvb3RbaSAtIDFdLCBsYXNbYVtpXV0sIDApOwogICAgICAgIGxhc1thW2ldXSA9IGk7CiAgICB9CiAgICBtZW1zZXQobGFzLCAwLCBzaXplb2YgbGFzKTsKICAgIGZvcihpbnQgaSA9IG4gOyBpID49IDEgOyBpLS0pewogICAgICAgIGRwW2ldWzFdID0gZHBbaSArIDFdWzFdOwogICAgICAgIGlmKGxhc1thW2ldXSA9PSAwKSBkcFtpXVsxXSsrOwogICAgICAgIGxhc1thW2ldXSA9IGk7CiAgICB9CiAgICBmb3IoaW50IGkgPSAyIDsgaSA8PSBrIDsgaSsrKQogICAgICAgIHNvbHZlKGksIDEsIG4sIDEsIG4pOwogICAgcHJpbnRmKCIlZFxuIiwgZHBbMV1ba10pOwogICAgcmV0dXJuIDA7Cn0=