#include <iostream>
class CircularArray {
private:
int* array;
int size;
int head;
public:
CircularArray(int n) : size(n), head(0) {
array = new int[size];
for (int i = 0; i < size; ++i) {
array[i] = 0;
}
}
~CircularArray() {
delete[] array;
}
void rotate(int k) {
head = (head + k) % size;
}
int& operator[](int index) {
int adjustedIndex = (head + index) % size;
return array[adjustedIndex];
}
};
int main() {
CircularArray circularArray(5);
// Initialize the circular array
for (int i = 0; i < 5; ++i) {
circularArray[i] = i + 1;
}
// Print the initial state
for (int i = 0; i < 5; ++i) {
std::cout << circularArray[i] << " ";
}
std::cout << std::endl;
// Rotate the array by 2 positions to the right
circularArray.rotate(2);
// Print the state after rotation
for (int i = 0; i < 5; ++i) {
std::cout << circularArray[i] << " ";
}
std::cout << std::endl;
return 0;
}