package com.fishercoder.solutions;

import java.util.ArrayList;
import java.util.List;

public class _2043 {
    public static class Solution1 {
        class Bank {

            List<Long> list;

            public Bank(long[] balance) {
                list = new ArrayList<>();
                for (long b : balance) {
                    list.add(b);
                }
            }

            public boolean transfer(int account1, int account2, long money) {
                if (account1 - 1 >= list.size()) {
                    return false;
                } else if (list.get(account1 - 1) < money) {
                    return false;
                } else if (account2 - 1 >= list.size()) {
                    return false;
                } else {
                    Long original = list.remove(account1 - 1);
                    list.add(account1 - 1, original - money);
                    Long remove = list.remove(account2 - 1);
                    list.add(account2 - 1, remove + money);
                    return true;
                }
            }

            public boolean deposit(int account, long money) {
                if (account - 1 >= list.size()) {
                    return false;
                } else {
                    Long original = list.remove(account - 1);
                    list.add(account - 1, original + money);
                    return true;
                }
            }

            public boolean withdraw(int account, long money) {
                if (account - 1 >= list.size()) {
                    return false;
                } else if (list.get(account - 1) < money) {
                    return false;
                } else {
                    Long original = list.remove(account - 1);
                    list.add(account - 1, original - money);
                    return true;
                }
            }
        }

    }
}