how to find second smallest element using single loop

#include <iostream>
#include <limits>

int main() {
    int n;
    std::cout << "Enter the number of elements: ";
    std::cin >> n;

    if (n < 2) {
        std::cout << "At least two elements are required.";
        return 1;
    }

    int smallest, secondSmallest;
    int input;

    std::cout << "Enter element 1: ";
    std::cin >> smallest;

    std::cout << "Enter element 2: ";
    std::cin >> secondSmallest;

    if (secondSmallest < smallest) {
        std::swap(smallest, secondSmallest);
    }

    for (int i = 3; i <= n; ++i) {
        std::cout << "Enter element " << i << ": ";
        std::cin >> input;

        if (input < smallest) {
            secondSmallest = smallest;
            smallest = input;
        } else if (input < secondSmallest && input != smallest) {
            secondSmallest = input;
        }
    }

    std::cout << "The second smallest element is: " << secondSmallest;

    return 0;
}