Changing I2C Addresses For Identical Sensors

I’m using the X-NUCLEO-53L0A1 expansion board for the VL53L0X ToF chips. It includes attachments for two satellites. I wish to read data from all three of the sensors. However I’m receiving TIMEOUT issues. Only Sensor3 outputs values that are correct. I’m not sure if this is an issue with addressing or if the processing is too slow. Attached is code, if you would help me out so I can move onto the next part of my project that would be great. Thanks!

#include "MegunoLink.h" 
#include <Wire.h>
#include <VL53L0X.h>

//#define XSHUT_pin6 not required for address change
#define XSHUT_pin5 9
#define XSHUT_pin4 8
#define XSHUT_pin3 7
#define XSHUT_pin2 6
#define XSHUT_pin1 5


#define ADDRESS1 0b0101001
#define ADDRESS2 0b0101010
#define ADDRESS3 0b0101011



VL53L0X sensor1;
VL53L0X sensor2;
VL53L0X sensor3;
TimePlot MyPlot1;
TimePlot MyPlot2;
TimePlot MyPlot3;
double distance1;
double distance2;
double distance3;

#define HIGH_SPEED
//#define HIGH_ACCURACY


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

  pinMode(XSHUT_pin1, OUTPUT);
  pinMode(XSHUT_pin2, OUTPUT);
  //pinMode(XSHUT_pin3, OUTPUT);
  //pinMode(XSHUT_pin4, OUTPUT);
  //pinMode(XSHUT_pin5, OUTPUT);
   
   //Change address of sensor and power up next one
  /*Sensor6.setAddress(Sensor6_newAddress);
  pinMode(XSHUT_pin5, INPUT);
  delay(10); //For power-up procedure t-boot max 1.2ms "Datasheet: 2.9 Power sequence"
  Sensor5.setAddress(Sensor5_newAddress);
  pinMode(XSHUT_pin4, INPUT);
  delay(10);
  Sensor4.setAddress(Sensor4_newAddress);
  pinMode(XSHUT_pin3, INPUT);
  delay(10);*/
  sensor3.setAddress(ADDRESS3);
  pinMode(XSHUT_pin2, INPUT);
  delay(10);
  sensor2.setAddress(ADDRESS2);
  pinMode(XSHUT_pin1, INPUT);
  delay(10); 
 
  sensor1.init();
  sensor2.init();
  sensor3.init();
  
  sensor1.setTimeout(500);
  sensor2.setTimeout(500);
  sensor3.setTimeout(500);
  

#if defined LONG_RANGE
  // lower the return signal rate limit (default is 0.25 MCPS)
  sensor1.setSignalRateLimit(0.1);
  sensor2.setSignalRateLimit(0.1);
  sensor3.setSignalRateLimit(0.1);
  // increase laser pulse periods (defaults are 14 and 10 PCLKs)
  sensor1.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor2.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor3.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor1.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
  sensor2.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
  sensor3.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
  
#endif 

#if defined HIGH_SPEED
  // reduce timing budget to 20 ms (default is about 33 ms)
  sensor1.setMeasurementTimingBudget(20000);
  sensor2.setMeasurementTimingBudget(20000);
  sensor3.setMeasurementTimingBudget(20000);
#elif defined HIGH_ACCURACY
  // increase timing budget to 200 ms
  sensor1.setMeasurementTimingBudget(200000);
  sensor2.setMeasurementTimingBudget(200000);
  sensor3.setMeasurementTimingBudget(200000);
#endif

MyPlot1.SetTitle("Sensor1");
MyPlot1.SetXlabel("Time");
MyPlot1.SetYlabel("Distance (mm)");
MyPlot1.SetSeriesProperties("DistanceVal1",Plot::Red, Plot:: Solid,2,Plot::Square);

MyPlot2.SetTitle("Sensor2");
MyPlot2.SetXlabel("Time");
MyPlot2.SetYlabel("Distance (mm)");
MyPlot2.SetSeriesProperties("DistanceVal2",Plot::Green, Plot:: Solid,2,Plot::Square);

MyPlot3.SetTitle("Sensor3");
MyPlot3.SetXlabel("Time");
MyPlot3.SetYlabel("Distance (mm)");
MyPlot3.SetSeriesProperties("DistanceVal3",Plot::Blue, Plot:: Solid,2,Plot::Square);
}
void loop()
{
  

  distance1 = sensor1.readRangeSingleMillimeters();
  MyPlot1.SendData("DistanceVal1",distance1);
  //Serial.print(sensor.readRangeSingleMillimeters());
  if (sensor1.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
  Serial.println();
  
 distance2 = sensor2.readRangeSingleMillimeters();
  MyPlot2.SendData("DistanceVal2",distance2);
  //Serial.print(sensor.readRangeSingleMillimeters());
  if (sensor2.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
  Serial.println();
  
  distance3 = sensor3.readRangeSingleMillimeters();
  MyPlot3.SendData("DistanceVal3",distance3);
  //Serial.print(sensor.readRangeSingleMillimeters());
  if (sensor3.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
  Serial.println();
  


}

Here is the output of my serial:

LOT|DATA|DistanceVal3|T|8190.00}

{TIMEPLOT|DATA|DistanceVal1|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal2|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal3|T|8190.00}

{TIMEPLOT|DATA|DistanceVal1|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal2|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal3|T|8190.00}

{TIMEPLOT|DATA|DistanceVal1|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal2|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal3|T|8190.00}

{TIMEPLOT|DATA|DistanceVal1|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal2|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal3|T|8190.00}

{TIMEPLOT|DATA|DistanceVal1|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal2|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal3|T|8190.00}

{TIMEPLOT|DATA|DistanceVal1|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal2|T|65535.00}
 TIMEOUT
{TIMEPLOT|DATA|DistanceVal3|T|8190.00}

update:

It is 100% to do with addressing. So if anyon knows some resources or strategies to deal with assigning different addresses to 3 different sensors who are all factory set to be the same address that would be most excellent.