How to only instantiate objects once?

So I have a world generation script here and it’s using an array to pick random blocks but I currently only have one block set up. But the problem is when it generates it creates all the blocks perfectly fine and all but the thing is that it creates like 3 times the blocks on the same position, say if I have a block [here] then there would be 2 other blocks in there occupying the space as well and that causes lag and I don’t want that. How do I only create one copy on the place without creating multiple copies of already existing chunks?

Here’s my script

var width_x : int;
var height : int;
var width_z : int;
var player : Transform;
var originBlock : Transform;
var Blocks : GameObject[];

function Start () {

player.transform.position.x = originBlock.transform.position.x;
player.transform.position.y = originBlock.transform.position.y + 5;
player.transform.position.z = originBlock.transform.position.z;

}

function Update () {

for(var x : int = 0; x < width_x; x++){
     

     if(x < width_x){
     
     Instantiate(Blocks[Random.Range(0, Blocks.Length)], Vector3(x * 1, 0, 0), Quaternion.identity);
     
     }
     
          
       if(Input.GetKeyDown(KeyCode.G)){
  
  Debug.Log("Blocks: " + x);
  
  }
     
     

  }
  


}

just put a bool around it and set it to false after completion