The code uploaded successfuly but it doesn't work

#include <LiquidCrystal_I2C.h>
#include <MFRC522.h>
#include <Servo.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
MFRC522 rc522(8, 12);
Servo myservo;

const byte PROGMEM IDs[3][4] = {
  { 0xB3, 0x60, 0x12, 0xAA },
  { 0xD3, 0x92, 0x83, 0xB7 },
  { 0xC9, 0xBB, 0xF3, 0xC0 }
};
int SOLDE[3] = { 100, 50, 25 };

int IDsolde() {
  for (int i = 0; i < 3; i++) {
    if (memcmp_P(rc522.uid.uidByte, IDs[i], 3) == 0) {
      return i;
    }
  }
  return -1;
}

void setup() {
  pinMode(2, INPUT);
  pinMode(4, OUTPUT);
  rc522.PCD_Init();
  myservo.attach(3);
  myservo.write(0);
  lcd.init();
  lcd.backlight();
  lcd.setCursor(4, 0);
  lcd.print(F("WELCOME"));
}

void loop() {
  if (rc522.PICC_IsNewCardPresent() && rc522.PICC_ReadCardSerial()) {
    int m = IDsolde();
    if (m != -1) {
      int S = SOLDE[m];
      if (S > 0) {
        digitalWrite(4, HIGH);
        delay(100);
        digitalWrite(4, LOW);
        lcd.setCursor(2, 0);
        lcd.print(F("Votre Solde:"));
        lcd.setCursor(6, 1);
        lcd.print(S);
        lcd.print(F("DH"));
        unsigned long startTime = millis();
        while (millis() - startTime < 4000) {
          if (digitalRead(2) == HIGH) {
            SOLDE[m] -= 5;
            myservo.write(90);
            lcd.clear();
            lcd.setCursor(5, 0);
            lcd.print(F("ENJOY"));
            delay(5000);
            myservo.write(0);
            delay(25);
            break;
          }
        }
      } else {
        digitalWrite(4, HIGH);
        delay(100);
        digitalWrite(4, LOW);
        delay(100);
        digitalWrite(4, HIGH);
        delay(100);
        digitalWrite(4, LOW);
        lcd.setCursor(2, 0);
        lcd.print(F("solde kinem"));
        lcd.setCursor(6, 1);
        lcd.print(S);
        lcd.print(F("DH"));
        delay(4000);
      }
    } else {
      lcd.clear();
      lcd.setCursor(5, 0);
      lcd.print(F("Chfaar"));
      for (int i = 1; i < 50; i++) {
        digitalWrite(4, HIGH);
        delay(100);
        digitalWrite(4, LOW);
        delay(100);
      }
    }
    lcd.clear();
    lcd.setCursor(4, 0);
    lcd.print(F("WELCOME"));
  }
}