button counter not working

I am trying to on and off 3 led which is connected to pin (11,10,9 respectively) from one push button which is connected to pin (13) with resistor. one by one on each button presses. if one led in HIGH state other two should be in LOW state. I have tried with following code no error in compiling but functionality not working.

// this constant won't change:
const int  buttonPin = 13;    // the pin that the pushbutton is attached to
const int ledPin = 11;       // the pin that the LED is attached to
const int ledPin1 = 10;       // the pin that the LED is attached to
const int ledPin2 = 9;       // the pin that the LED is attached to

// Variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button

void setup() {
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize the LED as an output:
  pinMode(ledPin, OUTPUT);
   pinMode(ledPin1, OUTPUT);
    pinMode(ledPin2, OUTPUT);
  // initialize serial communication:
  Serial.begin(9600);
}


void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);
    } else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println("off");
    }
    // Delay a little bit to avoid bouncing
    delay(100);
  }
  // save the current state as the last state,
  //for next time through the loop
  lastButtonState = buttonState;



  
  if (buttonPushCounter % 2== 0) {
    digitalWrite(ledPin, HIGH);
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
  } else if (buttonPushCounter % 3== 0) {
     digitalWrite(ledPin, LOW);
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
  }
   else if (buttonPushCounter % 4== 0){
        digitalWrite(ledPin, LOW);
        digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    
  }

}

Pin 13 is the Arduino led pin, you might want to use a different pin for the button.

Also you can save yourself a resistor and some wire by moding the button pin INPUT_PULLUP and connecting it to the button and the button directly to ground. INPUT_PULLUP uses the AVR on-chip pullup resistor to power the pin through 20K to 50K ohms. As long as the pin is not grounded (button not pressed, unterminated) it will read HIGH. Press the button and once the bouncing is done it will read LOW, opposite logic to what you have.

With that delay() in there you won't be able to do much more like make the leds blink.

my wiring settings are working fine when i am using it with on and off on every four counter with single led but trying do make it work with every other push counter for all three leds

i have solved my problempushbuttonCounter++ changed to

 buttonPushCounter = buttonPushCounter +1;
      if(buttonPushCounter >3){buttonPushCounter=0;}   if (buttonPushCounter == 1) {
    digitalWrite(ledPin, HIGH);
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
  } 
if (buttonPushCounter == 2) {
     digitalWrite(ledPin, LOW);
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
  }
if (buttonPushCounter == 3){
        digitalWrite(ledPin, LOW);
        digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    
  }

simply and easy