STM32 Delay for serials

HardwareSerial Serial2(USART2); 
HardwareSerial Serial3(USART3);

void setup() 
{
Serial.begin(19200);   // PA9 PA10
Serial2.begin(19200);  // PA3 PA2
Serial3.begin(19200);  // PB11 PB10
delay(3000);
Serial.println("Hello Serial One");
Serial2.println("Hello Serial Two");
Serial3.println("Hello Serial Three");
}

void loop() 
{
  if (Serial.available()) 
  {
    Serial.println("Delay one second and this message appear in serial monitor");
    delay(1000);
  }
   if (Serial2.available()) 
  {
    Serial2.println("Delay two seconds and this message appear in serial monitor");
    delay(2000);
  }
   if (Serial3.available()) 
  {
    Serial3.println("Delay three seconds and this message appear in serial monitor");
    delay(3000);
  }
}

This is the code ,
I want for each serial to be the delay put in the loop and then appear the message from if (Serial.available()) but from this code the message appears after six seconds.
(Serial.available ()) does not listen to the delay but takes them all
I tried to put in code Serial.listen() but this doesn't work , I think Serial.listen() need SoftwareSerial but i think SoftwareSerial doesn't work for STM32F103C8 , as i tried , only HardwareSerial it's working
Please help me to fix the code, as I said above each serial to have its delay , Thanks !

It's hard to understand you. But I notice that your delay comes after your Serialx.println()'s. So there will be no delay between receiving a character, and the print out.