import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Scanner;

public class Parity {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner br = new Scanner(System.in);
		int n = br.nextInt();
		br.nextLine();
		ArrayList<Integer> liste = new ArrayList<Integer>();
		
		for (int i = 0; i < n; i++) {
			
			liste.add(br.nextInt());
			
		}
		
		ArrayList<Integer> liste2 = new ArrayList<Integer>(liste);
		
		
		int firstdelete;
		int random = (int) Math.round(Math.random()*n-1); 
		firstdelete = liste.get(random);
		//System.out.println("suppresion premier : " + firstdelete);
		liste.remove(random);
		
		Boolean adelete; // true = impare  false = paire
		Boolean premierdel;
		if (firstdelete%2 != 0) {
			premierdel = false;
			adelete = false;
		}else {
			adelete = true;
			premierdel = true;
		}
		
		Boolean test = true; //test si on peut encore supprimer des nombres
		Boolean trouve = true;
		

			
		while (trouve == true) {
			trouve = false;
			for (int i = 0; i < liste.size() && test == true; i++) {
				if(adelete == false) {
					if(liste.get(i)%2 == 0 && trouve == false) {
						adelete = true;
						trouve = true;
						//System.out.println("suppresion de : " + liste.get(i));
						liste.remove(i);
					}
				}else {
					if(liste.get(i)%2 != 0 && trouve == false) {
						adelete = false;
						trouve = true;
						//System.out.println("suppresion de : " + liste.get(i));
						liste.remove(i);
					}
				}
				
			}
		}
		int retour1 = 0;
		if (liste.size() == 0) {
			retour1 = 0;
		}else {
			for (int i = 0; i < liste.size(); i++) {
				retour1 += liste.get(i);
			}
			
		}
		
		//deuxieme test
		
		if(premierdel == false) {
			adelete = false;
		}else {
			adelete = true;
		}
		
		
		test = true; //test si on peut encore supprimer des nombres
		trouve = true;
		

			
		while (trouve == true) {
			trouve = false;
			for (int i = 0; i < liste2.size() && test == true; i++) {
				if(adelete == false) {
					if(liste2.get(i)%2 == 0 && trouve == false) {
						adelete = true;
						trouve = true;
						//System.out.println("suppresion de : " + liste.get(i));
						liste2.remove(i);
					}
				}else {
					if(liste2.get(i)%2 != 0 && trouve == false) {
						adelete = false;
						trouve = true;
						//System.out.println("suppresion de : " + liste.get(i));
						liste2.remove(i);
					}
				}
				
			}
		}
		int retour2 = 0;
		if (liste2.size() == 0) {
			retour2 = 0;
		}else {
			for (int i = 0; i < liste2.size(); i++) {
				retour2 += liste2.get(i);
			}
		}
		

		if (retour1 >= retour2) {
			System.out.println(retour2);
		}else {
			System.out.println(retour1);
		}
		//System.out.println(Arrays.toString(liste2.toArray()));
	}

}
