input: Write a function to create a Linear Regression model that can predict housing prices based on the living area and number of rooms. The function should train the model on the given data and return the predicted price for a house with a specified living area and number of rooms. If the model cannot be trained due to invalid data, return None.
  assert housing_price_predictor(data=[[2000, 3], [1600, 2.5], [2400, 3.5], [1400, 2], [3000, 4]], prices=[75000, 43000, 59000, 32000, 85000], new_house=[2200, 3])==50000
  assert housing_price_predictor(data=[[2000, 3], [1600, 2.5], [2400, 3.5], [1400, 2], [3000, 4]], prices=[75000, 43000, 59000, 32000, 85000], new_house=[1800, 2.5])==45000
  assert housing_price_predictor(data=[[2000, 3], [1600, 2.5], [2400, 3.5], [1400, 2], [3000, 4]], prices=[75000, 43000, 59000, 32000, 85000], new_house=[3000, 4])==85000
  assert housing_price_predictor(data=[], prices=[], new_house=[2000, 3])==None
  assert housing_price_predictor(data=[[2000, 3]], prices=[75000], new_house=[2000, 3])==75000
output: def housing_price_predictor(data, prices, new_house):
      if not data or not prices or len(data) != len(prices):
          return None
      X = [[1, d[0], d[1]] for d in data]
      y = prices
      X_train = np.array(X)
      y_train = np.array(y)
      try:
          model = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train
          new_X = [1, new_house[0], new_house[1]]
          return int(np.dot(new_X, model))
      except np.linalg.LinAlgError:
          return None