/* Auteur: Nicolas JANEY          */
/* nicolas.janey@univ-fcomte.fr   */
/* Fevrier 2005                   */

import java.io.*;

public class TriageTableau3 {
  static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in));

  /* Fonction d'affichage de tous les entiers contenus    */
  /* dans un tableau d'entiers                            */

  public static void affichageTableau(int [] t) {
    int i;
  /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus    */
    for ( i = 0 ; i < t.length ; i++ )
      System.out.println(t[i]);
  }

  /* Fonction d'initialisation de tous les entiers        */
  /* contenus dans un tableau d'entiers                   */
  /* avec une valeur tiree au sort entre 0 et max inclus  */

  public static void initialisationTableau(int [] t,int max) {
    int i;
  /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus    */
    for ( i = 0 ; i < t.length ; i++ ) {
  /* Initialisation de t[i] avec un entier tire                */
  /* au hasard entre 0.0 (inclu) et max+1 (exclu)              */
      t[i] =(int) ((max+1)*Math.random()); }
  }

  /* Fonction de reorganisation d'un tableau d'entiers pour    */
  /* placer toutes les valeurs paires aux petits indices       */
  /* et les valeurs impaires aux indices superieurs            */

  public static void triageTableau(int [] t) {
  /* Declaration et initialisation d'une variable entiere      */
  /* de recherche de l'indice de la premiere valeur impaire    */
  /* du tableau t                                              */
    int ipr = 0;
  /* Declaration et initialisation d'une variable entiere      */
  /* de recherche de l'indice de la derniere valeur            */
  /* paire du tableau t                                        */
    int imp = t.length-1;
  /* Variable auxiliaire de permutation                        */
    int aux;
  /* Tant qu'une les deux indices ne se sont pas croises       */
    while ( ipr < imp ) {
  /* Recherche par parcours a partir de l'indice donne par ipr */
  /* de l'indice de la premiere valeur impaire du tableau t    */  
      while ( ( t[ipr]%2 == 0 ) && ( ipr < t.length ) )
        ipr++;
  /* Recherche par parcours en arriere a partir de l'indice    */
  /* donne par imp de l'indice de la premiere valeur paire     */
  /* du tableau t                                              */  
      while ( ( t[imp]%2 == 1 ) && ( imp >= 0 ) )
        imp--;
  /* Si une permutation doit etre realisee                     */
      if ( ipr < imp ) {
        aux = t[ipr];
        t[ipr] = t[imp];
        t[imp] = aux; } }
  }

  /* Fonction principale                                  */
  
  public static void main(String [] args) throws IOException {
  /* Definition et allocation d'un tableau de 10 entiers       */
  /* tires au sort entre 0 et 5                                */
    int [] tab = new int[10];
    initialisationTableau(tab,5);
    System.out.println("Le tableau contient les valeurs suivantes:");
  /* Appel a la fonction d'affichage                           */
    affichageTableau(tab);
    System.out.println();
  /* Reorganisation de tab par appel a triageTableau           */
    triageTableau(tab);
  /* Nouvel affichage de tab (reorganise) par appel            */
  /* a la fonction d'affichage                                 */
    affichageTableau(tab);
  }
}