Newbie asking help for program debug

Hey
I am currently working on a program to control 3 LEDs with an arduino. Here is the process:
no push-all are off
one push-all are on
two push-2 are on
three push-3 are on
four push-all are off again
five push- all are on again
...
redo the same process over and over again
I have finished the code, however there are always 2 LEDs constantly lit up, and I cannot seem the find the problem. Desperate for help, and here is the program

const int  buttonPin = 13;        
const int Pin[3]={9,10,11};
// Variables will change:
int buttonPushCounter = 0;   
int buttonState = 0;         
int lastButtonState = 0;     
int Val=0;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(Pin[1],OUTPUT);
  pinMode(Pin[2],OUTPUT);
  pinMode(Pin[3],OUTPUT);
  Serial.begin(9600);
  lastButtonState=LOW;
}


void loop() {
  buttonState = digitalRead(buttonPin);

  if (buttonState != lastButtonState) {
    Serial.println("Button State Change");
    if (buttonState == HIGH) {
      buttonPushCounter++;
      Serial.println("Button pushed");
    } 
    else if(buttonState ==LOW){
      Serial.println("Lifted");
    }
    delay(500);
  }
  else{
    Serial.println("Not Changed");
  }
  lastButtonState = buttonState;

  Val=buttonPushCounter%4;

  Write();
}

void Write(){
  if(Val==0){
    //none
    digitalWrite(Pin[1],LOW);
    digitalWrite(Pin[2],LOW);
    digitalWrite(Pin[2],LOW);
    Serial.println("case0");
  }
  else if(Val==1){
    //all
    digitalWrite(Pin[1],HIGH);
    digitalWrite(Pin[2],HIGH);
    digitalWrite(Pin[3],HIGH);
    Serial.println("case1");
  }
  else if(Val==2){
    // 2
    digitalWrite(Pin[1],LOW);
    digitalWrite(Pin[2],HIGH);
    digitalWrite(Pin[3],HIGH);
    Serial.println("case2");
  }
  else if(Val==3){
    // 1
    digitalWrite(Pin[1],LOW);
    digitalWrite(Pin[2],LOW);
    digitalWrite(Pin[3],HIGH);
    Serial.println("case3");
  }
}

Is your switch connected via a pulldown resistor?

const int Pin[3] = {9, 10, 11};

An array with 3 levels numbered 0, 1 and 2

  pinMode(Pin[1], OUTPUT);
  pinMode(Pin[2], OUTPUT);
  pinMode(Pin[3], OUTPUT);

There is no level 3 in the array

    digitalWrite(Pin[1], LOW);
    digitalWrite(Pin[2], LOW);
    digitalWrite(Pin[2], LOW);  //forgot to change this after copy/paste ?
    digitalWrite(Pin[1], HIGH);
    digitalWrite(Pin[2], HIGH);
    digitalWrite(Pin[3], HIGH);

There is no level 3 in the array

When your program doesn't do something that you think it is supposed to be doing, I find the easiest way to debug it is to get the computer to tell me what is ACTUALLY going on. You have some serial prints in there showing when a button gets pressed or not. Is your output showing what you would expect? Does it print out the right thing when you press a button?
How about the val variable? Is it getting set right according to what you would expect from pressing and releasing the buttons?

That being said, UKHeliBob is correct. Arrays are 0 based, not 1 based. So you should be using Pin[0] - Pin[2] instead of Pin[1] - Pin[3]. Also, you may need to debounce your button presses, although this would not cause the symptom you're seeing.

Also, pin 13 is used for the built-in LED. You may want to use a different input pin.

And your code for 3 push doesn't match the description. Description is three push-3 are on. Code is showing 1 and 2 off, 3 on.