// La capacidad de una red: lee la red y responde que hay que cerrar todos los tramos. Cerrarlos
// deja a t sin nada, pero casi nunca es la respuesta correcta. Reemplacen el cálculo.
#include <cstddef>
#include <iostream>
#include <vector>

int main() {
    int n = 0;
    int m = 0;
    int s = 0;
    int t = 0;
    std::cin >> n >> m >> s >> t;

    std::vector<int> from(static_cast<std::size_t>(m));
    std::vector<int> to(static_cast<std::size_t>(m));
    std::vector<long long> capacity(static_cast<std::size_t>(m));
    for (std::size_t k = 0; k < from.size(); k++) std::cin >> from[k] >> to[k] >> capacity[k];

    // Por hacer: calcular cuánto se puede enviar y qué tramos lo limitan.
    long long total = 0;
    for (long long c : capacity) total += c;
    std::cout << total << '\n' << m << '\n';
    for (int k = 1; k <= m; k++) std::cout << k << (k == m ? "" : " ");
    std::cout << '\n';
}
