input: Write a python function to construct a neural network in Python to predict the price of Bitcoin for the next 5 days.
  assert isinstance(build_and_predict_btc_price('BTC-USD.csv'), np.ndarray)
  assert build_and_predict_btc_price('BTC-USD.csv').shape == (1, 1)
output: def build_and_predict_btc_price(filename):
      import pandas as pd
      import numpy as np
      from sklearn.preprocessing import MinMaxScaler
      from tensorflow.keras.models import Sequential
      from tensorflow.keras.layers import Dense, LSTM
  
      # Load the dataset
      df = pd.read_csv(filename)
      
      # Ensure the 'Date' column is a datetime object and set it as the index
      df['Date'] = pd.to_datetime(df['Date'])
      df.set_index('Date', inplace=True)
      
      # Use the closing price for prediction
      data = df['Close'].values
      data = data.reshape(-1, 1)
      
      # Normalize the data
      scaler = MinMaxScaler(feature_range=(0, 1))
      scaled_data = scaler.fit_transform(data)
      
      # Prepare the data for LSTM
      def create_dataset(dataset, time_step=1):
          X, Y = [], []
          for i in range(len(dataset) - time_step - 1):
              a = dataset[i:(i + time_step), 0]
              X.append(a)
              Y.append(dataset[i + time_step, 0])
          return np.array(X), np.array(Y)
      
      time_step = 10
      X, Y = create_dataset(scaled_data, time_step)
      
      # Reshape input to be [samples, time steps, features] which is required for LSTM
      X = X.reshape(X.shape[0], X.shape[1], 1)
      
      # Split the data into training and testing sets
      train_size = int(len(X) * 0.8)
      test_size = len(X) - train_size
      X_train, X_test = X[0:train_size], X[train_size:len(X)]
      Y_train, Y_test = Y[0:train_size], Y[train_size:len(Y)]
      
      # Build the LSTM model
      model = Sequential()
      model.add(LSTM(50, return_sequences=True, input_shape=(time_step, 1)))
      model.add(LSTM(50, return_sequences=False))
      model.add(Dense(25))
      model.add(Dense(1))
      
      # Compile the model
      model.compile(optimizer='adam', loss='mean_squared_error')
      
      # Train the model
      model.fit(X_train, Y_train, batch_size=1, epochs=1)
      
      # Predict the next 5 days
      last_10_days = scaled_data[-time_step:]
      last_10_days = last_10_days.reshape((1, time_step, 1))
      
      next_5_days = []
      for _ in range(5):
          pred_price = model.predict(last_10_days)
          next_5_days.append(pred_price[0][0])
          last_10_days = np.append(last_10_days[:, 1:, :], [[pred_price]], axis=1)
      
      next_5_days = np.array(next_5_days).reshape(-1, 1)
      next_5_days = scaler.inverse_transform(next_5_days)
      
      return np.array([next_5_days[-1]])