```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(reader, &n)
evens := make([]int, 0)
odds := make([]int, 0)
var total int64 = 0
for i := 0; i < n; i++ {
var x int
fmt.Fscan(reader, &x)
total += int64(x)
if x%2 == 0 {
evens = append(evens, x)
} else {
odds = append(odds, x)
}
}
sort.Slice(evens, func(i, j int) bool { return evens[i] > evens[j] })
sort.Slice(odds, func(i, j int) bool { return odds[i] > odds[j] })
maxDeleted := int64(0)
if len(evens) > 0 {
var takeE, takeO int
if len(evens) > len(odds) {
takeE = len(odds) + 1
takeO = len(odds)
} else {
takeE = len(evens)
takeO = len(evens)
}
var sum int64 = 0
for i := 0; i < takeE; i++ {
sum += int64(evens[i])
}
for i := 0; i < takeO; i++ {
sum += int64(odds[i])
}
if sum > maxDeleted {
maxDeleted = sum
}
}
if len(odds) > 0 {
var takeO, takeE int
if len(odds) > len(evens) {
takeO = len(evens) + 1
takeE = len(evens)
} else {
takeO = len(odds)
takeE = len(odds)
}
var sum int64 = 0
for i := 0; i < takeO; i++ {
sum += int64(odds[i])
}
for i := 0; i < takeE; i++ {
sum += int64(evens[i])
}
if sum > maxDeleted {
maxDeleted = sum
}
}
fmt.Println(total - maxDeleted)
}
```