pragma solidity ^0.8.18; contract One{ address public first; address public second; address public third; function setaddress(address _address)public { third = _address; } function one(uint _num) public returns(bool) { (bool success,) = third.delegatecall(abi.encodeWithSignature("ceiling(uint256)",_num)); return success; } function getfirstaddress() public view returns(address){ return first; } } contract Two{ uint public first; function ceiling(uint _num)public { first = _num; } } In the above code when i call the one function with some number(520786028573371803640530888255888666801131675076) it is manages to store the address that derived from the number in the address first variable which is in the slot 0. I know how the delegate call works but how the uint manages to store in the address varible.explain how this works under the hood