10 5 1000000000
1 1 1 2 2 1 2 2 2 2
 5 3 3
1 2 2 1 1
 2 4 1
1 1
 1 1000000000 1000000000
100000
 5 3 2
1 1 2 1 1
 5 2 4
1 2 3 2 1
 1 10 10
1

10000000000
 0
 2
 0
 7
 0
 0

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
long long n, m, k, a[maxn], l, r, s, re;
deque<pair<int, int> > st, v, u;
bool f;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> k >> m;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
  }
  int g = 1;
  a[n] = -1;
  for (int i = 1; i < n + 1; ++i) {
    if (a[i] != a[i - 1]) {
      if (st.size() && st.back().first == a[i - 1]) {
        if ((g + st.back().second) % k == 0) {
          st.pop_back();
        } else
          st.back().second = (g + st.back().second) % k;
      } else {
        if (g % k) st.push_back({a[i - 1], g % k});
      }
      g = 1;
    } else
      g++;
  }
  while (st.size() > 1 && st[0].first == st.back().first &&
         (st[0].second + st.back().second) % k == 0) {
    re += st[0].second + st.back().second;
    v.push_back(st.front());
    u.push_front(st.back());
    st.pop_front();
    st.pop_back();
  }
  if (st.size() > 1 && st[0].first == st.back().first) {
    re += st[0].second + st.back().second +
          (m - 1) * ((st[0].second + st.back().second) % k);
    re -= (st[0].second + st.back().second) * m;
  }
  if (st.size() == 1) {
    int x = st.front().second;
    if ((x * m) % k == 0) {
      st.pop_back();
    } else
      re += (x * m) % k;
  }
  if (!st.size()) {
    cout << 0;
    return 0;
  }
  int h = st.size();
  while (st.size() && h > 1) {
    re += st.front().second * m;
    st.pop_front();
  }
  cout << re;
  return 0;
}
