import java.util.HashMap;
import java.util.Map;

// Base class for model versions
interface ModelVersion {
    void load();

    void predict();
}

// Concrete implementation for Model Version 1
class ModelVersion1 implements ModelVersion {
    public void load() {
        System.out.println("Loading Model Version 1");
        // Load model version 1
    }

    public void predict() {
        System.out.println("Predicting using Model Version 1");
        // Use model version 1 for prediction
    }
}

// Concrete implementation for Model Version 2
class ModelVersion2 implements ModelVersion {
    public void load() {
        System.out.println("Loading Model Version 2");
        // Load model version 2
    }

    public void predict() {
        System.out.println("Predicting using Model Version 2");
        // Use model version 2 for prediction
    }
}

// Model version manager
class ModelVersionManager {
    private Map<Integer, ModelVersion> modelVersions;

    public ModelVersionManager() {
        modelVersions = new HashMap<>();
    }

    public void registerModelVersion(int version, ModelVersion model) {
        modelVersions.put(version, model);
    }

    public void loadModelVersion(int version) {
        ModelVersion model = modelVersions.get(version);
        if (model != null) {
            model.load();
        } else {
            System.out.println("Model version " + version + " not found.");
        }
    }

    public void predictUsingModel(int version) {
        ModelVersion model = modelVersions.get(version);
        if (model != null) {
            model.predict();
        } else {
            System.out.println("Model version " + version + " not found.");
        }
    }
}

public class ModelVersioning {
    public static void main(String[] args) {
        // Create model versions
        ModelVersion modelVersion1 = new ModelVersion1();
        ModelVersion modelVersion2 = new ModelVersion2();

        // Create model version manager
        ModelVersionManager modelVersionManager = new ModelVersionManager();

        // Register model versions with the manager
        modelVersionManager.registerModelVersion(1, modelVersion1);
        modelVersionManager.registerModelVersion(2, modelVersion2);

        // Load and predict using specific model versions
        modelVersionManager.loadModelVersion(1);
        modelVersionManager.predictUsingModel(1);

        modelVersionManager.loadModelVersion(2);
        modelVersionManager.predictUsingModel(2);
    }
}
