#include <bits/stdc++.h>   const long long kot = LLONG_MAX;   using kk = long double;   const long long int alpha = 1e18;   using namespace std;   int gcd(long long int a, long long int b) {     if (a == 0) return b;     if (b == 0) return a;     if (a == b) return a;     if (a > b) return gcd(a - b, b);     return gcd(a, b - a);   }   int largest(long long int arr[], long long int n) {     return *max_element(arr, arr + n);   }   long long int lcm(long long int a, long long int b) {     return (a * b) / gcd(a, b);   }   void sieve(bool primes[], int x) {     primes[1] = false;     for (int i = 2; i * i <= x; i++) {       if (primes[i] == true) {         for (int j = 2; j * i <= x; j++) primes[i * j] = false;       }     }   }   long long int power(long long int x, unsigned long long int y,                       long long int p) {     long long int res = 1;     x = x % p;     while (y > 0) {       if (y & 1) res = (res * x) % p;       y = y >> 1;       x = (x * x) % p;     }     return res;   }   class gfg {    public:     int sumDigits(int no) { return no == 0 ? 0 : no % 10 + sumDigits(no / 10); }   };   bool isPerfectSquare(long double x) {     long double sr = sqrt(x);     return ((sr - floor(sr)) == 0);   }   bool comp(int a, int b) { return (a < b); }   vector<long long int> ve;   void divisors(long long int n) {     for (int i = 1; i <= sqrt(n); i++) {       if (n % i == 0) {         if (n / i == i)           ve.emplace_back(i);         else           ve.emplace_back(i);         ve.emplace_back(n / i);       }     }   }   bool isPrime(long long int n) {     if (n == 1) {       return false;     }     long long int i = 2;     while (i * i <= n) {       if (n % i == 0) {         return false;       }       i += 1;     }     return true;   }   int gcdofarray(long long int v[], long long int n) {     long long int result = v[0];     for (long long int i = 1; i < n; i++) result = gcd(v[i], result);     return result;   }   int sumofdigits(long long int n) {     long long int sum = 0;     while (n > 0) {       sum += n % 10;       n /= 10;     }     return sum;   }   bool powertwo(long long int x) { return x && (!(x & (x - 1))); }   long long int finduncommonsubsequence(string str, string s) {     if (!str.compare(s)) {       return 0;     }     return max(str.length(), s.length());   }   void reversec(string str) {     for (long long int i = str.length() - 1; i >= 0; i--) cout << str[i];   }   long long int subCount(long long int arr[], long long int n, long long int k) {     long long int mod[k];     memset(mod, 0, sizeof(mod));     long long int cumSum = 0;     for (long long int i = 0; i < n; i++) {       cumSum *= arr[i];       mod[((cumSum % k) + k) % k]++;     }     long long int result = 0;     for (long long int i = 0; i < k; i++)       if (mod[i] > 1) result += (mod[i] * (mod[i] - 1)) / 2;     result += mod[0];     return result;   }   void solve() {     long long int t = 1;     while (t--) {       long long int n;       cin >> n;       long long int arr[n];       long long int i, sum = 0;       for (i = 0; i < n; i++) {         cin >> arr[i];         sum += arr[i];       }       long long int j = 0, k = 0;       while (j < n) {         if (j % 2 == 0) {           k += arr[j] / 2;         } else {           k += arr[j] - arr[j] / 2;         }         j++;       }       cout << min(k, sum - k) <<   n ;     }   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     ;     solve();   }