#include <bits/stdc++.h>   using namespace std;   long long fib[100001];   void fibonacci() {     fib[0] = 1;     fib[1] = 1;     fib[2] = 2;     for (long long i = 3; i <= 100000; i++) {       fib[i] = fib[i - 1] + fib[i - 2];       fib[i] = fib[i] % 1000000007;     }   }   double dist(double x, double y, double a, double b) {     return sqrt((x - a) * (x - a) + (y - b) * (y - b));   }   char alphabet[26] = { a ,  b ,  c ,  d ,  e ,  f ,  g ,  h ,  i ,                         j ,  k ,  l ,  m ,  n ,  o ,  p ,  q ,  r ,                         s ,  t ,  u ,  v ,  w ,  x ,  y ,  z };   long long power(long long x, unsigned long long y) {     long long res = 1;     while (y > 0) {       if (y & 1) res = res * x;       y = y >> 1;       x = x * x;     }     return res;   }   long long mpower(long long x, unsigned long long y, long long p) {     long long res = 1;     x = x % p;     while (y > 0) {       if (y & 1) res = (res * x) % p;       y = y >> 1;       x = (x * x) % p;     }     return res;   }   long long gcd(long long a, long long b) {     if (b == 0) return a;     return gcd(b, a % b);   }   void swap(long long* a, long long* b) {     long long temp = *a;     *a = *b;     *b = temp;   }   char nxtchr(long long c) {     if (c == 1) return  1 ;     if (c == 2) return  2 ;     if (c == 3) return  3 ;     if (c == 4) return  4 ;     if (c == 5) return  5 ;     if (c == 6) return  6 ;     if (c == 7) return  7 ;     if (c == 8) return  8 ;     if (c == 9) return  9 ;     if (c == 0) return  0 ;     return -1;   }   long long dislet(string s) {     long long i = 0, count = 0;     while (i < s.size()) {       char c = s[i];       long long j = i;       count++;       while (s[j] == c) j++;       i = j;     }     return count;   }   long long findIndex(long long key, vector<pair<long long, long long>> v,                       long long n) {     long long l = 0, r = n - 1;     while (l != r) {       if (l < r) {         long long mid = (l + r) / 2;         if (v[mid].first > key)           r = mid;         else           l = mid + 1;       }     }     return l;   }   vector<long long> ranks;   vector<long long> parent;   vector<long long> maxim;   void make_set(long long v) {     parent[v] = v;     ranks[v] = 0;   }   long long find_Set(long long v) {     if (parent[v] == v) return v;     return parent[v] = find_Set(parent[v]);   }   void union_sets(long long a, long long b) {     a = find_Set(a);     b = find_Set(b);     if (a != b) {       if (ranks[a] < ranks[b]) swap(&a, &b);       parent[b] = a;       if (ranks[a] == ranks[b]) ranks[a]++;     }   }   void dfsutil(long long i, vector<long long> adj[], bool visited[]) {     visited[i] = true;     for (long long j = 0; j < adj[i].size(); j++) {       if (!visited[adj[i][j]]) dfsutil(adj[i][j], adj, visited);     }   }   long long dfs(vector<long long> adj[], long long present[]) {     bool visited[26];     long long count = 0;     for (long long i = 0; i < 26; i++) visited[i] = false;     for (long long i = 0; i < 26; i++) {       if (present[i] && !visited[i]) {         dfsutil(i, adj, visited);         count++;       }     }     return count;   }   int32_t main() {     long long n;     cin >> n;     string s;     cin >> s;     long long i = 0;     long long count = 0;     while (i < s.size()) {       if (i % 2 == 0) {         char c = s[i];         long long j = i + 1;         while (s[j] == c && j <= s.size()) {           s.erase(s.begin() + j);           count++;         }         i = j;       } else         i++;     }     if (s.size() % 2 != 0 && count < n) {       s.erase(s.end() - 1);       count++;     }     cout << count <<   n ;     cout << s <<   n ;   }