#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define EGRY \
ios_base::sync_with_stdio(false); \
cin.tie(NULL);
const int MAX = 100 + 50;
const int MOD = 1e9 + 7;
int arr[MAX];
int num_of_evens(int n)
{
return n / 2;
}
int num_of_odds(int n)
{
if (n % 2 == 0)
{
return n / 2;
}
else
{
return (n / 2) + 1;
}
}
bool is_even(int n)
{
return (n % 2 == 0);
}
bool is_odd(int n)
{
return !is_even(n);
}
int mem[MAX][MAX][2];
int dp(int idx, int evens, int odds, bool last_is_odd, int n)
{
if (idx == n)
{
return 0;
}
int &ret = mem[idx][evens][last_is_odd];
if (ret != -1)
{
return ret;
}
if (idx == 0)
{
if (arr[idx] != 0)
{
return ret = dp(idx + 1, evens, odds, arr[idx] % 2, n);
}
else
{
int pick_even = INT_MAX, pick_odd = INT_MAX;
if (evens > 0)
{
pick_even = dp(idx + 1, evens - 1, odds, false, n);
}
if (odds > 0)
{
pick_odd = dp(idx + 1, evens, odds - 1, true, n);
}
return ret = min(pick_even, pick_odd);
}
}
if (arr[idx] != 0)
{
bool cur_is_odd = arr[idx] % 2;
bool is_different = (cur_is_odd != last_is_odd);
return ret = is_different + dp(idx + 1, evens, odds, arr[idx] % 2, n);
}
int pick_even = INT_MAX, pick_odd = INT_MAX;
if (evens > 0)
{
bool cur_is_odd = false;
bool is_different = (cur_is_odd != last_is_odd);
pick_even = is_different + dp(idx + 1, evens - 1, odds, false, n);
}
if (odds > 0)
{
bool cur_is_odd = true;
bool is_different = (cur_is_odd != last_is_odd);
pick_odd = is_different + dp(idx + 1, evens, odds - 1, true, n);
}
return ret = min(pick_even, pick_odd);
}
void solve()
{
int n;
cin >> n;
int evens = num_of_evens(n);
int odds = num_of_odds(n);
for (int i = 0; i < n; i++)
{
cin >> arr[i];
if (arr[i] == 0)
{
continue;
}
if (is_even(arr[i]))
{
evens--;
}
else
{
odds--;
}
}
memset(mem, -1, sizeof(mem));
int space = evens + odds;
cout << dp(0, evens, odds, false, n);
}
int main()
{
EGRY ll t = 1;
// cin >> t;
while (t--)
{
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKCiNkZWZpbmUgRUdSWSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IFwKICAgIGNpbi50aWUoTlVMTCk7Cgpjb25zdCBpbnQgTUFYID0gMTAwICsgNTA7CmNvbnN0IGludCBNT0QgPSAxZTkgKyA3OwoKaW50IGFycltNQVhdOwoKaW50IG51bV9vZl9ldmVucyhpbnQgbikKewogICAgcmV0dXJuIG4gLyAyOwp9CgppbnQgbnVtX29mX29kZHMoaW50IG4pCnsKICAgIGlmIChuICUgMiA9PSAwKQogICAgewogICAgICAgIHJldHVybiBuIC8gMjsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXR1cm4gKG4gLyAyKSArIDE7CiAgICB9Cn0KCmJvb2wgaXNfZXZlbihpbnQgbikKewogICAgcmV0dXJuIChuICUgMiA9PSAwKTsKfQoKYm9vbCBpc19vZGQoaW50IG4pCnsKICAgIHJldHVybiAhaXNfZXZlbihuKTsKfQoKaW50IG1lbVtNQVhdW01BWF1bMl07CgppbnQgZHAoaW50IGlkeCwgaW50IGV2ZW5zLCBpbnQgb2RkcywgYm9vbCBsYXN0X2lzX29kZCwgaW50IG4pCnsKCiAgICBpZiAoaWR4ID09IG4pCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgaW50ICZyZXQgPSBtZW1baWR4XVtldmVuc11bbGFzdF9pc19vZGRdOwoKICAgIGlmIChyZXQgIT0gLTEpCiAgICB7CiAgICAgICAgcmV0dXJuIHJldDsKICAgIH0KCiAgICBpZiAoaWR4ID09IDApCiAgICB7CiAgICAgICAgaWYgKGFycltpZHhdICE9IDApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gcmV0ID0gZHAoaWR4ICsgMSwgZXZlbnMsIG9kZHMsIGFycltpZHhdICUgMiwgbik7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGludCBwaWNrX2V2ZW4gPSBJTlRfTUFYLCBwaWNrX29kZCA9IElOVF9NQVg7CgogICAgICAgICAgICBpZiAoZXZlbnMgPiAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwaWNrX2V2ZW4gPSBkcChpZHggKyAxLCBldmVucyAtIDEsIG9kZHMsIGZhbHNlLCBuKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKG9kZHMgPiAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwaWNrX29kZCA9IGRwKGlkeCArIDEsIGV2ZW5zLCBvZGRzIC0gMSwgdHJ1ZSwgbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiByZXQgPSBtaW4ocGlja19ldmVuLCBwaWNrX29kZCk7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChhcnJbaWR4XSAhPSAwKQogICAgewogICAgICAgIGJvb2wgY3VyX2lzX29kZCA9IGFycltpZHhdICUgMjsKICAgICAgICBib29sIGlzX2RpZmZlcmVudCA9IChjdXJfaXNfb2RkICE9IGxhc3RfaXNfb2RkKTsKICAgICAgICByZXR1cm4gcmV0ID0gaXNfZGlmZmVyZW50ICsgZHAoaWR4ICsgMSwgZXZlbnMsIG9kZHMsIGFycltpZHhdICUgMiwgbik7CiAgICB9CgogICAgaW50IHBpY2tfZXZlbiA9IElOVF9NQVgsIHBpY2tfb2RkID0gSU5UX01BWDsKCiAgICBpZiAoZXZlbnMgPiAwKQogICAgewogICAgICAgIGJvb2wgY3VyX2lzX29kZCA9IGZhbHNlOwogICAgICAgIGJvb2wgaXNfZGlmZmVyZW50ID0gKGN1cl9pc19vZGQgIT0gbGFzdF9pc19vZGQpOwogICAgICAgIHBpY2tfZXZlbiA9IGlzX2RpZmZlcmVudCArIGRwKGlkeCArIDEsIGV2ZW5zIC0gMSwgb2RkcywgZmFsc2UsIG4pOwogICAgfQoKICAgIGlmIChvZGRzID4gMCkKICAgIHsKICAgICAgICBib29sIGN1cl9pc19vZGQgPSB0cnVlOwogICAgICAgIGJvb2wgaXNfZGlmZmVyZW50ID0gKGN1cl9pc19vZGQgIT0gbGFzdF9pc19vZGQpOwogICAgICAgIHBpY2tfb2RkID0gaXNfZGlmZmVyZW50ICsgZHAoaWR4ICsgMSwgZXZlbnMsIG9kZHMgLSAxLCB0cnVlLCBuKTsKICAgIH0KCiAgICByZXR1cm4gcmV0ID0gbWluKHBpY2tfZXZlbiwgcGlja19vZGQpOwp9Cgp2b2lkIHNvbHZlKCkKewogICAgaW50IG47CiAgICBjaW4gPj4gbjsKCiAgICBpbnQgZXZlbnMgPSBudW1fb2ZfZXZlbnMobik7CiAgICBpbnQgb2RkcyA9IG51bV9vZl9vZGRzKG4pOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgewogICAgICAgIGNpbiA+PiBhcnJbaV07CgogICAgICAgIGlmIChhcnJbaV0gPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX2V2ZW4oYXJyW2ldKSkKICAgICAgICB7CiAgICAgICAgICAgIGV2ZW5zLS07CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIG9kZHMtLTsKICAgICAgICB9CiAgICB9CgogICAgbWVtc2V0KG1lbSwgLTEsIHNpemVvZihtZW0pKTsKCiAgICBpbnQgc3BhY2UgPSBldmVucyArIG9kZHM7CgogICAgY291dCA8PCBkcCgwLCBldmVucywgb2RkcywgZmFsc2UsIG4pOwp9CgppbnQgbWFpbigpCnsKICAgIEVHUlkgbGwgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKCiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIHNvbHZlKCk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K