#include <stdio.h>
#include <stdint.h>
uint32_t replace_field(uint32_t reg, uint32_t val, uint8_t pos, uint8_t len)
{
reg&=~(((1<<len)-1)<<pos); //first we should clear the sepcifc bets before we are updating the value,
reg=reg|(val<<pos); //then shifting the value to required position to update into 32bit value which is received from main function.
return reg;
}
int main() {
uint32_t reg, val;
uint8_t pos, len;
scanf("%u %u %hhu %hhu", ®, &val, &pos, &len);
printf("%u", replace_field(reg, val, pos, len));
return 0;
}