#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
 
using namespace std;
 
struct Point {
    int x, y;
};
 
int main() {
    // Data contoh titik
    vector<Point> points = {{0, 0}, {2, 3}, {5, 1}, {8, 6}};
    int n = points.size();
 
    // Array untuk menyimpan jarak horizontal terjauh dari titik awal ke setiap titik
    vector<int> dp(n);
    dp[0] = 0; // Jarak ke titik pertama adalah 0
 
    // Iterasi melalui setiap titik
    for (int i = 1; i < n; ++i) {
        dp[i] = 0; // Inisialisasi jarak terjauh ke titik i
 
        // Iterasi melalui semua titik sebelumnya
        for (int j = 0; j < i; ++j) {
            // Hitung jarak horizontal antara titik j dan i
            int horizontal_dist = abs(points[i].x - points[j].x);
 
            // Perbarui nilai dp[i]
            dp[i] = max(dp[i], dp[j] + horizontal_dist);
        }
    }
 
    // Hasil akhir ada di dp[n-1]
    cout << "Jarak horizontal terjauh ke titik terakhir: " << dp[n-1] << endl;
 
    return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFBvaW50IHsKICAgIGludCB4LCB5Owp9OwoKaW50IG1haW4oKSB7CiAgICAvLyBEYXRhIGNvbnRvaCB0aXRpawogICAgdmVjdG9yPFBvaW50PiBwb2ludHMgPSB7ezAsIDB9LCB7MiwgM30sIHs1LCAxfSwgezgsIDZ9fTsKICAgIGludCBuID0gcG9pbnRzLnNpemUoKTsKCiAgICAvLyBBcnJheSB1bnR1ayBtZW55aW1wYW4gamFyYWsgaG9yaXpvbnRhbCB0ZXJqYXVoIGRhcmkgdGl0aWsgYXdhbCBrZSBzZXRpYXAgdGl0aWsKICAgIHZlY3RvcjxpbnQ+IGRwKG4pOwogICAgZHBbMF0gPSAwOyAvLyBKYXJhayBrZSB0aXRpayBwZXJ0YW1hIGFkYWxhaCAwCgogICAgLy8gSXRlcmFzaSBtZWxhbHVpIHNldGlhcCB0aXRpawogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyArK2kpIHsKICAgICAgICBkcFtpXSA9IDA7IC8vIEluaXNpYWxpc2FzaSBqYXJhayB0ZXJqYXVoIGtlIHRpdGlrIGkKCiAgICAgICAgLy8gSXRlcmFzaSBtZWxhbHVpIHNlbXVhIHRpdGlrIHNlYmVsdW1ueWEKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGk7ICsraikgewogICAgICAgICAgICAvLyBIaXR1bmcgamFyYWsgaG9yaXpvbnRhbCBhbnRhcmEgdGl0aWsgaiBkYW4gaQogICAgICAgICAgICBpbnQgaG9yaXpvbnRhbF9kaXN0ID0gYWJzKHBvaW50c1tpXS54IC0gcG9pbnRzW2pdLngpOwoKICAgICAgICAgICAgLy8gUGVyYmFydWkgbmlsYWkgZHBbaV0KICAgICAgICAgICAgZHBbaV0gPSBtYXgoZHBbaV0sIGRwW2pdICsgaG9yaXpvbnRhbF9kaXN0KTsKICAgICAgICB9CiAgICB9CgogICAgLy8gSGFzaWwgYWtoaXIgYWRhIGRpIGRwW24tMV0KICAgIGNvdXQgPDwgIkphcmFrIGhvcml6b250YWwgdGVyamF1aCBrZSB0aXRpayB0ZXJha2hpcjogIiA8PCBkcFtuLTFdIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=