I2c and big numbers

hi…
how i can receive a big number??

MASTER//////
#include <Wire.h>
long x = 0;
void setup()
{
Wire.begin();
Serial.begin(9600);
}

void loop()
{
Wire.beginTransmission(1);
Wire.write(x);
Wire.endTransmission();

delay(1000);

x++ ;

Serial.println(x);

}


SLAVE/////

#include <Wire.h>

//const byte slaveId = 1;
long x;
void setup()
{
Wire.begin(1);
Wire.onReceive(receiveEvent);

pinMode(13,OUTPUT);
digitalWrite(13,LOW);
Serial.begin(9600);
}

void loop()
{

}

void receiveEvent(int howMany)
{

while(Wire.available() > 0)
{
x = Wire.read();

digitalWrite(13,HIGH);
delay(x);
digitalWrite(13,LOW);
delay(x);
Serial.println(x);
}
}

(deleted)

65535 = 2^16 - 1
Or 4 byte unsigned long, 2^32 - 1

Please read Nick Gammon's post at the top of this Forum on the use of code tags when posting here.

// MASTER
const int SLAVE_ADDRESS = 1;
#include <Wire.h>
unsigned long x = 0;

void setup() {
  Wire.begin();
  Serial.begin(9600);
}

void loop() {
  Wire.beginTransmission(SLAVE_ADDRESS);
  Wire.write(x >> 24);
  Wire.write(x >> 16);
  Wire.write(x >> 8);
  Wire.write(x);
  Wire.endTransmission();

  delay(1000);
  x++ ;
  Serial.println(x);
}
//SLAVE/////
const int SLAVE_ADDRESS = 1;
#include <Wire.h>

void setup() {
  Wire.begin(SLAVE_ADDRESS);
  Wire.onReceive(receiveEvent);

  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  Serial.begin(9600);
}

void loop() {
}

void receiveEvent(int howMany) {
  if (howMany == 4) {
    unsigned long x = Wire.read();
    x *= 256;
    x |= Wire.read();
    x *= 256;
    x |= Wire.read();
    x *= 256;
    x |= Wire.read();

    digitalWrite(13, HIGH);
    delay(x);
    digitalWrite(13, LOW);
    delay(x);
    Serial.println(x);
  }
  else
    while (Wire.available())
      Wire.read();
}